Skip to content

目标跟随演示

本教程将展示如何使用 Agilebot 机器人进行目标跟随任务。

目标跟随演示

概述

目标跟随演示展示了机器人如何使用 RMPflow 运动策略跟随移动的目标。该演示使用了 Isaac Sim 的运动生成框架。

前置条件

运行演示

使用项目提供的演示脚本

bash
cd agilebot_isaac_sim
python agilebot_integration/demos/follow_target.py

演示说明

RMPflow 运动策略

RMPflow(Robot Motion Policy Flow)是一个用于机器人运动规划的框架,它通过组合多个运动策略来生成平滑、安全的轨迹。

目标跟随算法

  1. 目标检测:检测目标物体的位置
  2. 轨迹规划:使用 RMPflow 计算从当前位置到目标位置的轨迹
  3. 运动执行:控制机器人关节跟随规划的轨迹
  4. 避障:在运动过程中避开障碍物

配置参数

运动策略配置

运动策略配置文件位于项目源码目录 agilebot_integration/motion_policy_configs/Agilebot/gbt_c7a/

根据环境配置指南,需要将配置文件复制到 IsaacSim 安装目录:

bash
cp -r agilebot_integration/motion_policy_configs/Agilebot \
  ~/isaacsim/exts/isaacsim.robot_motion.motion_generation/motion_policy_configs/

复制后,完整的配置文件路径为:

~/isaacsim/exts/isaacsim.robot_motion.motion_generation/motion_policy_configs/Agilebot/gbt_c7a/

主要配置参数(参考 RMPflow 官方调参指南):

参数说明默认值
c-space_target_rmp/metric_scalarC 空间目标 RMP 权重1-100
c-space_target_rmp/robust_position_term_thresh鲁棒位置项阈值根据关节数调整
target_rmp/metric_scalar目标 RMP 权重根据任务调整
target_rmp/min_metric_alpha最小度量 alpha0 或非零值
target_rmp/metric_alpha_length_scale度量 alpha 长度尺度100000
target_rmp/proximity_metric_boost_length_scalar邻近度量提升长度标量1
target_rmp/max_metric_scalar最大度量标量较大值
target_rmp/accel_p_gain加速度 P 增益根据任务调整
target_rmp/accel_d_gain加速度 D 增益根据任务调整
target_rmp/accel_norm_eps加速度归一化 epsilon根据任务调整
collision_rmp/metric_scalar碰撞回避 RMP 权重与 target_rmp 相当
damping_rmp/inertia阻尼 RMP 惯量0

调参建议

  1. c-space 目标 RMP:设置 metric_scalar 在 1-100 范围内,这会设置所有 RMP 的全局尺度
  2. 目标 RMP:设置较大的 max_metric_scalar 使其主导,C 空间目标将在目标 RMP 的零空间中运行
  3. 碰撞回避 RMP:设置与 target_rmp/max_metric_scalar 相当的权重
  4. 方向性项:设置 min_metric_alpha 为非零值并调整 metric_alpha_length_scale 以获得良好行为

常见问题

Q: 机器人无法到达目标位置

A: 检查目标位置是否在机器人的工作空间内。如果目标位置超出工作空间,机器人将无法到达。调整 target_tolerance 参数以适应任务需求。

Q: 运动轨迹不平滑

A: 调整 RMPflow 配置参数,特别是:

  • 检查 target_rmp/accel_p_gaintarget_rmp/accel_d_gain 的增益值
  • 确保 metric_scalar 值在合理范围内

Q: 机器人与障碍物碰撞

A: 增加 collision_rmp/metric_scalar 参数值,确保碰撞回避 RMP 有足够的权重来避开障碍物。

Q: 如何从零开始调参

A: 参考官方调参流程:

  1. 关闭所有 RMP(设置 metric_scalar 为 0)
  2. 将所有惯量项设置为 0
  3. 逐一重新启用 RMP:c-space_target_rmp → target_rmp → collision_rmp → axis_target_rmp

下一步