Lead screw driven by a revolute joint in Simscape Multibody: How can I set a slider displacement to be proportional to the revolute joint angle?

6 views (last 30 days)
I am using Simscape Multibody to simulate a rigid body (slider) connected to a lead screw driven by a revolute joint. A prismatic joint constrains the slider to a translational motion.
My goal is to control the position of the slider by controlling the angular position of the revolute joint. In particular, I want the slider to sit at a position proportional to the revolute joint angle when I set the revolute joint to a constant anglular position.
Here is a screenshot of my Simscape Mutlibody simulation. The Simulink model is attached to this message.
  • The base is fixed.
  • The screw rotates relative to the base.
  • The slider is constrained to a translation with respect to the base, and driven by a lead screw joint from the screw.
  • The transparent slider is for visualisation purposes, and stays at the slider's rest position.
I am getting wildly different simulation results when I change the revolute joint angular position.
(1) The revolute joint is driven by a sinusoid.
The slider indeed displaces back and forth, as expected.
(2) The revolute joint is set to 0, the rest position.
The angle is zero and the slider did not move, as expected.
(3) Revolute joint set to a constant value, different that zero. 50 * 2 * pi radians.
The revolute joint is indeed rotated by a constant amount.
The slider however does not move, whereas I would have expected it to sit still but with an offset relative to the rest position.
(4) Revolute joint set to a constant value, different that zero. 49.5 * 2 * pi radians.
Now I move the screw half a turn less, and all hell break lose. The slider sits way outside the range of motion it had with the ± 50 rotations sinusoid!
The same crazy behavior happens when setting the angle of the revolute joint to 0.5 * 2 * pi radians.
Questions
  1. How do I change my Simscape Multibody simulation to set the slider position by controlling the angle of the revolution joint, regardless if the control signal is a constant or a time varying signal?
  2. Why does the slider sit still at the origin when the angle of the revolute joint is set to a constant value multiple of 2 pi?
  3. Why does setting the angle of the angle of the revolute joint to 0.5 * 2 * pi cause the slider to move so much?
Additional question because I do not understand what is happening:
If I remove the prismatic joint and drive the revolute joint with a sinusoidal input, then the slider moves in a translation, but if I instead set the revolute joint to a constant, then the slider does not translate, and instead rotates. What is the reason for the different behavior?
I would expect either the slider rotating along the screw when driven with the sinusoid, or the slider translating along the scew with a displacement proportional to the revolute joint anglular position.

Answers (1)

Yifeng Tang
Yifeng Tang on 8 Jan 2025
Hi @mhaz,
I think it would make more sense to move the revolute joint to be in series with the prismatic joint. See below.
I also added a transfer function to your constant inputs. This is to make the initial condition consistent with what you get in the screw joint. The screw will start at zero and quick be rotated to the desired final position. See attached model.
Hope this make sense to you.
  1 Comment
mhaz
mhaz on 9 Jan 2025
Thank you for your reply.
The mechanism I want to simulate is something like this https://www.thk.com/jp/en/products/lm_guide_actuator/ where the input is the anglular position of the screw, and the ouput is the linear displacement of the slider.
If I am not mistaken, your modification holds the screw fixed relative to the base body and actuates the angular position of the slider relative to the base body, which is not quite what I want to simulate.
The purpose of the constant input is to start the simulation with the slider at a constant offset position and hold it there.
The transfer function output starts the slider at zero and quickly moves it to its goal position, which is different.
The issue of the slider jumping outside the expected range of motion remains when the revolute joint is in series with the prismatic joint.

Sign in to comment.

Products


Release

R2024a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!