Revolute joint with constant angular velocity in Simscape Multibody
67 views (last 30 days)
Show older comments
Simscape multibody constant velocity on revolute joint
Hello,
I am trying to create a flexible multibody model to compare with a benchmark I found in a paper. This benchmark model has a revolute joint that rotates with a constant angular velocity of 150 rad/s. To this end, I created a revolute joint as shown in the figure.
A linear motion is created by multiplying the time by the velocity. This value is converted by the Simulink-PS converter (circled in red) to create the motion input for the revolute joint. In this Simulink-PS converter, it is required to apply second order filtering, since otherwise the simulation crashes.
The graph below shows two situations. On the left, a simulation is run with an initial state target velocity of 150 rad/s. The upper graph shows the output angle (blue) and the desired angle (yellow), whereas the lower graph shows the angular velocity. As can be seen, the initial velocity is correct, but it is not constant. The right graph shows the same model but with both a state target for the velocity and a motion profile. Here the upper graph shows the input angle (yellow) and the output angle (blue) whereas the lower graph shows again the angular velocity. It can be seed that the initial velosity is not correct, but as time passes it becomes constant.
When the Input filtering time constant in the Simulink-PS converter is decreased, the input and output motion will overlap more and more. When the system is rigid, this works fine. However, when flexible bodies are present, the kinematic constraints cannot be maintained when this value is small.
For a proper comparison between my Simscape model and the benchmark model, I require that the output motion is the same as the input motion, meaning that the velocity is constant over time. When I set velocity state targets in combination with an actuation motion, the state targets appear to be ignored.
Therefore, I wish to ask the following question:
- Is it possible to create a revolute joint with a constant angular velocity?
- Is it possible to create a model in which a rigid body rotates for 2π rad and then switches to a flexible body? This would be a work around, since then when the body becomes flexible, the body is already in the correct configuration.
With kind regards,
Vincent Balt
2 Comments
Eeshan Kulkarni
on 25 Mar 2020
To create a revolute joint with a constant angular velocity, You can input angular velocity to an integrator block and feed it's output (i.e angle) to the revolute joint.
Ahmed Alashry
on 24 Nov 2023
Edited: Ahmed Alashry
on 24 Nov 2023
i tried to do that and i have an error said that
signal type is s and destination signal is rad
Answers (1)
Yannick
on 1 Sep 2020
Hi Vincent,
This answer may come a little late for you, but it may help others.
Motion inputs in Simscape Multibody joints must include the position signal as well as two time derivatives (velocity and acceleration). One way to achieve this is to use second order filtering as you discovered. The provided position signal is filtered in order to estimate the corresponding velocity and acceleration signals. The time derivatives start at zero and the estimates improve after some number of time steps. This is what you are seeing in your plots on the right-hand side.
Alternatively, if they are available to you, you can explicitly provide all three signals to the Simulink-PS Converter and no input filtering is required. You'd have to select the option: Input Handling > Filtering and derivatives > Provide signals > Input and first two derivatives. You'd just have to make sure the three signals you provide are consistent with each other (each is the derivative of the previous). In this case, the position signal is very simple, so it is easy to construct the appropriate time derivatives as well. This is the approach I'd recommend you try.
By the way, you are right that the velocity target is ignored when motion inputs are provided. When assembling the mechanism at time 0, Simscape Multibody either uses the state targets (position and velocity) or the motion inputs (position, velocity and acceleration), but not both. If motion inputs are provided, they will supersede state targets. In your case, the velocity input is 0 at time 0 (due to the input filtering option) so that's what you get regardless of the velocity state target.
To briefly answer your second question, it isn't possible to switch between types of bodies, but there shouldn't be any need for that with the proper inputs to the Simulink-PS Converter.
Hope these pointers regarding joint motion inputs in Simscape Multibody help,
Yannick
0 Comments
See Also
Categories
Find more on Multibody Dynamics in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!