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

概述
目标跟随演示展示了机器人如何使用 RMPflow 运动策略跟随移动的目标。该演示使用了 Isaac Sim 的运动生成框架。
前置条件
运行演示
使用项目提供的演示脚本
bash
cd agilebot_isaac_sim
python agilebot_integration/demos/follow_target.py演示说明
RMPflow 运动策略
RMPflow(Robot Motion Policy Flow)是一个用于机器人运动规划的框架,它通过组合多个运动策略来生成平滑、安全的轨迹。
目标跟随算法
- 目标检测:检测目标物体的位置
- 轨迹规划:使用 RMPflow 计算从当前位置到目标位置的轨迹
- 运动执行:控制机器人关节跟随规划的轨迹
- 避障:在运动过程中避开障碍物
配置参数
运动策略配置
运动策略配置文件位于项目源码目录 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_scalar | C 空间目标 RMP 权重 | 1-100 |
c-space_target_rmp/robust_position_term_thresh | 鲁棒位置项阈值 | 根据关节数调整 |
target_rmp/metric_scalar | 目标 RMP 权重 | 根据任务调整 |
target_rmp/min_metric_alpha | 最小度量 alpha | 0 或非零值 |
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 |
调参建议
- c-space 目标 RMP:设置
metric_scalar在 1-100 范围内,这会设置所有 RMP 的全局尺度 - 目标 RMP:设置较大的
max_metric_scalar使其主导,C 空间目标将在目标 RMP 的零空间中运行 - 碰撞回避 RMP:设置与
target_rmp/max_metric_scalar相当的权重 - 方向性项:设置
min_metric_alpha为非零值并调整metric_alpha_length_scale以获得良好行为
常见问题
Q: 机器人无法到达目标位置
A: 检查目标位置是否在机器人的工作空间内。如果目标位置超出工作空间,机器人将无法到达。调整 target_tolerance 参数以适应任务需求。
Q: 运动轨迹不平滑
A: 调整 RMPflow 配置参数,特别是:
- 检查
target_rmp/accel_p_gain和target_rmp/accel_d_gain的增益值 - 确保
metric_scalar值在合理范围内
Q: 机器人与障碍物碰撞
A: 增加 collision_rmp/metric_scalar 参数值,确保碰撞回避 RMP 有足够的权重来避开障碍物。
Q: 如何从零开始调参
A: 参考官方调参流程:
- 关闭所有 RMP(设置
metric_scalar为 0) - 将所有惯量项设置为 0
- 逐一重新启用 RMP:c-space_target_rmp → target_rmp → collision_rmp → axis_target_rmp