Skip to content

ROS2调用API接口功能包说明V1.0.0 ​

为了方便用户通过ROS2控制机械臂,睿尔曼提供了基于API的ROS2功能包,有关机械臂的控制细节想要了解的话也可以参考API的相关文档和说明,在实际使用机械臂时,用户可通过以太网口与机械臂建立通信,并控制机械臂。

报错说明 ​

控制器错误类型 ​

序号错误代码(16进制)错误内容
10x0000系统正常
20x1001关节通信异常
30x1002目标角度超过限位
40x1003该处不可达,为奇异点
50x1004实时内核通信错误
60x1005关节通信总线错误
70x1006规划层内核错误
80x1007关节超速
90x1008末端接口板无法连接
100x1009超速度限制
110x100A超加速度限制
120x100B关节抱闸未打开
130x100C拖动示教时超速
140x100D机械臂发生碰撞
150x100E无该工作坐标系
160x100F无该工具坐标系
170x1010关节发生掉使能错误
180x1017系统外受力数据校验失败。

关节错误类型 ​

序号错误代码(16进制)错误内容
10x0000关节正常
20x0001FOC错误
30x0002过压
40x0004欠压
50x0008过温
60x0010启动失败
70x0020编码器错误
80x0040过流
90x0080软件错误
100x0100温度传感器错误
110x0200位置超限错误
120x0400关节ID非法
130x0800位置跟踪错误
140x1000电流检测错误
150x2000抱闸打开失败
160x4000位置指令阶跃警告
170x8000多圈关节丢圈数
180xF000通信丢帧

API错误类型 ​

参数类型说明处理建议
0int成功。-
1int控制器返回false,传递参数错误或机械臂状态发生错误。- 校验JSON指令:
①启用API的DEBUG日志,捕获原始JSON数据。
②检查JSON语法:确保括号、引号、逗号等格式正确(可借助JSON校验工具)。
③对照API文档,验证参数名称、数据类型及取值范围是否符合规范。
④修正问题后重新发送指令,检查控制器返回的状态码及业务数据是否正常。
- 检查机械臂状态:
①查看机械臂控制器或日志中的实时报错信息(如硬件故障、超限等),根据提示复位、校准或排查硬件问题。
②修正问题后重新发送指令,检查控制器返回的状态码及业务数据是否正常。
-1int数据发送失败,通信过程中出现问题。检查网络连通性:
使用ping/telnet等工具检测与控制器的通信链路是否正常。
-2int数据接收失败,通信过程中出现问题或者控制器超时没有返回。- 检查网络连通性:
使用ping/telnet等工具检测与控制器的通信链路是否正常。
- 校验版本兼容性:
①核对控制器固件版本是否支持当前API功能,具体版本配套关系请参考版本变更说明。
②若版本过低需升级控制器或使用适配的API版本。
- 调用ModbusTCP接口:仅在读写控制器ModbusTCP设备时适用,创建机械臂控制句柄后,必须调用rm_set_modbustcp_mode()接口,否则无法接收到返回值。
-3int返回值解析失败,接收到的数据格式不正确或不完整。校验版本兼容性:
①核对控制器固件版本是否支持当前API功能,具体版本配套关系请参考版本变更说明。
②若版本过低需升级控制器或使用适配的API版本。
-4int当前到位设备校验失败,即当前到位设备不为关节/升降机构/夹爪/灵巧手。- 检测多设备并发控制:检查是否有其他设备给机械臂发送运动指令:包括机械臂、夹爪、灵巧手、升降机的运动;
- 实时监听指令事件:注册回调函数 rm_get_arm_event_call_back:
①捕获设备到位事件(如运动完成、超时等);
②通过回调参数 device 判断触发事件的具体设备类型。
-5int单线程阻塞模式超时未接收到返回,请确保超时时间设置合理。- 检查超时时长设置:单线程阻塞模式下,支持配置等待设备运动完成的超时时间,务必确保设置超时时间大于设备运动时间;
- 检查网络连通性:
使用ping/telnet等工具检测与控制器的通信链路是否正常。

ROS功能包机械臂相关指令使用说明 ​

该部分介绍如何来通过ROS话题查询和控制机械臂。

关节配置 ​

清除关节错误代码Jointerrclear.msg ​

参数说明:

参数类型说明
joint_numuint8对应关节序号,从基座到机械臂手爪端,六自由度序号依次为1~6,七自由度序号依次为1~7。

使用命令示例:

json
ros2 topic pub /rm_driver/set_joint_err_clear_cmd rm_ros_interfaces/msg/Jointerrclear "joint_num: 1"

返回命令示例:

json
ros2 topic echo /rm_driver/set_joint_err_clear_result

参数说明:

参数类型说明
std_msgsbooltrue:设置成功;false:设置失败。

版本查询 ​

查询机械臂基本信息 ​

参数说明:

参数类型说明
std_msgsEmptyROS自带空消息类型,无具体参数。

使用命令示例:

json
ros2 topic pub --once /rm_driver/get_robot_info_cmd std_msgs/msg/Empty "{}"

返回命令示例:

json
ros2 topic echo /rm_driver/get_robot_info_result

参数说明:RobotInfo.msg

参数类型说明
arm_dofuint8机械臂自由度(关节数量)。
arm_modeluint8机械臂型号。示例:
0=RM_65,
1=RM_75,
2=RML_63I(已弃用),
3=RML_63II,
4=RML_63III,
5=ECO_65,
6=ECO_62,
7=GEN_72,
8=ECO63,
9=通用机器人。
force_typeuint8末端力传感器版本,示例:
0=标准版,
1=一维力版,
2=六维力版,
3=一体化六维力版。
robot_controller_versionuint8机械臂控制器版本(3:三代,4:四代)
statebool是否读取成功。true:读取成功;false:读取失败。

获取机械臂软件版本 ​

参数说明:

参数类型说明
std_msgsEmptyROS自带空消息类型,无具体参数。

使用命令示例:

json
ros2 topic pub  --once /rm_driver/get_arm_software_version_cmd std_msgs/msg/Empty "{}"

返回命令示例:

json
ros2 topic echo /rm_driver/get_arm_software_version_result

参数说明:Armsoftversion.msg

参数类型说明
product_versionstring机械臂型号。
controller_versionstring机械臂控制器版本,若为四代控制器,则该字段为"4.0"。
algorithm_infostring算法库信息。
ctrl_infoSoftwarebuildinfoctrl 层软件信息。
dynamic_infostring动力学版本(三代)。
plan_infoSoftwarebuildinfoplan 层软件信息(三代)。
com_infoSoftwarebuildinfocommunication 模块软件信息(四代)。
program_infoSoftwarebuildinfo流程图编程模块软件信息(四代)。
statebool查询状态 true:成功;false:失败。

查询关节软件版本 ​

参数说明:

参数类型说明
std_msgsEmptyROS自带空消息类型,无具体参数。

使用命令示例:

json
ros2 topic pub --once /rm_driver/get_joint_software_version_cmd std_msgs/msg/Empty "{}"

返回命令示例:

json
ros2 topic echo /rm_driver/get_joint_software_version_result

参数说明:Jointversion.msg

参数类型说明
joint_versionstring[7]获取到的各关节软件版本号数组,需转换为十六进制(例如:54536 转换为十六进制为 D508,对应版本号为 Vd5.0.8(三代控制器))。
statebool获取状态,true:获取成功,false:获取失败。

查询末端接口板软件版本号 ​

参数说明:

参数类型说明
std_msgsEmptyROS自带空消息类型,无具体参数。

使用命令示例:

json
ros2 topic pub --once /rm_driver/get_tool_software_version_cmd std_msgs/msg/Empty "{}"

返回命令示例:

json
ros2 topic echo /rm_driver/get_tool_software_version_result

参数说明:Toolsoftwareversionv4.msg

参数类型说明
tool_versionstring末端接口板软件版本号(End interface board software version number)。
statebool查询状态,true:获取成功,false:获取失败。

工作坐标系设置 ​

切换当前工作坐标系 ​

参数说明:

参数类型说明
std_msgsStringROS自带msg。

使用命令示例:

json
ros2 topic pub /rm_driver/change_work_frame_cmd std_msgs/msg/String "data: 'Base'"

返回命令示例:

json
ros2 topic echo /rm_driver/change_work_frame_result

参数说明:

参数类型说明
std_msgsbooltrue:设置成功;false:设置失败。

查询当前工作坐标系 ​

参数说明:

参数类型说明
std_msgsEmptyROS自带msg。

使用命令示例:

json
ros2 topic pub --once /rm_driver/get_curr_workFrame_cmd std_msgs/msg/Empty "{}"

返回命令示例:

json
ros2 topic echo /rm_driver/get_curr_workFrame_result

参数说明:

参数类型说明
std_msgsbooltrue:设置成功;false:设置失败。

查询所有工作坐标系 ​

参数说明:

参数类型说明
std_msgsEmptyROS自带msg。

使用命令示例:

json
ros2 topic pub --once /rm_driver/get_all_work_frame_cmd std_msgs/msg/Empty "{}"

返回命令示例: 所有工作坐标系名称。

json
ros2 topic echo /rm_driver/get_all_work_frame_result

工具坐标系设置 ​

切换当前工具坐标系 ​

参数说明:

参数类型说明
std_msgsStringROS自带msg。

使用命令示例:

json
ros2 topic pub --once /rm_driver/change_tool_frame_cmd std_msgs/msg/String "data: 'Arm_Tip'"

返回命令示例:

json
ros2 topic echo /rm_driver/change_tool_frame_result

参数说明:

参数类型说明
std_msgsbooltrue:设置成功;false:设置失败。

查询当前工具坐标系 ​

参数说明:

参数类型说明
std_msgsEmptyROS自带msg。

使用命令示例:

json
ros2 topic pub --once /rm_driver/get_current_tool_frame_cmd std_msgs/msg/Empty "{}"

返回命令示例: 当前工具坐标系名称。

json
ros2 topic echo /rm_driver/get_current_tool_frame_result

查询所有工具坐标系名称 ​

参数说明:

参数类型说明
std_msgsEmptyROS自带msg。

使用命令示例:

json
ros2 topic pub /rm_driver/get_all_tool_frame_cmd std_msgs/msg/Empty "{}"

返回命令示例: 当前工具坐标系所有名称。

json
ros2 topic echo /rm_driver/get_all_tool_frame_result

机械臂状态查询 ​

获取机械臂当前状态-返回各关节角度和欧拉角 ​

参数说明:

参数类型说明
std_msgsEmptyROS自带msg。

使用命令示例:

json
ros2 topic pub --once /rm_driver/get_current_arm_state_cmd std_msgs/msg/Empty "{}"

返回命令示例: 当前机械臂关节状态(角度)+位姿信息(欧拉角)+报错信息。

json
ros2 topic echo /rm_driver/get_current_arm_original_state_result

获取机械臂当前状态-返回各关节弧度和四元数 ​

参数说明:

参数类型说明
std_msgsEmptyROS自带msg。

使用命令示例:

json
ros2 topic pub --once /rm_driver/get_current_arm_state_cmd std_msgs/msg/Empty "{}"

返回命令示例: 当前机械臂关节状态(弧度)+位姿信息(四元数)+报错信息。

json
ros2 topic echo /rm_driver/get_current_arm_state_result

机械臂运动规划 ​

关节空间运动MoveJ.msg ​

参数说明:

参数类型说明
jointfloat32[6]关节角度,单位:弧度。
speeduint8速度百分比例系数,0~100。
trajectory_connectuint8可选参数,代表是否和下一条运动一起规划,
0代表立即规划,
1代表和下一条轨迹一起规划,当为1时,轨迹不会立即执行。
blockbool是否为阻塞模式,true:阻塞,false:非阻塞。
dofuint8机械臂自由度。

使用命令示例: 六自由度:

json
ros2 topic pub --once /rm_driver/movej_cmd rm_ros_interfaces/msg/Movej "{joint: [0, 0, 0, 0, 0, 0], speed: 20, block: true, trajectory_connect: 0, dof: 6}"

七自由度:

json
ros2 topic pub --once /rm_driver/movej_cmd rm_ros_interfaces/msg/Movej "{joint: [0, 0, 0, 0, 0, 0, 0], speed: 20, block: true, trajectory_connect: 0, dof: 7}"

返回命令示例:

json
ros2 topic echo /rm_driver/movej_result

参数说明:

参数类型说明
std_msgsbooltrue:设置成功;false:设置失败。driver终端返回错误码。

笛卡尔空间直线运动Movel.msg ​

参数说明:

参数类型说明
geometry_msgs/Posefloat机械臂位姿,x、y、z坐标(float类型,单位:m)+四元数。
speeduint8速度百分比例系数,0~100。
trajectory_connectuint8可选参数,代表是否和下一条运动一起规划,
0代表立即规划,
1代表和下一条轨迹一起规划,当为1时,轨迹不会立即执行。
blockbool是否为阻塞模式,true:阻塞,false:非阻塞。

使用命令示例: 先使用MoveJ_P:

json
ros2 topic pub --once /rm_driver/movej_p_cmd rm_ros_interfaces/msg/Movejp "{pose: {position: {x: -0.317239, y: 0.120903, z: 0.255765}, orientation: {x: -0.983404, y: -0.178432, z: 0.032271, w: 0.006129}}, speed: 20, trajectory_connect: 0, block: true}"

后使用MoveL:

json
ros2 topic pub --once /rm_driver/movel_cmd rm_ros_interfaces/msg/Movel "{pose: {position: {x: -0.317239, y: 0.120903, z: 0.295765}, orientation: {x: -0.983404, y: -0.178432, z: 0.032271, w: 0.006129}}, speed: 20, trajectory_connect: 0, block: true}"

返回命令示例:

json
ros2 topic echo /rm_driver/movel_result

参数说明:

参数类型说明
std_msgsbooltrue:设置成功;false:设置失败。driver终端返回错误码。

笛卡尔空间圆弧运动Movec.msg ​

参数类型说明
pose_midgeometry_msgs/Pose机械臂中间位姿,x、y、z坐标(float类型,单位:m)+四元数。
pose_endgeometry_msgs/Pose终点位姿,x、y、z坐标(float类型,单位:m)+四元数。
speeduint8速度百分比例系数,0~100。
trajectory_connectuint8可选参数,代表是否和下一条运动一起规划,
0代表立即规划,
1代表和下一条轨迹一起规划,当为1时,轨迹不会立即执行。
blockbool是否为阻塞模式,true:阻塞,false:非阻塞。
loopuint16旋转圈数。

使用命令示例: 先使用MoveJ_P:

json
ros2 topic pub --once /rm_driver/movej_p_cmd rm_ros_interfaces/msg/Movejp "{pose: {position: {x: 0.274946, y: -0.058786, z: 0.299028}, orientation: {x: 0.7071, y: -0.7071, z: 0.0, w: 0.0}}, speed: 0, trajectory_connect: 0, block: true}"

使用movec到达指定位置:

json
ros2 topic pub --once /rm_driver/movec_cmd rm_ros_interfaces/msg/Movec "{pose_mid: {position: {x: 0.324946, y: -0.008786, z: 0.299028}, orientation: {x: 0.7071, y: -0.7071, z: 0.0, w: 0.0}}, pose_end: {position: {x: 0.274946, y: 0.041214, z: 0.299028}, orientation: {x: 0.7071, y: -0.7071, z: 0.0, w: 0.0}}, speed: 20, trajectory_connect: 0, block: false, loop: 0}"

返回命令示例:

json
ros2 topic echo /rm_driver/movec_result

关节角度CANFD透传Jointpos.msg ​

参数类型说明
jointfloat32[6]关节角度,单位:弧度。
followbool跟随状态,true高跟随,false低跟随,不设置默认高跟随。
expandfloat32拓展关节,单位:弧度。
dofuint8机械臂自由度。

使用命令示例: 透传需要连续发送多个连续的点实现,单纯靠以下命令并不能实现功能,当前moveit2控制使用了角度透传的控制方式。

json
ros2 topic pub /rm_driver/movej_canfd_cmd rm_ros_interfaces/msg/Jointpos "{joint: [0, 0, 0, 0, 0, 0], follow: false, expand: 0.0, dof: 6}"

返回命令示例: 成功:无返回值;失败返回:driver终端返回错误码。

自定义高跟随模式关节角度CANFD透传 ​

参数类型说明
jointfloat32[6]关节角度,单位:弧度。
followbool跟随状态,true高跟随,false低跟随,不设置默认高跟随。
expandfloat32拓展关节,单位:弧度。
trajectory_modeuint8高跟随模式下,支持多种模式,0-完全透传模式、1-曲线拟合模式、2-滤波模式。
radiouint8设置曲线拟合模式下平滑系数(范围0-100)或者滤波模式下的滤波参数(范围0-1000),数值越大表示平滑效果越好。
dofuint8机械臂自由度。

使用命令示例: 透传需要连续发送多个连续的点实现,单纯靠以下命令并不能实现功能,当前moveit2控制使用了角度透传的控制方式。

json
ros2 topic pub /rm_driver/movej_canfd_custom_cmd rm_ros_interfaces/msg/Jointposcustom "{joint: [0, 0, 0, 0, 0, 0], follow: false, expand: 0.0, trajectory_mode: 0, radio: 0, dof: 6}"

返回命令示例: 成功:无返回值;失败返回:driver终端返回错误码。

位姿CANFD透传Jointpos.msg ​

参数类型说明
posegeometry_msgs/Pose透传位姿,x、y、z坐标(float类型,单位:m)+四元数。
followbool跟随状态,true高跟随,false低跟随,不设置默认高跟随。

使用命令示例: 需要是大量(10个以上)位置连续的点,单纯靠以下命令并不能实现功能,以2ms以上的周期持续发布。

json
ros2 topic pub /rm_driver/movep_canfd_cmd rm_ros_interfaces/msg/Cartepos "{pose: {position: {x: 0.0, y: 0.0, z: 0.0}, orientation: {x: 0.0, y: 0.0, z: 0.0, w: 1.0}}, follow: false}"

返回命令示例: 成功:无返回值;失败返回:driver终端返回错误码。

自定义高跟随模式位姿CANFD透传 ​

参数类型说明
posegeometry_msgs/Pose透传位姿,x、y、z坐标(float类型,单位:m)+四元数。
followbool跟随状态,true高跟随,false低跟随,不设置默认高跟随。
trajectory_modeuint8高跟随模式下,支持多种模式,0-完全透传模式、1-曲线拟合模式、2-滤波模式。
radiouint8设置曲线拟合模式下平滑系数(范围0-100)或者滤波模式下的滤波参数(范围0-1000),数值越大表示平滑效果越好。

使用命令示例: 需要是大量(10个以上)位置连续的点,单纯靠以下命令并不能实现功能,以2ms以上的周期持续发布。

json
ros2 topic pub /rm_driver/movep_canfd_custom_cmd rm_ros_interfaces/msg/Carteposcustom "{pose: {position: {x: 0.0, y: 0.0, z: 0.0}, orientation: {x: 0.0, y: 0.0, z: 0.0, w: 1.0}}, follow: false, trajectory_mode: 0, radio: 0}"

返回命令示例: 成功:无返回值;失败返回:driver终端返回错误码。

关节空间规划到目标位姿Movejp.msg ​

参数类型说明
posegeometry_msgs/Pose目标位姿,x、y、z坐标(float类型,单位:m)+四元数。
speeduint8速度百分比例系数,0~100。
blockbool是否为阻塞模式,true:阻塞,false:非阻塞。

使用命令示例:

json
ros2 topic pub --once /rm_driver/movej_p_cmd rm_ros_interfaces/msg/Movejp "{pose: {position: {x: -0.317239, y: 0.120903, z: 0.255765}, orientation: {x: -0.983404, y: -0.178432, z: 0.032271, w: 0.006129}}, speed: 20, trajectory_connect: 0, block: true}"

返回命令示例:

json
ros2 topic echo /rm_driver/movej_p_result

参数说明:

参数类型说明
std_msgsbooltrue:设置成功;false:设置失败。driver终端返回错误码。

轨迹停止std_msgs ​

参数类型说明
std_msgsEmptyROS自带msg。

使用命令示例:

json
ros2 topic pub /rm_driver/move_stop_cmd std_msgs/msg/Empty "{}"

返回命令示例:

json
ros2 topic echo /rm_driver/move_stop_result

参数说明:

参数类型说明
std_msgsbooltrue:设置成功;false:设置失败。driver终端返回错误码。

轨迹暂停 ​

参数类型说明
std_msgsEmptyROS自带msg。

使用命令示例:

json
ros2 topic pub --once /rm_driver/pause_cmd std_msgs/msg/Empty "{}"

返回命令示例:

json
ros2 topic echo /rm_driver/pause_result

参数说明:

参数类型说明
std_msgsbooltrue:设置成功;false:设置失败。driver终端返回错误码。

轨迹暂停后恢复 ​

参数类型说明
std_msgsEmptyROS自带msg。

使用命令示例:

json
ros2 topic pub --once /rm_driver/set_arm_continue_cmd std_msgs/msg/Empty "{}"

返回命令示例:

json
ros2 topic echo /rm_driver/set_arm_continue_result

参数说明:

参数类型说明
std_msgsbooltrue:设置成功;false:设置失败。driver终端返回错误码。

示教指令 ​

关节示教 ​

参数类型说明
numuint8示教关节的序号,1~7。
directionuint8示教方向,0-负方向,1-正方向。
speeduint8速度百分比例系数,0~100。

使用命令示例:

json
ros2 topic pub /rm_driver/set_joint_teach_cmd rm_ros_interfaces/msg/Jointteach "{num: 1, direction: 0, speed: 10}"

返回命令示例:

json
ros2 topic echo /rm_driver/set_joint_teach_result

参数说明:

参数类型说明
std_msgsbooltrue:设置成功;false:设置失败。driver终端返回错误码。

位置示教 ​

参数类型说明
typeuint8坐标轴,0-X轴方向、1-Y轴方向、2-Z轴方向。
directionuint8示教方向,0-负方向,1-正方向。
speeduint8速度百分比例系数,0~100。

使用命令示例:

json
ros2 topic pub /rm_driver/set_pos_teach_cmd rm_ros_interfaces/msg/Posteach "{type: 2, direction: 0, speed: 10}"

返回命令示例:

json
ros2 topic echo /rm_driver/set_pos_teach_result

参数说明:

参数类型说明
std_msgsbooltrue:设置成功;false:设置失败。driver终端返回错误码。

姿态示教 ​

参数类型说明
typeuint8旋转所绕坐标轴,0-RX轴方向、1-RY轴方向、2-RZ轴方向。
directionuint8示教方向,0-负方向,1-正方向。
speeduint8速度百分比例系数,0~100。

使用命令示例:

json
ros2 topic pub /rm_driver/set_ort_teach_cmd rm_ros_interfaces/msg/Ortteach "{type: 2, direction: 0, speed: 10}"

返回命令示例:

json
ros2 topic echo /rm_driver/set_ort_teach_result

参数说明:

参数类型说明
std_msgsbooltrue:设置成功;false:设置失败。driver终端返回错误码。

示教停止 ​

参数类型说明
std_msgsEmptyROS自带msg。

使用命令示例:

json
ros2 topic pub /rm_driver/set_stop_teach_cmd std_msgs/msg/Empty "{}"

返回命令示例:

json
ros2 topic echo /rm_driver/set_stop_teach_result

参数说明:

参数类型说明
std_msgsbooltrue:设置成功;false:设置失败。driver终端返回错误码。

Modbus模式查询与配置 ​

配置通讯端口ModbusRTU模式 ​

参数说明:

参数类型说明
modeint320 - 控制器 RS485 端口为 RTU 主站,1 - 末端接口板 RS485 接口为 RTU 主站,2 - 控制器 RS485 端口为 RTU 从站。
baudrateint32波特率,支持的波特率:9600、115200、460800。

使用命令示例:

json
ros2 topic pub --once /rm_driver/set_controller_rs485_mode_cmd rm_ros_interfaces/msg/RS485params "{mode: 0, baudrate: 115200, state: false}"

返回命令示例:

json
ros2 topic echo /rm_driver/set_controller_rs485_mode_result

参数说明:

参数类型说明
std_msgsBooltrue:设置成功;false:设置失败,driver 终端返回错误码。

关闭通讯端口ModbusRTU模式 ​

参数说明:

参数类型说明
datauint16通讯端口,0 - 控制器 RS485 端口为 RTU 主站,1 - 末端接口板 RS485 接口为 RTU 主站,2 - 控制器 RS485 端口为 RTU 从站。

使用命令示例:

json
ros2 topic pub --once /rm_driver/close_controller_rtu_modbus_cmd std_msgs/msg/UInt16 "data: 0"

返回命令示例:

json
ros2 topic echo /rm_driver/close_controller_rtu_modbus_result

参数说明:

参数类型说明
std_msgsBooltrue:关闭成功;false:关闭失败,driver 终端返回错误码。

ModbusTCP主站 ​

设置ModbusTCP主站连接 ​

参数说明:Modbustcpmasterinfo.msg

参数类型说明
master_namestringModbus 主站名称(三代控制器无需配置)。
ipstringTCP 主站 IP 地址。
portint32TCP 主站端口号。

使用命令示例:

json
ros2 topic pub --once /rm_driver/set_controller_tcp_mode_cmd rm_ros_interfaces/msg/Modbustcpmasterinfo "{master_name: '', ip: '192.168.1.18', port: 502, state: false}"

返回命令示例:

json
ros2 topic echo /rm_driver/set_controller_tcp_mode_result

参数说明:

参数类型说明
std_msgsBooltrue:返回成功;false:返回失败,driver 终端返回错误码。

关闭ModbusTCP主站连接 ​

参数说明:

参数类型说明
std_msgsEmptyROS自带msg。

使用命令示例:

json
ros2 topic pub --once /rm_driver/close_controller_tcp_modbus_cmd std_msgs/msg/Empty "{}"

返回命令示例:

json
ros2 topic echo /rm_driver/close_controller_tcp_modbus_result

参数说明:

参数类型说明
std_msgsBooltrue:返回成功;false:返回失败,driver 终端返回错误码。

工具端控制器端RTU Modbus协议读写数据 ​

ModbusRTU协议读线圈 ​

参数说明:Modbusrtureadparams.msg

参数类型说明
addressint32数据起始地址。
deviceint32外设设备地址。
typeint32主机类型,0-控制器端Modbus主机;1-工具端Modbus主机。
numint32要读的数据的数量,数据长度不超过120。

使用命令示例:

json
ros2 topic pub --once /rm_driver/read_modbus_rtu_coils_cmd rm_ros_interfaces/msg/Modbusrtureadparams "{address: 0, device: 1, type: 0, num: 1}"

返回命令示例:

json
ros2 topic echo /rm_driver/read_modbus_rtu_coils_result

参数说明:Modbusreaddata.msg

参数类型说明
read_dataint32[]读取到的 modbus 数据。
statebool反馈查询状态信息,true:读取成功,false:读取失败。失败时 driver 终端返回错误码。

ModbusRTU协议写线圈 ​

参数说明:Modbusrtuwriteparams.msg

参数类型说明
addressint32数据起始地址。
deviceint32外设设备地址。
typeint32主机类型,0-控制器端modbus主机;1-工具端modbus主机。
numint32要写的数据的数量,最大不超过160。
dataint32[]要写的数据,数据长度与num对应。

使用命令示例:

json
ros2 topic pub --once /rm_driver/write_modbus_rtu_coils_cmd rm_ros_interfaces/msg/Modbusrtuwriteparams "{address: 0, device: 1, type: 0, num: 8, data: [3]}"

返回命令示例:

json
ros2 topic echo /rm_driver/write_modbus_rtu_coils_result

参数说明:

参数类型说明
std_msgsbooltrue:写入成功;false:写入失败。driver 终端返回错误码。

ModbusRTU协议读离散量输入 ​

参数说明:Modbusrtureadparams.msg

参数类型说明
addressint32数据起始地址。
deviceint32外设设备地址。
typeint32主机类型,0-控制器端modbus主机;1-工具端modbus主机。
numint32要读的数据的数量,数据长度不超过8。

使用命令示例:

json
ros2 topic pub --once /rm_driver/read_modbus_rtu_input_status_cmd rm_ros_interfaces/msg/Modbusrtureadparams "{address: 0, device: 2, type: 0, num: 1}"

返回命令示例:

json
ros2 topic echo /rm_driver/read_modbus_rtu_input_status_result

参数说明:Modbusreaddata.msg

参数类型说明
read_dataint32[]读取到的 modbus 数据。
statebool反馈查询状态信息,true:读取成功,false:读取失败。失败时 driver 终端返回错误码。

ModbusRTU协议读保持寄存器 ​

参数说明:Modbusrtureadparams.msg

参数类型说明
addressint32数据起始地址。
deviceint32外设设备地址。
typeint32主机类型,0-控制器端Modbus主机;1-工具端Modbus主机。
numint32要读的数据的数量,数据长度不超过12。

使用命令示例:

json
ros2 topic pub --once /rm_driver/read_modbus_rtu_holding_registers_cmd rm_ros_interfaces/msg/Modbusrtureadparams "{address: 0, device: 2, type: 0, num: 1}"

返回命令示例:

json
ros2 topic echo /rm_driver/read_modbus_rtu_holding_registers_result

参数说明:Modbusreaddata.msg

参数类型说明
read_dataint32[]读取到的 modbus 数据。
statebool反馈查询状态信息,true:读取成功,false:读取失败。失败时 driver 终端返回错误码。

ModbusRTU协议写保持寄存器 ​

参数说明: Modbusrtuwriteparams.msg

参数类型说明
addressint32数据起始地址。
deviceint32外设设备地址。
typeint32主机类型,0-控制器端Modbus主机;1-工具端Modbus主机。
numint32要写的数据的数量,最大不超过10。
dataint32[]要写的数据,数据长度与num对应。

使用命令示例:

json
ros2 topic pub --once /rm_driver/write_modbus_rtu_registers_cmd rm_ros_interfaces/msg/Modbusrtuwriteparams "{address: 0, device: 2, type: 0, num: 2, data: [1,1,2,3]}"

返回命令示例:

json
ros2 topic echo /rm_driver/write_modbus_rtu_registers_result

参数说明:Modbusreaddata.msg

参数类型说明
std_msgsbooltrue:写入成功,false:写入失败。失败时 driver 终端返回错误码。

ModbusRTU协议读输入寄存器 ​

参数说明:Modbusrtureadparams.msg

参数类型说明
addressint32数据起始地址。
deviceint32外设设备地址。
typeint32主机类型,0-控制器端modbus主机;1-工具端modbus主机。
numint32要读的数据的数量,数据长度不超过12。

使用命令示例:

json
ros2 topic pub --once /rm_driver/read_modbus_rtu_input_registers_cmd rm_ros_interfaces/msg/Modbusrtureadparams "{address: 0, device: 2, type: 0, num: 1}"

返回命令示例:

json
ros2 topic echo /rm_driver/read_modbus_rtu_input_registers_result

参数说明:Modbusreaddata.msg

参数类型说明
read_dataint32[]读取到的 modbus 数据。
statebool反馈查询状态信息,true:成功,false:失败。失败时 driver 终端返回错误码。

控制器ModbusTCP协议读写数据 ​

ModbusTCP协议读线圈 ​

参数说明:Modbustcpreadparams.msg

参数类型说明
addressint32数据起始地址。
master_namestringModbus 主站名称,最大长度15个字符(三代控制器无效)。
ipstring主机连接的 IP 地址(三代控制器无效)。
portint32主机连接的端口号(三代控制器无效)。
numint32读取数据数量,最大不超过120(即 15 个字节)。

使用命令示例:

json
ros2 topic pub --once /rm_driver/read_modbus_tcp_coils_cmd rm_ros_interfaces/msg/Modbustcpreadparams "{address: 0, master_name: '3', ip: '127.0.0.6', port: 502, num: 1}"

返回命令示例:

json
ros2 topic echo /rm_driver/read_modbus_tcp_coils_result

参数说明:Modbusreaddata.msg

参数类型说明
read_dataint32[]读取到的 modbus 数据。
statebool反馈查询状态信息,true:读取成功,false:读取失败。失败时 driver 终端返回错误码。

ModbusTCP协议写线圈 ​

参数说明:Modbustcpwriteparams.msg

参数类型说明
addressint32数据起始地址。
master_namestringModbus 主站名称,最大长度15个字符(三代控制器无效)。
ipstring主机连接的 IP 地址(三代控制器无效)。
portint32主机连接的端口号(三代控制器无效)。
numint32写入数据数量,最大不超过 160(即 20 个字节)。
dataint32[]要写入线圈的数据组:线圈个数≤8 时,写入数据为 1 个字节;线圈个数 > 8 时,为多个数据的数组.

使用命令示例:

json
ros2 topic pub --once /rm_driver/write_modbus_tcp_coils_cmd rm_ros_interfaces/msg/Modbustcpwriteparams "{address: 0, master_name: '3', ip: '127.0.0.6', port: 502, num: 10, data: [2,3]}"

返回命令示例:

json
ros2 topic echo /rm_driver/write_modbus_tcp_coils_result

参数说明:

参数类型说明
std_msgsbooltrue:写入成功,false:写入失败。失败时 driver 终端返回错误码。

ModbusTCP协议读离散量输入 ​

参数说明:Modbustcpreadparams.msg

参数类型说明
addressint32数据起始地址。
master_namestringModbus 主站名称,最大长度15个字符(三代控制器无效)。
ipstring主机连接的 IP 地址(三代控制器无效)。
portint32主机连接的端口号(三代控制器无效)。
numint32读取数据数量,最大不超过8。

使用命令示例:

json
ros2 topic pub --once /rm_driver/read_modbus_tcp_input_status_cmd rm_ros_interfaces/msg/Modbustcpreadparams "{address: 0, master_name: '3', ip: '127.0.0.6', port: 502, num: 1}"

返回命令示例:

json
ros2 topic echo /rm_driver/read_modbus_tcp_input_status_result

参数说明:Modbusreaddata.msg

参数类型说明
read_dataint32[]读取到的 modbus 数据。
statebool反馈查询状态信息,true:成功,false:失败。失败时 driver 终端返回错误码。

ModbusTCP协议读保持寄存器 ​

参数说明:Modbustcpreadparams.msg

参数类型说明
addressint32数据起始地址。
master_namestringModbus 主站名称,最大长度15个字符(三代控制器无效)。
ipstring主机连接的 IP 地址(三代控制器无效)。
portint32主机连接的端口号(三代控制器无效)。
numint32读取数据数量,最大不超过12。

使用命令示例:

json
ros2 topic pub --once /rm_driver/read_modbus_tcp_holding_registers_cmd rm_ros_interfaces/msg/Modbustcpreadparams "{address: 0, master_name: '3', ip: '127.0.0.6', port: 502, num: 1}"

返回命令示例:

json
ros2 topic echo /rm_driver/read_modbus_tcp_holding_registers_result

参数说明:Modbusreaddata.msg

参数类型说明
read_dataint32[]读取到的 modbus 数据。
statebool反馈查询状态信息,true:读取成功,false:读取失败。失败时 driver 终端返回错误码。

ModbusTCP协议写保持寄存器 ​

参数说明:Modbustcpwriteparams.msg

参数类型说明
addressint32数据起始地址。
master_namestringModbus 主站名称,最大长度15个字符(三代控制器无效)。
ipstring主机连接的 IP 地址(三代控制器无效)。
portint32主机连接的端口号(三代控制器无效)。
numint32写入数据数量,最大不超过10。
dataint32[]写入的数据,数据长度与num对应。

使用命令示例:

json
# 写多个寄存器示例:需要将寄存器内容拆为高、低位,如写入257,应输入1,1
ros2 topic pub --once /rm_driver/write_modbus_tcp_registers_cmd rm_ros_interfaces/msg/Modbustcpwriteparams "{address: 0, master_name: '3', ip: '127.0.0.6', port: 502, num: 2, data: [100, 100, 100, 200]}"

# 写单个寄存器直接输入对应数值 <br>
ros2 topic pub --once /rm_driver/write_modbus_tcp_registers_cmd rm_ros_interfaces/msg/Modbustcpwriteparams "{address: 0, master_name: '3', ip: '127.0.0.6', port: 502, num: 1, data: [1000]}"

返回命令示例:

json
ros2 topic echo /rm_driver/write_modbus_tcp_registers_result

参数说明:

参数类型说明
std_msgsbooltrue:写入成功,false:写入失败。失败时 driver 终端返回错误码。

ModbusTCP协议读输入寄存器 ​

参数说明:Modbustcpreadparams.msg

参数类型说明
addressint32数据起始地址。
master_namestringModbus 主站名称,最大长度15个字符(三代控制器无效)。
ipstring主机连接的 IP 地址(三代控制器无效)。
portint32主机连接的端口号(三代控制器无效)。
numint32读取数据数量,最大不超过12。

使用命令示例:

json
ros2 topic pub --once /rm_driver/read_modbus_tcp_input_registers_cmd rm_ros_interfaces/msg/Modbustcpreadparams "{address: 0, master_name: '3', ip: '127.0.0.6', port: 502, num: 1}"

返回命令示例:

json
ros2 topic echo /rm_driver/read_modbus_tcp_input_registers_result

参数说明:Modbusreaddata.msg

参数类型说明
read_dataint32[]读取到的 modbus 数据。
statebool反馈查询状态信息,true:成功,false:失败。失败时 driver 终端返回错误码。

末端工具IO配置 ​

设置工具端电源输出std_msgs ​

参数类型说明
datauint16电源输出类型,0:0V,2:12V,3:24V。

使用命令示例:

json
ros2 topic pub --once /rm_driver/set_tool_voltage_cmd std_msgs/msg/UInt16 "data: 0"

返回命令示例:

json
ros2 topic echo /rm_driver/set_tool_voltage_result

参数说明:

参数类型说明
std_msgsbooltrue:设置成功;false:设置失败。driver终端返回错误码。

拖动示教及轨迹复现 ​

设置力位混合控制Setforceposition.msg ​

参数类型说明
sensoruint80-一维力;1-六维力。
modeuint80-基坐标系力控;1-工具坐标系力控。
directionuint8力控方向;0-沿X轴;1-沿Y轴;2-沿Z轴;3-沿RX姿态方向;4-沿RY姿态方向;5-沿RZ姿态方向。
nint16力的大小,单位N,精确到0.1N。

使用命令示例:

json
ros2 topic pub --once /rm_driver/set_force_postion_cmd rm_ros_interfaces/msg/Setforceposition "{sensor: 1, mode: 0, direction: 2, n: 3}"

返回命令示例:

json
ros2 topic echo /rm_driver/set_force_postion_result

参数说明:

参数类型说明
std_msgsbooltrue:设置成功;false:设置失败。driver终端返回错误码。

结束力位混合控制std_msgs ​

参数类型说明
std_msgsEmptyROS自带msg。

使用命令示例:

json
ros2 topic pub /rm_driver/stop_force_postion_cmd std_msgs/msg/Empty "{}"

返回命令示例:

json
ros2 topic echo /rm_driver/clear_force_data_result

参数说明:

参数类型说明
std_msgsbooltrue:设置成功;false:设置失败。driver终端返回错误码。

末端六维力传感器的使用 ​

睿尔曼RM-65F机械臂末端配备集成式六维力传感器,无需外部走线,用户可直接通过ROS话题对六维力进行操作。

查询六维力数据 ​

参数类型说明
std_msgsEmptyROS自带msg。

使用命令示例:

json
ros2 topic pub /rm_driver/get_force_data_cmd std_msgs/msg/Empty "{}"

返回命令示例:

成功返回对应坐标系六维力数据。

  • 原始数据:

    json
    ros2 topic echo /rm_driver/get_force_data_result
  • 系统受力数据:

    json
    ros2 topic echo /rm_driver/get_zero_force_data_result
  • 工作坐标系受力数据:

    json
    ros2 topic echo /rm_driver/get_work_force_data_result
  • 工具坐标系受力数据:

    json
    ros2 topic echo /rm_driver/get_tool_force_data_result

清空六维力数据std_msgs ​

参数类型说明
std_msgsEmptyROS自带msg。

使用命令示例:

json
ros2 topic pub /rm_driver/clear_force_data_cmd std_msgs/msg/Empty "{}"

返回命令示例:

json
ros2 topic echo /rm_driver/clear_force_data_result

参数说明:

参数类型说明
std_msgsbooltrue:设置成功;false:设置失败。driver终端返回错误码。

升降机构 ​

睿尔曼机械臂控制器可集成自主研发升降机构,本接口可以用于升降机构的控制。

升降机构速度开环控制Liftspeed.msg ​

参数类型说明
speedint16速度百分比,-100~100:
1. speed<0:升降机构向下运动;
2. speed>0:升降机构向上运动;
3. speed=0:升降机构停止运动。

使用命令示例:

json
ros2 topic pub /rm_driver/set_lift_speed_cmd rm_ros_interfaces/msg/Liftspeed "speed: 100"

返回命令示例:

json
ros2 topic echo /rm_driver/set_lift_speed_result

参数说明:

参数类型说明
std_msgsbooltrue:设置成功;false:设置失败。driver终端返回错误码。

升降机构位置闭环控制Liftheight.msg ​

参数类型说明
heightint16目标高度,单位 mm,范围:0-2600。
speedint16速度百分比,1-100。
blockbool是否为阻塞模式,true:阻塞,false:非阻塞。

使用命令示例:

json
ros2 topic pub --once /rm_driver/set_lift_height_cmd rm_ros_interfaces/msg/Liftheight "{height: 0, speed: 10, block: true}"

返回命令示例:

json
ros2 topic echo /rm_driver/set_lift_height_result

参数说明:

参数类型说明
std_msgsbooltrue:设置成功;false:设置失败。driver终端返回错误码。

获取升降机构状态Liftstate.msg ​

参数类型说明
heightint16目标高度,单位 mm。
currentint16当前电流。
err_flaguint16驱动错误代码。

使用命令示例:

json
ros2 topic pub /rm_driver/get_lift_state_cmd std_msgs/msg/Empty "{}"

返回命令示例: 成功返回:升降机构当前状态;失败返回:driver终端返回错误码.

json
ros2 topic echo /rm_driver/get_lift_state_result

通用扩展关节配置 ​

扩展关节状态获取 ​

参数说明:

参数类型说明
std_msgsEmptyROS自带msg。

使用命令示例:

json
ros2 topic pub /rm_driver/get_expand_state_cmd std_msgs/msg/Empty "{}"

返回命令示例:

json
ros2 topic echo /rm_driver/get_expand_state_result

参数说明:Expandstate.msg

参数类型说明
posint16当前位置。
currentint16当前电流。
err_flaguint16驱动错误代码。

扩展关节速度环控制 ​

参数说明:

参数类型说明
dataint32速度百分比,1~100。

使用命令示例:

json
ros2 topic pub --once /rm_driver/set_expand_speed_cmd std_msgs/msg/Int32 "data: 10"

返回命令示例:

json
ros2 topic echo /rm_driver/set_expand_speed_result

参数说明:

参数类型说明
std_msgsbooltrue:设置成功;false:设置失败。driver终端返回错误码。

扩展关节位置环控制 ​

参数说明:Expand_Position.msg

参数类型说明
posuint16目标位置,单位:度,数值 1000 代表 1 度
speeduint16速度百分比,1-100。
blockbool是否为阻塞模式,true:阻塞,false:非阻塞。

使用命令示例:

json
ros2 topic pub --once /rm_driver/set_expand_pos_cmd rm_ros_interfaces/msg/Expandpos "{pos: 100000, speed: 20, block: true}"

返回命令示例:

json
ros2 topic echo /rm_driver/set_expand_pos_result

参数说明:

参数类型说明
std_msgsbooltrue:设置成功;false:设置失败。driver终端返回错误码。

末端工具协议 ​

末端工具协议支持下的末端设备基础信息与实时信息的读取。

设置末端生态协议模式 ​

参数类型说明
dataint320-禁用协议;
9600-开启协议(波特率9600);
115200-开启协议(波特率115200);
256000-开启协议(波特率256000);
460800-开启协议(波特率460800)。

使用命令示例:

json
ros2 topic pub /rm_driver/set_rm_plus_mode_cmd std_msgs/msg/Int32 "data: 0"

返回命令示例:

json
ros2 topic echo /rm_driver/set_rm_plus_mode_result

参数说明:

参数类型说明
std_msgsbooltrue:设置成功;false:设置失败。driver终端返回错误码。

查询末端生态协议模式 ​

参数类型说明
std_msgsEmptyROS自带msg。

使用命令示例:

json
ros2 topic pub /rm_driver/get_rm_plus_mode_cmd std_msgs/msg/Empty "{}"

返回命令示例:

json
ros2 topic echo /rm_driver/get_rm_plus_mode_result

参数说明:

参数类型说明
std_msgsint320-禁用协议;
9600-开启协议(波特率9600);
115200-开启协议(波特率115200);
256000-开启协议(波特率256000);
460800-开启协议(波特率460800)。

设置触觉传感器模式 ​

参数类型说明
dataint320-关闭触觉传感器;
1-打开触觉传感器(返回处理后数据);
2-打开触觉传感器(返回原始数据)。

使用命令示例:

json
ros2 topic pub /rm_driver/set_rm_plus_touch_cmd std_msgs/msg/Int32 "data: 0"

返回命令示例:

json
ros2 topic echo /rm_driver/set_rm_plus_touch_result

参数说明:

参数类型说明
std_msgsbooltrue:设置成功;false:设置失败。driver终端返回错误码。

获取触觉传感器模式 ​

参数类型说明
std_msgsEmptyROS自带msg。

使用命令示例:

json
ros2 topic pub /rm_driver/get_rm_plus_touch_cmd std_msgs/msg/Empty "{}"

返回命令示例:

json
ros2 topic echo /rm_driver/get_rm_plus_touch_result

参数说明:

参数类型说明
std_msgsint320-关闭触觉传感器;
1-打开触觉传感器(返回处理后数据);
2-打开触觉传感器(返回原始数据)。

查询末端生态基础信息Rmplusbase.msg ​

参数类型说明
manustring设备厂家。
typeint8设备类型 1:两指夹爪 2:五指灵巧手 3:三指夹爪。
hvstring硬件版本。
svstring软件版本。
bvstringboot版本。
idint32设备ID。
dofint8自由度。
checkint8自检开关。
beeint8蜂鸣器开关。
forcebool力控支持。
touchbool触觉支持。
touch_numint8触觉个数。
touch_swint8触觉开关。
handint8手方向,1:左手,2: 右手。
pos_upint32[12]位置上限,单位:无量纲。
pos_lowint32[12]位置下限,单位:无量纲。
angle_upint32[12]角度上限,单位:0.01度。
angle_lowint32[12]角度下限,单位:0.01度。
speed_upint32[12]速度上限,单位:无量纲。
speed_lowint32[12]速度下限,单位:无量纲。
force_upint32[12]力上限,单位:0.001N。
force_lowint32[12]力下限,单位:0.001N。

使用命令示例:

json
ros2 topic echo /rm_driver/udp_rm_plus_base

查询末端生态实时状态Rmplusstate.msg ​

参数类型说明
sys_stateint32系统状态。
dof_stateint32[12]各自由度当前状态。
dof_errint32[12]各自由度错误信息。
posint32[12]各自由度当前位置。
speedint32[12]各自由度当前速度。
angleint32[12]各自由度当前角度。
currentint32[12]各自由度当前电流。
normal_forceint32[18]自由度触觉三维力的法向力。
tangential_forceint32[18]自由度触觉三维力的切向力。
tangential_force_dirint32[18]自由度触觉三维力的切向力方向。
tsaint32[12]自由度触觉自接近。
tmaint32[12]自由度触觉互接近。
touch_dataint32[18]触觉传感器原始数据。
forceint32[12]自由度力矩。

使用命令示例:

json
ros2 topic echo /rm_driver/udp_rm_plus_state

设置末端工具角度跟随 ​

参数类型说明
hand_angleint16[6]角度数组,按照末端工具厂商定义的角度做控制。另外,-1 代表该自由度不执行任何操作,保持当前状态。
blockbool是否为阻塞模式,true:阻塞,false:非阻塞。

使用命令示例:

json
ros2 topic pub --once /rm_driver/set_hand_follow_angle_cmd rm_ros_interfaces/msg/Handangle "{hand_angle: [0, 0, 0, 0, 0, 0], block: true}"

返回命令示例:

json
ros2 topic echo /rm_driver/set_hand_follow_angle_result

参数说明:

参数类型说明
std_msgsbooltrue:设置成功;false:设置失败。driver终端返回错误码。

设置末端工具位置跟随 ​

参数类型说明
hand_angleint16[6]位置数组,按照末端工具厂商定义的位置做控制。另外,-1 代表该自由度不执行任何操作,保持当前位置。
blockbool是否为阻塞模式,true:阻塞,false:非阻塞。

使用命令示例:

json
ros2 topic pub --once /rm_driver/set_hand_follow_pos_cmd rm_ros_interfaces/msg/Handangle "{hand_angle: [0, 0, 0, 0, 0, 0], block: true}"

返回命令示例:

json
ros2 topic echo /rm_driver/set_hand_follow_pos_result

参数说明:

参数类型说明
std_msgsbooltrue:设置成功;false:设置失败。driver终端返回错误码。

透传力位混合控制补偿 ​

针对睿尔曼六维力版本的机械臂,用户除了可直接使用示教器调用底层的力位混合控制模块外,还可以将自定义的轨迹以周期性透传的形式结合底层的力位混合控制算法进行补偿。 在进行力的操作之前,如果未进行力数据标定,可使用清空六维力数据接口对零位进行标定。

开启透传力位混合控制补偿模式std_msgs ​

参数类型说明
std_msgsEmpty开启透传力位混合控制补偿模式。

使用命令示例:

json
ros2 topic pub /rm_driver/start_force_position_move_cmd std_msgs/msg/Empty "{}"

返回命令示例:

json
ros2 topic echo /rm_driver/start_force_position_move_result

参数说明:

参数类型说明
std_msgsbooltrue:设置成功;false:设置失败。driver终端返回错误码。

关闭透传力位混合控制补偿模式std_msgs ​

参数类型说明
std_msgsEmpty关闭透传力位混合控制补偿模式。

使用命令示例:

json
ros2 topic pub /rm_driver/stop_force_position_move_cmd std_msgs/msg/Empty "{}"

返回命令示例:

json
ros2 topic echo /rm_driver/stop_force_position_move_result

参数说明:

参数类型说明
std_msgsbooltrue:设置成功;false:设置失败。driver终端返回错误码。

透传力位混合补偿-关节Forcepositionmovejoint.msg ​

参数类型说明
jointfloat32[6]目标关节弧度。
sensoruint8所使用传感器类型,0-一维力,1-六维力。
modeuint8模式,0-沿基坐标系,1-沿工具端坐标系。
dirint16力控方向,0~5分别代表X/Y/Z/Rx/Ry/Rz,其中一维力类型时默认方向为Z方向。
forcefloat32力的大小 单位N。
followbool是否高跟随,true:高跟随,false:低跟随。
dofuint8机械臂自由度。

使用命令示例: 需要是大量(10个以上)位置连续的点,以2ms以上的周期持续发布。

json
ros2 topic pub /rm_driver/force_position_move_joint_cmd rm_ros_interfaces/msg/Forcepositionmovejoint "{joint: [0, 0, 0, 0, 0, 0], sensor: 0, mode: 0, dir: 0, force: 0.0, follow: false, dof: 6}"

返回命令示例: 成功无返回;失败返回:false,driver终端返回错误码。

透传力位混合补偿-位姿Forcepositionmovepose.msg ​

参数类型说明
posefloat目标位姿,x、y、z坐标(单位:m)+四元数。
sensoruint8所使用传感器类型,0-一维力,1-六维力。
modeuint8模式,0-沿基坐标系,1-沿工具端坐标系。
dirint16力控方向,0~5分别代表X/Y/Z/Rx/Ry/Rz,其中一维力类型时默认方向为Z方向。
forcefloat32力的大小 单位N。
followbool是否高跟随,true:高跟随,false:低跟随。

使用命令示例: 需要是大量(10个以上)位置连续 的点,以2ms以上的周期持续发布。

json
ros2 topic pub /rm_driver/force_position_move_pose_cmd rm_ros_interfaces/msg/Forcepositionmovepose "{pose: {position: {x: 0.0, y: 0.0, z: 0.0}, orientation: {x: 0.0, y: 0.0, z: 0.0, w: 1.0}}, sensor: 0, mode: 0, dir: 0, force: 0.0, follow: false}"

返回命令示例: 成功无返回;失败返回:false,driver终端返回错误码。

透传力位混合补偿 ​

参数说明:Forcepositionmove.msg

参数类型说明
posegeometry_msgs/Pose当前坐标系下的目标位姿,支持四元数/欧拉角表示姿态。
位置精度:0.001mm。
欧拉角表示姿态,姿态精度:0.001rad;
四元数方式表示姿态,姿态精度:0.000001。
jointfloat32[]目标关节角度,单位:°,精度:0.001°。
flaguint80 - 下发目标角度;1 - 下发目标位姿。
sensoruint80 - 一维力;1 - 六维力。
modeuint80 - 基坐标系力控;1 - 工具坐标系力控。
control_modeuint8[6]6 个力控方向(Fx、Fy、Fz、Mx、My、Mz)的模式:
0 - 固定模式;1 - 浮动模式;2 - 弹簧模式;3 - 运动模式;4 - 力跟踪模式;8 - 力跟踪 + 姿态自适应模式。
followbool驱动器运动跟随效果:true - 高跟随;false - 低跟随。
desired_forcefloat32[6]力控轴维持的期望力 / 力矩,仅当力控模式为 “力跟踪模式” 时生效,精度:0.1N。
limit_velfloat32[6]力控轴的最大线速度和最大角速度限制(仅对开启力控的方向生效):
- x/y/z 轴:最大线速度,精度 0.001 m/s。
- rx/ry/rz 轴:最大角速度,精度 0.001 °/s。
trajectory_modeuint8高跟随模式下生效:0 - 完全透传模式;1 - 曲线拟合模式;2 - 滤波模式。
radiouint16随 trajectory_mode 变化:
- 曲线拟合模式:平滑系数(范围 0-100);
- 滤波模式:滤波参数(范围 0-1000)。

使用命令示例:

需要是大量(10个以上)位置连续的点,以2ms以上的周期持续发布。

json
ros2 topic pub /rm_driver/force_position_move_cmd rm_ros_interfaces/msg/Forcepositionmove "{pose: {position: {x: 0.0, y: 0.0, z: 0.0}, orientation: {x: 0.0, y: 0.0, z: 0.0, w: 1.0}}, joint: [], flag: 0, sensor: 0, mode: 0, control_mode: [0, 0, 0, 0, 0, 0], follow: false, desired_force: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], limit_vel: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], trajectory_mode: 0, radio: 0}"

返回命令示例: 成功无返回;失败返回:false,driver终端返回错误码。

系统配置 ​

清除系统错误 ​

参数说明:

参数类型说明
std_msgsEmptyROS自带msg。

使用命令示例:

json
ros2 topic pub --once /rm_driver/clear_system_err_cmd std_msgs/msg/Empty "{}"

返回命令示例:

json
ros2 topic echo /rm_driver/clear_system_err_result

参数说明:

参数类型说明
std_msgsbooltrue:设置成功;false:设置失败,driver 终端返回错误码。

机械臂状态主动上报 ​

设置UDP机械臂状态主动上报配置Setrealtimepush.msg ​

参数类型说明
cycleuint16设置广播周期,单位为5ms(默认1即1*5=5ms,200Hz)。
portuint16设置广播的端口号(默认8089)。
force_coordinateuint16设置系统外受力数据的坐标系(仅带有力传感器的机械臂支持)。
ipstring设置自定义的上报目标IP 地址(默认192.168.1.10)。
hand_enablebool设置是否使能灵巧手状态上报,true使能,false不使能。
aloha_state_enablebool设置是否使能aloha主臂状态上报,true使能,false不使能。
arm_current_status_enablebool设置是否使能机械臂状态上报,true使能,false不使能。
expand_state_enablebool是否使能扩展关节相关数据上报,true使能,false不使能。
joint_speed_enablebool设置是否使能关节速度上报,true使能,false不使能。
lift_state_enablebool设置是否使能升降关节数据上报,true使能,false不使能。
plus_base_enablebool末端设备基础信息上报,true使能,false不使能。
plus_state_enablebool末端设备实时信息上报,true使能,false不使能。

使用命令示例:

json
ros2 topic pub --once /rm_driver/set_realtime_push_cmd rm_ros_interfaces/msg/Setrealtimepush "{cycle: 1, port: 8089, force_coordinate: 0, ip: '192.168.1.10', hand_enable: false, aloha_state_enable: false, arm_current_status_enable: false, expand_state_enable: false, joint_speed_enable: false, lift_state_enable: false, plus_base_enable: false, plus_state_enable: false}"

返回命令示例:

json
ros2 topic echo /rm_driver/set_realtime_push_result

参数说明:

参数类型说明
std_msgsbooltrue:设置成功;false:设置失败。driver终端返回错误码。

查询UDP机械臂状态主动上报配置Getrealtimepush.msg ​

参数类型说明
std_msgsEmptyROS自带msg。

使用命令示例:

json
ros2 topic pub --once /rm_driver/get_realtime_push_cmd std_msgs/msg/Empty "{}"

返回命令示例:

json
ros2 topic echo /rm_driver/get_realtime_push_result

参数说明:

参数类型说明
cycleuint16设置广播周期,单位为5ms(默认1即1*5=5ms,200Hz)。
portuint16设置广播的端口号(默认8089)。
force_coordinateuint16设置系统外受力数据的坐标系(仅带有力传感器的机械臂支持)。
ipstring设置自定义的上报目标IP 地址(默认192.168.1.10)。
hand_enablebool设置是否使能灵巧手状态上报,true使能,false不使能。
aloha_state_enablebool设置是否使能aloha主臂状态上报,true使能,false不使能。
arm_current_status_enablebool设置是否使能机械臂状态上报,true使能,false不使能。
expand_state_enablebool是否使能扩展关节相关数据上报,true使能,false不使能。
joint_speed_enablebool设置是否使能关节速度上报,true使能,false不使能。
lift_state_enablebool设置是否使能升降关节数据上报,true使能,false不使能。
plus_base_enablebool末端设备基础信息上报,true使能,false不使能。
plus_state_enablebool末端设备实时信息上报,true使能,false不使能。

UDP机械臂状态主动上报 ​

六维力Sixforce.msg ​
参数类型说明
force_fxfloat32沿x轴方向受力大小。
force_fyfloat32沿y轴方向受力大小。
force_fzfloat32沿z轴方向受力大小。
force_mxfloat32沿x轴方向转动受力大小。
force_myfloat32沿y轴方向转动受力大小。
force_mzfloat32沿y轴方向转动受力大小。

使用命令示例:

json
ros2 topic echo /rm_driver/udp_six_force
一维力Oneforce.msg ​
参数类型说明
force_fxfloat32沿x轴方向受力大小。
force_fyfloat32沿y轴方向受力大小。
force_fzfloat32沿z轴方向受力大小。(仅该数值有效)
force_mxfloat32沿x轴方向转动受力大小。
force_myfloat32沿y轴方向转动受力大小。
force_mzfloat32沿y轴方向转动受力大小。

使用命令示例:

json
ros2 topic echo /rm_driver/udp_one_force
机械臂错误std_msgs ​
参数类型说明
datauint16机械臂报错信息。

使用命令示例:

json
ros2 topic echo /rm_driver/udp_arm_err
系统错误std_msgs ​
参数类型说明
datauint16系统报错信息。

使用命令示例:

json
ros2 topic echo /rm_driver/udp_sys_err
关节错误Jointerrorcode.msg ​
参数类型说明
joint_erroruint16每个关节报错信息。
dofuint8机械臂自由度信息。

使用命令示例:

json
ros2 topic echo /rm_driver/udp_joint_error_code
机械臂弧度数据sensor_msgs ​
参数类型说明
secint32时间信息,秒。
nanosecuint32时间信息,纳秒。
frame_idstring坐标系名称。
namestring关节名称。
positionfloat64关节弧度信息。
elocityfloat64关节速度信息。
effortfloat64关节受力信息。

使用命令示例:

json
ros2 topic echo /joint_states
位姿信息geometry_msgs ​
参数类型说明
Point positionfloat64机械臂当前坐标信息:x,y,z。
Quaternion orientationfloat64机械臂当前姿态信息:x,y,z,w。

使用命令示例:

json
ros2 topic echo /rm_driver/udp_arm_position
六维力传感器外受力数据Sixforce.msg ​
参数类型说明
force_fxfloat32当前传感器沿x轴方向受外力大小。
force_fyfloat32当前传感器沿y轴方向受外力大小。
force_fzfloat32当前传感器沿z轴方向受外力大小。
force_mxfloat32当前传感器沿x轴方向转动受外力大小。
force_myfloat32当前传感器沿y轴方向转动受外力大小。
force_mzfloat32当前传感器沿z轴方向转动受外力大小。

使用命令示例:

json
ros2 topic echo /rm_driver/udp_six_zero_force
一维力传感器系统外受力数据Oneforce.msg ​
参数类型说明
force_fxfloat32当前传感器沿x轴方向受外力大小。
force_fyfloat32当前传感器沿y轴方向受外力大小。
force_fzfloat32当前传感器沿z轴方向受外力大小。(仅该数据有效)
force_mxfloat32当前传感器沿x轴方向转动受外力大小。
force_myfloat32当前传感器沿y轴方向转动受外力大小。
force_mzfloat32当前传感器沿z轴方向转动受外力大小。

使用命令示例:

json
ros2 topic echo /rm_driver/udp_one_zero_force
系统外受力数据参考坐标系std_msgs ​
参数类型说明
datauint16系统外受力数据的坐标系,0 为传感器坐标系 1 为当前工作坐标系 2 为当前工具坐标系。该数据会影响一维力和六维力传感器系统外受力数据的参考坐标系。

使用命令示例:

json
ros2 topic echo /rm_driver/udp_arm_coordinate
灵巧手力当前状态Handstatus.msg ​
参数类型说明
hand_angleuint16[6]手指角度数组,范围:0~2000。
hand_posuint16[6]手指位置数组,范围:0~1000。
hand_stateuint16[6]手指状态,0正在松开,1正在抓取,2位置到位停止,3力到位停止,5电流保护停止,6电缸堵转停止,7电缸故障停止。
hand_forceuint16[6]灵巧手自由度电流,单位mN。
hand_erruint16[6]灵巧手系统错误,1表示有错误,0表示无错误。

使用命令示例:

json
ros2 topic echo /rm_driver/udp_hand_status
机械臂当前状态Armcurrentstatus.msg ​
参数类型说明
arm_current_statusuint16机械臂状态:
0 - RM_IDLE_E // 使能但空闲状态
1 - RM_MOVE_L_E // move L运动中状态
2 - RM_MOVE_J_E // move J运动中状态
3 - RM_MOVE_C_E // move C运动中状态
4 - RM_MOVE_S_E // move S运动中状态
5 - RM_MOVE_THROUGH_JOINT_E // 角度透传状态
6 - RM_MOVE_THROUGH_POSE_E // 位姿透传状态
7 - RM_MOVE_THROUGH_FORCE_POSE_E // 力控透传状态
8 - RM_MOVE_THROUGH_CURRENT_E // 电流环透传状态
9 - RM_STOP_E // 急停状态
10 - RM_SLOW_STOP_E // 缓停状态
11 - RM_PAUSE_E // 暂停状态
12 - RM_CURRENT_DRAG_E // 电流环拖动状态
13 - RM_SENSOR_DRAG_E // 六维力拖动状态
14 - RM_TECH_DEMONSTRATION_E // 示教状态

使用命令示例:

json
ros2 topic echo /rm_driver/udp_arm_current_status
当前关节电流Jointcurrent.msg ​
参数类型说明
joint_currentfloat32当前关节电流,精度 0.001mA。

使用命令示例:

json
ros2 topic echo /rm_driver/udp_joint_current
当前关节使能状态Jointenflag.msg ​
参数类型说明
joint_en_flagbool当前关节使能状态,1为上使能,0为掉使能。

使用命令示例:

json
ros2 topic echo /rm_driver/udp_joint_en_flag
机械臂欧拉角位姿Jointposeeuler.msg ​
参数类型说明
eulerfloat32[3]当前路点姿态欧拉角,精度 0.001rad。
positionfloat32[3]当前路点位置,精度 0.000001M。

使用命令示例:

json
ros2 topic echo /rm_driver/udp_joint_pose_euler
当前关节速度Jointspeed.msg ​
参数类型说明
joint_speedfloat32当前关节速度,精度0.02RPM。

使用命令示例:

json
ros2 topic echo /rm_driver/udp_joint_speed
当前关节温度Jointtemperature.msg ​
参数类型说明
joint_temperaturefloat32当前关节温度,精度 0.001℃。

使用命令示例:

json
ros2 topic echo /rm_driver/udp_joint_temperature
当前关节电压Jointvoltage.msg ​
参数类型说明
joint_voltagefloat32当前关节电压,精度 0.001V。

使用命令示例:

json
ros2 topic echo /rm_driver/udp_joint_voltage