自由浮动基础机器人的空间速度雅可比行列式的基础分量全为零

Base component of Spatial Velocity Jacobian for a Free-Floating Base Robot is all Zeros

我试图找到具有自由浮动底座的机器人的末端执行器空间速度雅可比行列式。由于自由浮动基数,雅可比应该包含一个基数组件和一个操纵符注释(参见 https://spart.readthedocs.io/en/latest/Tutorial_Kinematics.html#jacobians

V_ee = 末端执行器空间速度
J_b = 基本雅可比分量
J_m = 操纵器雅可比分量
v = 广义速度

V_ee = [J_b, J_m] v

直到现在,我一直在使用 SPART 工具箱在 Matlab (https://github.com/NPS-SRL/SPART) 中执行此操作,现在我正在转向 Drake。我尝试在 Mu​​ltiBodyPlant 中使用 CalcJacobianSpatialVelocity,与 SPART 相比,操纵器 Jacobian 是正确的。然而,雅可比行列式的基分量全为零。这与我的预期和 SPART 的自由浮动基地不同,基地速度有助于末端执行器空间速度。

可在此处找到此问题的示例再现:https://colab.research.google.com/github/vyas-shubham/DrakeTests/blob/main/freeFloating/computeJacobian.ipynb

我想我要么在使用 Drake 时犯了这些错误之一:

您的代码采用了追赶者相对于目标的雅可比行列式;它们之间没有浮动基数(因此浮动基数的 jacobian wrt 确实应该为零)。我想,也许你想 frame_A=world_frame?

postCaptureTargetJacobian = postContactPlant.CalcJacobianSpatialVelocity(context=postCaptureContext,
                                             with_respect_to=JacobianWrtVariable.kV,
                                             frame_B=target_frame,
                                             p_BP=np.zeros(3),
                                             frame_A=world_frame,
                                             frame_E=world_frame)

PS - 我将此单元格添加到您的笔记本中以快速检查您的运动学树

from IPython.display import display, SVG
import pydot
display(SVG(pydot.graph_from_dot_data(postContactPlant.GetTopologyGraphvizString())[0].create_svg()))

PPS - 感谢您整理笔记本中的示例。这样方便我看一下。