有没有一种简单的方法可以找出两个框架中的哪一个更接近多体工厂的根?

Is there an easy way to find out which of two frames is closer to the root in a Multibody plant?

我正在努力从碰撞中恢复。我有碰撞中物体的名称和与之关联的帧,现在我想移动靠近末端执行器的 body/frame 以摆脱碰撞,但我找不到直接的方法来获得此信息来自MultiBodyPlant。我可以构建图形的另一种表示形式并通过它进行搜索,但我想知道是否有可能从 drake 中获取它?

问题是有时机器人最终会与自身或环境发生碰撞,我想制定一个计划来恢复它。 从 QueryObject,我能够得到一个 vector<SignedDistancePair>,它为我提供了对象实例碰撞的几何 ID,以及指向碰撞深度最快增加方向的单位向量 然后我使用 SceneGraphInspector 获取相应的帧 ID,然后使用帧 ID 获取碰撞中的物体 现在我假设只有两个物体在碰撞 现在我有两个物体发生碰撞,我想找到更靠近末端执行器的那个,因此更容易摆脱碰撞

哇。我认为你是对的,我们没有让这件事变得容易(但我们应该这样做)。

目前,我认为您可以调用 MultibodyPlant::GetJointIndices(),然后通过 MultibodyPlant::get_joint() 循环关节以找到关节 Joint::child_body() == collision_body,然后使用 Joint::parent_body()。如果避免(小?)线性搜索变得重要,我们可以提出一个问题?