跳到主要内容

机器人手臂示教案例

描述

  • 在0-torque模式下,可手动拖摆动机器人手臂
  • 录制摆动时的手臂关节数据
  • 提供重播录制动作的功能
  • 支持两种录制方式:rosbag话题数据录制和关键帧数据录制
  • 录制rosbag能和预设角度更好重合,但会把全部数据录入,可能会包含某个不需要的动作
  • 录制关键帧

程序逻辑

1. 启动流程

  1. 手臂零点标定:如果机械手臂是多圈的且之前已经标定,可忽略该步骤;否则摆正手臂后执行标定命令
  2. 启动机器人:根据机器人类型选择相应的启动命令
  3. 电机使能:按'o'键使能电机

2. 录制模式

  • rosbag录制模式:录制完整的话题数据流
  • 关键帧录制模式:通过按键's'记录关键帧动作

3. 播放模式

  • rosbag播放模式:播放完整的话题数据流
  • 关键帧播放模式:播放关键帧数据,可控制执行速度

编译

cd <kuavo-ros-opensource>
sudo su
catkin build kuavo_sdk teach_pendant

执行

1. 启动机器人程序

首先需要进行手臂零点标定,如果您的机械手臂是多圈的且您之前已经标定,请忽略该步骤,否则请摆正手臂后,执行以下命令进行标定:

source devel/setup.bash 
rosrun hardware_node setZero.sh

然后启动机器人:

source devel/setup.bash
# 正常具有全身的机器人
roslaunch humanoid_controllers load_kuavo_real.launch teach_pendant:=1

# 只有上半身的机器人(轮臂机器人)
roslaunch humanoid_controllers load_kuavo_real_half_up_body.launch teach_pendant:=1

启动之后需要按 o 键使能电机。

2. 录制数据包

2.1 录制rosbag话题数据

请先确保在0-torque模式下启动机器人,然后执行以下命令录制话题数据:

source devel/setup.bash
roslaunch teach_pendant launch_teach_pendant_record_rosbag.launch save_bag:=/path/to/save/bagname.bag

其中 /path/to/save/bagname.bag 为保存的rosbag文件完整路径名。

2.2 录制关键帧数据

通过按下键盘's'记录一帧关键帧动作:

source devel/setup.bash
roslaunch teach_pendant launch_teach_pendant_record_file.launch save_file:=/path/to/save/filename

其中 /path/to/save/filename 为保存的记录关键帧文件完整路径名。

以下是记录关键帧时终端输出的信息:

Recording started.

Key commands:
s - Save the current joint state to file
Ctrl+C - Exit the program

此时按下's'会记录一帧数据。

记录了两个关键帧的文件实例如下(单位是角度):

frame_1: [6.688944668069868, 0.26222175954934457, 0.8742850281282628, 0.043699139520925044, 0.1748552065106258, -0.17486768318044163, 0.04366378011757604, 8.587659186481185, -0.7212213275411588, 1.1147072424638924, -0.6557031046764389, 0.5901067615630409, 0.939812979855269, -0.6774928350594672]
frame_2: [6.674225439283481, 0.2622862835336425, 0.8742997290724711, 0.04366009126140115, 0.1748897410867445, -0.1748426016729588, 0.04367398806815109, -12.56390743084296, -51.71382905849491, -0.3496471881561264, -0.9398426465709862, 32.632482053002796, 6.797494131713388, -12.589631500169236]

3. 播放录制的动作

注意:在播放动作前,请先关闭之前的程序,并确保机器人已经站立在正常状态下,再进行动作播放。

请先确保机器人在正常的分支下启动(能全身正常站立),然后执行以下命令播放之前录制的动作:

3.1 播放记录的rosbag文件

source devel/setup.bash
roslaunch teach_pendant launch_teach_pendant_play_rosbag.launch bag_file:=/path/to/bag

/path/to/bag 即之前录制的话题数据bag文件。

3.2 播放记录的关键帧文件

source devel/setup.bash
roslaunch teach_pendant launch_teach_pendant_play_file.launch file:=/path/to/file interval_sec:=1
  • /path/to/file 即之前录制的关键帧数据文件
  • interval_sec 为两个关键帧之间的执行时间间隔,该参数可以控制动作执行速度,单位为秒,最小值为0.5秒

参数说明

  • teach_pendant:启动参数,设置为1启用示教模式
  • save_bag:rosbag录制模式下的保存路径参数
  • save_file:关键帧录制模式下的保存路径参数
  • bag_file:rosbag播放模式下的文件路径参数
  • file:关键帧播放模式下的文件路径参数
  • interval_sec:关键帧播放模式下的时间间隔参数(单位:秒,最小值:0.5)

使用注意事项

  1. 零点标定:首次使用或更换机械手臂后需要进行零点标定
  2. 电机使能:启动后必须按'o'键使能电机才能进行示教操作
  3. 录制模式选择
    • rosbag模式适合录制连续的动作轨迹
    • 关键帧模式适合录制离散的关键姿态
  4. 播放环境:播放动作时需要在正常模式下启动机器人,确保机器人能够正常站立
  5. 时间间隔控制:关键帧播放时可通过interval_sec参数控制动作执行速度

运行效果

  • 示教录制:在0-torque模式下手动拖动机器人手臂,系统自动记录关节数据
  • 动作重放:机器人按照录制的轨迹精确重现示教动作