SpatialInertia object 可以从 6x6 矩阵构造吗?
Can a SpatialInertia object be constructed from a 6x6 matrix?
Drake 中的 SpatialInertia object 有一个名为 CopyToFullMatrix6() 的方法,它输出 SpatialInertia object 的 6x6 表示。有相反的功能吗? IE。我有一个 6x6 矩阵,我想将其制作成 SpatialInertia object。 (我在 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.
对过程或转换的任何想法都表示赞赏。谢谢!
SpatialInertia 只能有标量质量(它实际上是这样表示的,而不是 6x6 矩阵)。也就是说,class 本质上是刚体的质量属性,不能用于更一般的事物。多体系统确实有一个更通用的 class,ArticulatedBodyInertia,它表示由于关节连接而在不同方向上看起来不同的质量。我不清楚它如何用于流体动力学,但至少它可以代表不同的质量。
Drake 中的 SpatialInertia object 有一个名为 CopyToFullMatrix6() 的方法,它输出 SpatialInertia object 的 6x6 表示。有相反的功能吗? IE。我有一个 6x6 矩阵,我想将其制作成 SpatialInertia object。 (我在 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.
对过程或转换的任何想法都表示赞赏。谢谢!
SpatialInertia 只能有标量质量(它实际上是这样表示的,而不是 6x6 矩阵)。也就是说,class 本质上是刚体的质量属性,不能用于更一般的事物。多体系统确实有一个更通用的 class,ArticulatedBodyInertia,它表示由于关节连接而在不同方向上看起来不同的质量。我不清楚它如何用于流体动力学,但至少它可以代表不同的质量。