将 1D Torque 应用到 3D Revolute Joint 无反作用

问题描述

模型就这么简单:我想对旋转接头的旋转法兰施加扭矩。
但是,扭矩反作用力不应作用于旋转接头的支撑法兰。
扭矩反作用力确实在其他地方得到平衡,而不是在旋转关节本身中得到平衡。
一个真实的例子是车轮:扭矩由动力总成提供并通过轴传递到车轮,因此扭矩反作用不会在轮毂上感知到,而是在动力总成支架上感知到。

enter image description here

所以,以上似乎都不正确:

  • 蓝色:Revolute frame_a 出现了不应该有的反应。支撑(白色圆圈)似乎总是平衡施加在法兰上的扭矩(灰色圆圈)),但在这种情况下没有意义;
  • 在 RED 中:Revolute frame_a 上没有反应,但 1D 线中没有速度,这不正常。

那么,如何在不被迫直接在关节上感应平衡扭矩的情况下向旋转关节施加扭矩?

Here the code

解决方法

我想出了这个需要修改 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,所以等待一些官方答复可能是值得的。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...