Skip to content

使用离线轨迹文件控制机器人运动

接收符合捷勃特机器人规范的离线轨迹文件,通过机器人接口发送给机器人,机器人将按照轨迹文件中的指令进行运动。实现更加细腻的轨迹控制,包括位置、速度、加速度、加加速度等参数,以及数字输出端口控制。用户可自行选择轨迹规划的方式,比如使用 MoveIt2 或者其他的规划器,将轨迹保存为 CSV 文件,然后通过本接口发送给机器人。

注意:

1. 本功能需要将机器人设置为 AUTO 模式,请确保机器人处于该模式,否则无法执行。可通过手柄上的钥匙开关旋转到 AUTO 位置进行设置。

2. 请确保机器人软件版本 >=7.6.7.0,否则无法使用本功能。

准备离线轨迹文件

离线轨迹文件为 CSV 格式,表头如下:

csv
ts,pts_J1,pts_J2,pts_J3,pts_J4,pts_J5,pts_J6,vel_J1,vel_J2,vel_J3,vel_J4,vel_J5,vel_J6,acc_J1,acc_J2,acc_J3,acc_J4,acc_J5,acc_J6,jerk_J1,jerk_J2,jerk_J3,jerk_J4,jerk_J5,jerk_J6,do_port,do_state

示例文件:sample.csv

csv
ts,pts_J1,pts_J2,pts_J3,pts_J4,pts_J5,pts_J6,vel_J1,vel_J2,vel_J3,vel_J4,vel_J5,vel_J6,acc_J1,acc_J2,acc_J3,acc_J4,acc_J5,acc_J6,jerk_J1,jerk_J2,jerk_J3,jerk_J4,jerk_J5,jerk_J6,do_port,do_state
0,0.0000873,0.00020944,-0.350217768,-0.001047198,0.348018653,0,0,0,0,0,0,0,2.843203747,3.305122443,-0.822163233,12.12931686,-17.22206528,-16.64150606,0,0,0,0,0,0,-1,0
0.001000026,0.0000887,0.000211091,-0.350218178,-0.001041137,0.348010048,-0.00000831,0.00283975,0.003301588,-0.000821221,0.012115944,-0.017202583,-0.016622901,2.836146722,3.297879454,-0.820235299,12.10193265,-17.18219516,-16.60342136,-7.057025559,-7.24298847,1.927934515,-27.3842142,39.87011938,38.08470461,-1,0
0.002000053,0.0000929,0.00021604,-0.35021941,-0.001022974,0.34798426,-0.0000332,0.005672443,0.006595933,-0.001640514,0.024204502,-0.034365295,-0.033207717,2.829089696,3.290636466,-0.818307364,12.07454844,-17.14232504,-16.56533665,-7.057025559,-7.24298847,1.927934515,-27.3842142,39.87011938,38.08470461,-1,0
0.003000079,0.00010003,0.000224281,-0.350221459,-0.000992736,0.347941329,-0.0000747,0.008498078,0.009883034,-0.002457879,0.036265676,-0.051488136,-0.049754447,2.822032671,3.283393477,-0.816379429,12.04716422,-17.10245492,-16.52725195,-7.057025559,-7.24298847,1.927934515,-27.3842142,39.87011938,38.08470461,-1,0

轨迹文件格式说明

1. ts (时间戳)

  • 含义:表示当前轨迹点的时间信息,通常以秒(s)为单位。
  • 作用:用于同步机械臂的运动时间,确保各关节在指定时间点达到目标位置、速度和加速度。

2. pts_J1pts_J6 (关节位置)

  • 含义
    • pts_J1pts_J6 分别表示机械臂的 6 个关节的位置(Joint Position)
    • 角度(单位:弧度,rad)
  • 作用
    • 定义机械臂末端执行器的空间位置和姿态(通过正运动学计算)。
    • 是轨迹规划的核心数据,描述机械臂从起点到终点的路径。

3. vel_J1vel_J6 (关节速度)

  • 含义
    • vel_J1vel_J6 分别表示机械臂 6 个关节的速度(Joint Velocity)
    • 单位是 弧度 / 秒(rad/s)
  • 作用
    • 控制机械臂各关节的运动速度,确保末端执行器沿规划路径平稳移动。
    • 避免因速度突变导致的机械冲击或振动。

4. acc_J1acc_J6 (关节加速度)

  • 含义
    • acc_J1acc_J6 分别表示机械臂 6 个关节的加速度(Joint Acceleration)
    • 单位是 弧度 / 秒 ²(rad/s²)
  • 作用
    • 描述关节速度的变化率,影响机械臂的动态性能。
    • 过高的加速度可能导致机械臂超载或产生不必要的振动。

5. jerk_J1jerk_J6 (关节加加速度)

  • 含义
    • jerk_J1jerk_J6 分别表示机械臂 6 个关节的加加速度(Joint Jerk)
    • 单位通常是 弧度 / 秒 ³(rad/s³)
  • 作用
    • 描述加速度的变化率,直接影响机械臂运动的平滑性。

6. do_port (数字输出端口)

  • 含义
    • 表示机械臂的 数字输出端口(Digital Output Port) 编号。
    • 通常用于控制外部设备(如夹爪、吸盘、传感器等)。
  • 作用
    • 在特定时间点触发外部设备的开关状态(例如夹爪的抓取或释放)。

7. do_state (数字输出状态)

  • 含义
    • 表示数字输出端口( do_port )的 状态(State),通常为布尔值(0 或 1)。
    • 例如:
      • 0 表示关闭(如夹爪松开)。
      • 1 表示开启(如夹爪闭合)。
  • 作用
    • 协调机械臂运动与外部设备的联动(例如在机械臂到达目标位置后触发夹爪抓取)。

使用说明

设置机器人 IP

gbt_driver/config/robot_config.yaml 中设置 robot_ip_address 为机器人 IP 地址

启动服务

bash
source install/setup.bash
ros2 launch gbt_driver gbt_offline_trajectory.launch.py robot_type:=<robot_type>

接口使用示例

bash
ros2 action send_goal gbt_driver/trajectory gbt_interface/action/OfflineTrajectory "{trajectory_path: 'your_trajectory_file.csv'}"