有没有办法检测两个 bodies/frames 是否在 Drake 中固定?
Is there a way to detect if two bodies/frames are fixed in Drake?
有谁知道在 Pydrake 中确定两个物体(或框架)是否相对于彼此固定的简单方法?谢谢!
MultibodyPlant 上有 GetBodiesWeldedTo()
方法。
Python 文档是 here。给定一些参考物体,它将 return 一个通过一个或多个焊缝连接到它的所有物体的列表。
如果您出于碰撞过滤目的查看焊缝,请注意 Drake 版本 1.2.0 及更高版本 will ignore collisions within all welded groups of bodies by default。
沿着 Rico 的 post,这就是我们在使用 GetBodiesWeldedTo
的 Anzu(TRI 代码库)中使用的东西 - 没什么疯狂的,而且 Python 看起来差不多。
bool AreFramesWelded(
const MultibodyPlant<double>& plant,
const Frame<double>& A, const Frame<double>& B) {
if (&A.body() == &B.body())
return true;
for (const auto* body : plant.GetBodiesWeldedTo(A.body())) {
if (body == &B.body())
return true;
}
return false;
}
有谁知道在 Pydrake 中确定两个物体(或框架)是否相对于彼此固定的简单方法?谢谢!
MultibodyPlant 上有 GetBodiesWeldedTo()
方法。
Python 文档是 here。给定一些参考物体,它将 return 一个通过一个或多个焊缝连接到它的所有物体的列表。
如果您出于碰撞过滤目的查看焊缝,请注意 Drake 版本 1.2.0 及更高版本 will ignore collisions within all welded groups of bodies by default。
沿着 Rico 的 post,这就是我们在使用 GetBodiesWeldedTo
的 Anzu(TRI 代码库)中使用的东西 - 没什么疯狂的,而且 Python 看起来差不多。
bool AreFramesWelded(
const MultibodyPlant<double>& plant,
const Frame<double>& A, const Frame<double>& B) {
if (&A.body() == &B.body())
return true;
for (const auto* body : plant.GetBodiesWeldedTo(A.body())) {
if (body == &B.body())
return true;
}
return false;
}