问题描述
模型就这么简单:我想对旋转接头的旋转法兰施加扭矩。
但是,扭矩反作用力不应作用于旋转接头的支撑法兰。
扭矩反作用力确实在其他地方得到平衡,而不是在旋转关节本身中得到平衡。
一个真实的例子是车轮:扭矩由动力总成提供并通过轴传递到车轮,因此扭矩反作用不会在轮毂上感知到,而是在动力总成支架上感知到。
所以,以上似乎都不正确:
- 蓝色:Revolute frame_a 出现了不应该有的反应。支撑(白色圆圈)似乎总是平衡施加在法兰上的扭矩(灰色圆圈)),但在这种情况下没有意义;
- 在 RED 中:Revolute frame_a 上没有反应,但 1D 线中没有速度,这不正常。
那么,如何在不被迫直接在关节上感应平衡扭矩的情况下向旋转关节施加扭矩?
解决方法
我想出了这个需要修改 Revolute 关节的解决方案。
This is a minimal library with the modified Revolute Joint and a minimal example
基本上我只要求 frame_a 和 frame_b 上的扭矩仅沿与旋转轴正交的两个方向相等(在它们沿任何方向相等之前)。
并且由辅助法兰提供的称为“tau”的扭矩仅沿旋转轴方向施加到 frame_b,而对于沿该方向的 frame_a,施加的扭矩为零。
这对我来说更有意义,但如果有人证明我错了,我会很高兴。
正如@tbeu 刚刚看到的,我也sent an issue to the Modelica Standard Library GitHub,所以等待一些官方答复可能是值得的。