32.Isaac教程--操纵运动规划

操纵运动规划

在这里插入图片描述
ISAAC教程合集地址: https://blog.csdn.net/kunhe0512/category_12163211.html

Isaac SDK 为机械臂的运动规划提供了以下组件:

  • EndEffectorGlobalPlanner:使用逆运动学将末端执行器的笛卡尔目标转换为关节角度目标。 此小码可以接收笛卡尔目标(3d 姿势)作为复合消息,或从姿势树中读取。

  • MultiJointPlanner:生成轨迹以将关节列表从起始状态移动到目标状态。 该组件包含消息的通用解析代码,并且需要一个额外的组件来实现 MultiJointPlannerInterface。

  • MultiJointLqrPlanner:使用 LQR 实现 MultiJointPlannerInterface。 LQR 求解器将每个关节独立对待,并自动调整时间以找到不超过最小和最大速度和加速度约束的有效轨迹。 它还确保轨迹中的最后一个状态是接收到的目标。

    该组件仅在目标更改时输出新计划。 使用 speed_maxspeed_minacceleration_maxacceleration_min 配置参数确保计划对机器人可行。

  • MultiJointRmpPlanner:使用 RMPFlow 实现 MultiJointPlannerInterface。 它通过在多个时间步长上整合 RMPFlow 策略的输出来输出短轨迹。 因为 RMPFlow 充当本地反应控制器,所以它期望目标状态不会离起始位置太远。 有关 RMPFlow 工作原理的更多信息,请参阅下面的论文。

  • MultiJointController:对从规划器接收到的轨迹进行插值以确定要发送的当前命令。 此小代码可以根据 control_mode 配置输出关节位置或速度命令。 插值基于轨迹中的时间戳和当前滴答时间——具有小的前瞻性,可以使用 command_delay 配置参数进行配置,以考虑控制循环中的延迟。

这些小码需要一个 kinematic_tree 配置参数,该参数必须引用一个 kinematic-tree 文件。 小代码使用运动树配置来检索关节的数量及其名称,以解析和序列化 CompositeProto 消息。 有关创建运动学树文件的更多信息,请参阅操纵运动学文档。

操纵子图

Isaac SDK 提供了一个集成了 MultiJointPlanner、MultiJointController 和 KinematicTree 组件的子图。 您可以在 packages/planner/apps/multi_joint_lqr_control.subgraph.json(使用 MultiJointLqrPlanner)或 packages/planner/apps/multi_joint_rmp_control.subgraph.json(使用 MultiJointRmpPlanner)找到这个子图。 子图提供以下接口边:

  • state (input): “subgraph/interface/joint_state”

  • target (input): “subgraph/interface/joint_target”

  • command (output): “subgraph/interface/joint_command”

消息

与操作相关的组件使用 CompositeProto 消息进行通信。 具有 rank-1 张量的 CompositeProto 用于单个状态或命令。 以下示例显示了两个关节的状态:

CompositeProto: {
  "schema": [
    {"entity": "shoulder", "element_type": Float64, "measure": Position},
    {"entity": "shoulder", "element_type": Float64, "measure": Speed},
    {"entity": "elbow", "element_type": Float64, "measure": Position},
    {"entity": "elbow", "element_type": Float64, "measure": Speed}
  ],
  "schema_hash": "...",
  "values": {
    "element_type": Float64,
    "sizes": [19],
    "dataBufferIndex": 0
  }
}
buffers: [[0.7, 0.3, -0.4, 0.1]]

具有 2 阶张量的 CompositeProto 表示轨迹。 张量的第一个维度是时间步数。 每个时间步长的时间戳都是架构的一部分。 以下示例显示了两个关节在 t=0 和 t=0.1 时具有两个时间步长的轨迹:

CompositeProto: {
  "schema": [
    {"entity": "timestamp", "element_type": Float64, "measure": Time},
    {"entity": "joint1", "element_type": Float64, "measure": Position},
    {"entity": "joint2", "element_type": Float64, "measure": Position},
    {"entity": "joint1", "element_type": Float64, "measure": Speed},
    {"entity": "joint2", "element_type": Float64, "measure": Speed}
  ],
  "schema_hash": "...",
  "values": {
    "element_type": Float64,
    "sizes": [10 , 4],
    "dataBufferIndex": 0
  }
}
buffers: [[[0, 0.3, 0.7, -0.4, 0.1], [0.1, 0.32, 0.72, -0.3, 0.15]]]

更多精彩内容:
https://www.nvidia.cn/gtc-global/?ncid=ref-dev-876561

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扫地的小何尚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值