如何解决可以从 6x6 矩阵构造 SpatialInertia 对象吗?
Drake 中的 SpatialInertia 对象有一个名为 CopyToFullMatrix6() 的方法,该方法输出 SpatialInertia 对象的 6x6 表示。是否有相反的功能? IE。我有一个 6x6 矩阵,我想将其制作成 SpatialInertia 对象。 (我在 Ubuntu 18.04 中本地使用 Pydrake。)
上下文是:我正在研究一些流体动力学模型。由于添加质量的模型,我的空间惯性矩阵的“质量”子矩阵通常在对角线上具有三个相同的质量值,如下所示:
---------
| m 0 0 |
| 0 m 0 |
| 0 0 m |
---------
实际上在不同的方向上有不同的“质量”,就像这样:
------------
| m1 0 0 |
| 0 m2 0 |
| 0 0 m3 |
------------
这样做的后果是通常的构造函数(MakeFromCentralInertia() 或只是 SpatialInertia())将无法工作,因为它们将一个质量值作为输入。
我现在的过程是查询物体的空间惯性,获得 6x6 表示,并将添加的质量空间惯性矩阵作为 numpy 数组添加到其中。现在我需要一种方法将矩阵再次转换为 SpatialInertia,以便我可以将其应用回主体。
对过程或转换的任何想法表示赞赏。谢谢!
解决方法
SpatialInertia 只能有一个标量质量(它实际上是这样表示的,而不是一个 6x6 矩阵)。也就是说,该类本质上是刚体的质量属性,不能用于更一般的东西。多体系统确实有一个更通用的类,ArticulatedBodyInertia,它确实表示由于关节铰接而在不同方向上出现不同的质量。我不清楚如何将其用于流体动力学,但至少它可以代表不同的质量。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。