gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 03:31:56 27 4
gpt4 key购买 nike

我正在尝试为具有自由 float 底座的机器人计算末端执行器空间速度雅可比行列式。由于自由 float 基数,雅可比应该包含一个基数组件和一个操纵器注释(参见 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。我尝试在 MultiBodyPlant 中使用 CalcJacobianSpatialVelocity,与 SPART 相比,操纵器 Jacobian 是正确的。然而,雅可比行列式的基分量全为零。这与我的预期和 SPART 的自由 float 底座不同,底座速度对末端执行器空间速度有贡献。

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

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

  • 使用 CalcJacobianSpatialVelocity 错误。这不太可能,因为操纵器 jacobian 是正确的并且基础框架也是正确的(URDF 中只有 1 个框架)。
  • 为自由 float 基数计算雅可比矩阵时使用了错误的 URDF。也许我需要在 URDF 中以不同方式指定 Drake 的 float 基数以将其包含在雅可比计算中?

最佳答案

您的代码采用了追赶者相对于目标的雅可比行列式;它们之间没有 float 基数(因此 float 基数的 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 - 感谢您整理笔记本中的示例。这让我很容易看一眼。

关于drake - 自由 float 基础机器人的空间速度雅可比行列式的基础分量全为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70555272/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com