![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1431633/image.png)
Simulink simscape multibody: Actuating a joint with changing mode
16 次查看(过去 30 天)
显示 更早的评论
I am using the simulink library simscape multibody and I am trying to send actuation commands to a joint that its mode is provided by input.
At the start of the model run the joint mode is disengaged and later on it is changed to engaged, this results with an error, because a disengaged joint cannot be actuated.
How can I actuate the joint from the moment it becomes engaged and not beforehand?
In addition, how can I deal with errors resulting from a non-zero velocity of the blocks connected to the joint at the moment of the joint being engaged (which is a required state of the system) while I am trying to command actuations to the joint?
0 个评论
回答(1 个)
Nathan Hardenberg
2023-7-11
Here are my experiences using joint modes:
Disengaging
Disengaging after a certain amount of time works the best. If your joint is actuated then disengaging/being disengaged does not work, like you describe. I use a quite good workaround where I place a "Weld Joint" before the actuated Joint and disengage that. In practice it is the same result.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1431633/image.png)
Engaging
When starting out as disengaged, the placement of the follower part is not really determent, since the joint is disengaged. When testing the "floating"-body was placed with the R-coordinate system at the world-origin. The moment you are trying to engage the base and the follower frame should have the same orientation and position (and velocity?). Otherwise the following error message gets displayed:
Error:An error occurred while running the simulation and the simulation was terminated
Caused by:
['modelName/Solver Configuration']: The position components of the kinematic constraints ...
of the mechanism cannot be satisfied when attempting to transition joints from disengaged ...
to normal mode. This is more likely to occur for large rotation errors compared to large ...
translation errors. Consider reducing the error in those joints before attempting the ...
transition or consider increasing the joint mode transition nonlinear iterations parameter ...
in the associated Mechanism Configuration block.
By testing with an ideal example along one axis, I found out that an angle error of about 10° is working fine and I found no upper limit on translational displacement. This changes when an error occurs on multiple axis, but I did not investigate further. Less error should result in a higher chance that it works though.
I attached an example for engaging and then starting to rotate, which is very simple. But to be honest I did not get it to work with a more complicated setup. Still, I recommend trying.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Assembly 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!