Adam_U_demo 版本更新 & 功能说明
基本功能
模式(mode)
机器人支持以下基础模式:
Stop: 阻尼模式,通过按键LT+B触发,初始化机器人状态,机器人除腰部PITCH和ROLL外,其他关节进入阻尼模式。Zero: 回零模式,通过按键A触发,机器人回到零位位置。Func: 功能模式,通过按键X触发,机器人进入功能模式。预定动作: 通过按键RB顺序触发预设动作。连续预定动作: 通过按键RT+RB连续执行多个预定动作,再次同时按下后,执行完当前动作后停止。遥操数据接收: 通过十字按键xx(+)进入遥操数据接收模式。遥操数据退出: 通过十字按键xx(-)退出遥操数据接收模式。数据记录: 通过按键LT+LB记录数据。- 在功能模式下,按下
LT+LB后终端提示retarget log start record,表示开始进行数据记录,再次按下LT+LB后终端提示retarget log stop record表示结束数据记录 - 数据记录文件保存在目录
logs下,文件名为retarget_record.txt - 数据记录包含全部关节的位置信息和手指的位置信息
- 数据顺序如下,共31个数据
- 腰部
ROLL和PITCH和YAW - 头部
YAW和PITCH - 左臂关节
- 左手手指
- 右臂关节
- 右手手指
- 腰部
- 数据文件动作重演方法,将目录
logs下的retarget_record.txt文件复制到install/cpp_demo/share/cpp_demo/resource/motion目录下即可在循环播放动作中切换到此动作
- 在功能模式下,按下
机器人掉电: 通过按键LB+RB机器人上电: 通过按键Y+B
工程结构
以下是项目的配置文件夹结构:
install/: 包含库文件、可执行文件、资源文件、配置文件。logs/: 日志文件夹,包含机器人运行日志文件。run.sh: 运行脚本文件,用于启动机器人软件。run_pndrobotros2.sh: 运行脚本文件,用于启动机器人基于ROS2开发的SDK,运行此脚本仅仅启动机器人SDK,控制机器人运动需要启动开源库中的另一工程,具体操作方法见:PND Adam U Deploy SDK页面。
消息订阅方法
- 打开一个终端,执行命令
sudo ./run.sh - 程序正常启动后
- 按下按键A执行回零操作
- 按下按键X切换为功能模式
- 按下左侧十字键右侧按键进入遥操作等待数据模式
- 另打开一个终端,依次执行如下命令
sudo suexport ROS_LOCALHOST_ONLY=1source /opt/ros/humble/setup.bashros2 topic listros2 topic echo /robot_statessource install/setup.bashros2 topic echo /joint_cmd- 可以通过robot_states话题消息收到数据
用户部署中数据订阅和发送方法
- run.sh中包含了机器人功能程序和机器人控制SDK,内部会通过话题/joint_cmd来发送关节指令,所以用户不可以在此模式下通过话题/joint_cmd来发送指令,会造成冲突,可以在此模式下进行遥操作、录制和播放动作,可以订阅/robot_states得到机器人执行器当前状态
- 话题
/robot_states采用了ROS2的标准数据格式,用户可以通过上面方法收到机器人的关节数据,在遥操作时订阅话题记录数据,数据包含腰、头、左臂、左手、右臂、右手共31个数据,同时也包含时间戳和关节字符串描述 - 话题
/joint_cmd采用了自定义的消息格式,原本为内部使用,不包含时间戳,通过wiki中可以看到q_d、q_dot_d、tau_d维度是25,其中包括固定基6+腰3+头2+左臂7+右臂7,同时还有hands_d维度是12,包括左手6+右手6,具体可以在wiki中后面表格中找到https://wiki.pndbotics.com/half_robot/pnd_adam_u_deploy_sdk/ -
话题/robot_state同样采用了自定义的消息格式,也是原本为内部使用用户可以通过发送该话题来接收机器人的关节数据,消息格式在wiki中可以看到
-
基于以上对
/joint_cmd和/robot_state话题,用户基于训练好的机器人模型进行部署时,建议方法如下: - 启动机器人执行器SDK
- 在当前终端执行命令
sudo ./run_run_pndrobotros2,终端输出TRUE且听到腰部ROLL和PITCH关节抱闸声松开,表示执行器SDK启动成功 - 打开一个新终端页面,执行如下命令
sudo suexport ROS_LOCALHOST_ONLY=1source /opt/ros/humble/setup.bashsource install/setup.bashros2 topic list- 此时可以看到相关话题打印
- 通过订阅
话题/robot_state查看机器人执行器当前状态 - 通过发布
话题/joint_cmd设置机器人目标状态(通过/joint_cmd发布目标状态时,q_dot_d、tau_d都设置为0,只设置目标位置即可) - 用户通过
话题/joint_cmd控制机器人时,可以通过多项式规划、低通滤波、加权移动平均等方法确保数值不会突变 - 用户可以通过基于当前位置使用多项式规划进行回零操作,零位的
q_d、q_dot_d、tau_d都为0