Drake中的SpatialInertia对象有一个名为CopyToFullMatrix6()的方法,该方法输出SpatialInertia对象的6x6表示形式。有没有一个函数可以做相反的事情?也就是说,我有一个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())将不起作用,因为它们接受一个质量值作为输入。
我现在的过程是查询body的SpatialInertia,获得6x6表示,并将添加的质量空间惯性矩阵作为numpy数组添加到其中。现在,我需要一种方法将该矩阵再次转换为SpatialInertia,这样我就可以将其应用回body。
任何关于过程或转换的想法都是值得赞赏的。谢谢!
发布于 2021-07-06 08:37:56
SpatialInertia只能有一个标量质量(它实际上是以这种方式表示的,而不是一个6x6矩阵)。也就是说,该类本质上是刚体的质量属性,不能用于更一般的东西。多体系统确实有一个更通用的类,ArticulatedBodyInertia,它表示由于关节连接而在不同方向上出现不同的质量。我不清楚它如何用于流体动力学,但至少它可以表示不同的质量。
https://stackoverflow.com/questions/68262453
复制相似问题