ROS2:
rm_ros_interface功能包说明 rm_ros_interface功能包的主要作用为RM机械臂在ROS2的框架下运行提供必要的消息文件,没有可执行的使用命令。
这里将从以下三个方面整体介绍该功能包:
- 1.功能包使用:了解该功能包的使用。
- 2.功能包架构说明:熟悉功能包中的文件构成及作用。
- 3.功能包话题说明:熟悉功能包相关的话题,方便开发和使用。
代码链接:https://github.com/RealManRobot/ros2_rm_robot/tree/humble/rm_ros_interfaces
rm_ros_interface功能包架构文件总览
当前rm_ros_interface功能包的文件构成如下。
├── CMakeLists.txt #编译规则文件
├── include #依赖头文件文件夹
│ └── rm_ros_interfaces
├── msg #当前的消息文件(详细请看下方介绍)
│ ├── Armcurrentstatus.msg
│ ├── Armoriginalstate.msg
│ ├── Armstate.msg
│ ├── Cartepos.msg
│ ├── Carteposcustom.msg
│ ├── Forcepositionmovejoint.msg
│ ├── Forcepositionmovepose.msg
│ ├── Force_Position_State.msg
│ ├── Getallframe.msg
│ ├── GetArmState_Command.msg
│ ├── Gripperpick.msg
│ ├── Gripperset.msg
│ ├── Handangle.msg
│ ├── Handforce.msg
│ ├── Handposture.msg
│ ├── Handseq.msg
│ ├── Handspeed.msg
│ ├── Handstatus.msg
│ ├── Jointcurrent.msg
│ ├── Jointenflag.msg
│ ├── Jointerrclear.msg
│ ├── Jointerrorcode.msg
│ ├── Jointposeeuler.msg
│ ├── Jointpos.msg
│ ├── Jointposcustom.msg
│ ├── Jointspeed.msg
│ ├── Jointteach.msg
│ ├── Jointtemperature.msg
│ ├── Jointvoltage.msg
│ ├── Liftheight.msg
│ ├── Liftspeed.msg
│ ├── Liftstate.msg
│ ├── Movec.msg
│ ├── Movej.msg
│ ├── Movejp.msg
│ ├── Movel.msg
│ ├── Ortteach.msg
│ ├── Posteach.msg
│ ├── Rmerr.msg
│ ├── Rmplusbase.msg
│ ├── Rmplusstate.msg
│ ├── Setforceposition.msg
│ ├── Setrealtimepush.msg
│ ├── Sixforce.msg
│ └── Stop.msg
├── package.xml #依赖声明文件
└── src
rm_ros_interface消息说明
关节错误代码Jointerrorcode_msg
uint16[] joint_error
uint8 dof
msg成员:
joint_error
:每个关节报错信息。dof
:机械臂自由度信息。
清除关节错误代码Jointerrclear_msg
uint8 joint_num
msg成员:
joint_num
:对应关节序号,从基座到机械臂夹爪端,序号依次为1-6或1-7。
所有坐标系名称Getallframe_msg
string[10] frame_name
msg成员:
frame_name
:返回的工作坐标系的名称数组。
关节运动Movej_msg
float32[] joint
uint8 speed
bool block
uint8 trajectory_connect
uint8 dof
msg成员:
joint
:关节角度,float类型,单位:弧度。speed
:速度百分比例系数,0-100。block
:是否为阻塞模式,bool类型,true:阻塞,false:非阻塞。trajectory_connect
:0 代表立即规划,1 代表和下一条轨迹一起规划,当为 1 时,轨迹不会立即执行。dof
:机械臂自由度信息。
直线运动Movel_msg
geometry_msgs/Pose pose
uint8 speed
uint8 trajectory_connect
bool block
msg成员:
pose
:机械臂位姿,geometry_msgs/Pose类型,x、y、z坐标(float类型,单位:m)+四元数(float类型)。speed
:速度百分比例系数,0-100。trajectory_connect
:0 代表立即规划,1 代表和下一条轨迹一起规划,当为 1 时,轨迹不会立即执行block
:是否为阻塞模式,bool类型,true:阻塞,false:非阻塞。
圆弧运动Movec_msg
geometry_msgs/Pose pose_mid
geometry_msgs/Pose pose_end
uint8 speed
uint8 trajectory_connect
bool block
uint8 loop
msg成员:
pose_mid
:中间位姿,geometry_msgs/Pose类型,x、y、z坐标(float类型,单位:m)+四元数。pose_end
:目标位姿,geometry_msgs/Pose类型,x、y、z坐标(float类型,单位:m)+四元数。speed
:速度百分比例系数,0-100。trajectory_connect
:0 代表立即规划,1 代表和下一条轨迹一起规划,当为 1 时,轨迹不会立即执行block
:是否为阻塞模式,bool类型,true:阻塞,false:非阻塞。loop
:循环次数。
关节空间规划到目标位姿Movejp_msg
geometry_msgs/Pose pose
uint8 speed
uint8 trajectory_connect
bool block
msg成员:
pose
:目标位姿,geometry_msgs/Pose类型,x、y、z坐标(float类型,单位:m)+四元数。speed
:速度百分比例系数,0-100。trajectory_connect
:0 代表立即规划,1 代表和下一条轨迹一起规划,当为 1 时,轨迹不会立即执行block
:是否为阻塞模式,bool类型,true:阻塞,false:非阻塞。
关节示教Jointteach_msg
uint8 num
uint8 direction
uint8 speed
msg成员:
num
:示教关节的序号,1~7。direction
:示教方向,0-负方向,1-正方向。speed
:速度比例1~100,即规划速度和加速度占关节最大线转速和加速度的百分比。
位置示教Posteach_msg
uint8 type
uint8 direction
uint8 speed
msg成员:
type
:坐标轴,0:X轴方向,1:Y轴方向,2:Z轴方向。direction
:示教方向,0-负方向,1-正方向。speed
:速度比例1~100,即规划速度和加速度占关节最大线转速和加速度的百分比。
姿态示教Ortteach_msg
uint8 type
uint8 direction
uint8 speed
msg成员:
type
:旋转所绕坐标轴,0:RX轴方向,1:RY轴方向,2:RZ轴方向。direction
:示教方向,0-负方向,1-正方向。speed
:速度比例1~100,即规划速度和加速度占关节最大线转速和加速度的百分比。
角度透传Jointpos_msg
float32[] joint
bool follow
float32 expand
uint8 dof
msg成员:
joint
:关节角度,float类型,单位:弧度。follow
:跟随状态,bool类型,true高跟随,false低跟随,不设置默认高跟随。expand
:拓展关节,float类型,单位:弧度。dof
:机械臂自由度信息。
位姿透传Cartepos_msg
geometry_msgs/Pose pose
bool follow
msg成员:
pose
:机械臂位姿,geometry_msgs/Pose类型,x、y、z坐标(float类型,单位:m)+四元数。follow
:跟随状态,bool类型,true高跟随,false低跟随,不设置默认高跟随。
机械臂当前状态-角度和欧拉角Armoriginalstate_msg
float32[] joint
float32[6] pose
uint16 arm_err
uint16 sys_err
uint8 dof
msg成员:
joint
:关节角度,float类型,单位:度。pose
:机械臂当前位姿,float类型,x、y、z坐标,单位:m,x、y、z欧拉角,单位:度。arm_err
:机械臂运行错误代码,unsigned int类型。sys_err
:系统错误代码,unsigned int类型。dof
:机械臂自由度信息。
机械臂当前状态-弧度和四元数Armstate_msg
float32[] joint
geometry_msgs/Pose pose
uint16 arm_err
uint16 sys_err
uint8 dof
msg成员:
joint
:关节角度,float类型,单位:弧度。pose
:机械臂当前位姿,float类型,x、y、z坐标,单位:m,x、y、z、w四元数。arm_err
:机械臂运行错误代码,unsigned int类型。sys_err
:系统错误代码,unsigned int类型。dof
:机械臂自由度信息。
夹爪力控夹取Gripperpick_msg
uint16 speed
uint16 force
bool block
uint16 timeout
msg成员:
speed
:夹爪力控夹取速度,unsigned int类型,范围:1-1000。force
:夹爪夹取力矩阈值,unsigned int类型,范围 :50-1000。block
:是否为阻塞模式,bool类型,true:阻塞,false:非阻塞。timeout
:设置返回超时时间,阻塞模式生效(以秒为单位)。
夹爪力控夹取-持续力控夹取Gripperpick_msg
uint16 speed
uint16 force
bool block
uint16 timeout
msg成员:
speed
:夹爪力控夹取速度,unsigned int类型,范围:1-1000。force
:夹爪夹取力矩阈值,unsigned int类型,范围 :50-1000。block
:是否为阻塞模式,bool类型,true:阻塞,false:非阻塞。timeout
:设置返回超时时间,阻塞模式生效(以秒为单位)。
夹爪到达指定位置Gripperset_msg
uint16 position
bool block
uint16 timeout
msg成员:
position
:夹爪目标位置,unsigned int类型,范围:1-1000,代表夹爪开口度:0-70mm。block
:是否为阻塞模式,bool类型,true:阻塞,false:非阻塞。timeout
:设置返回超时时间,阻塞模式生效(以秒为单位)。
力位混合控制Setforceposition_msg
uint8 sensor
uint8 mode
uint8 direction
int16 n
msg成员:
sensor
:传感器;0-一维力;1-六维力。mode
:Mode:0-工作坐标系力控; 1-工具坐标系力控。Direction
:力控方向;0-沿X 轴;1-沿Y 轴;2-沿 Z 轴;3-沿RX 姿态方向;4-沿 RY 姿态方向;5-沿 RZ 姿态方向。n
:力的大小,单位 N。
六维力数据Sixforce_msg
float32 force_fx
float32 force_fy
float32 force_fz
float32 force_mx
float32 force_my
float32 force_mz
msg成员:
force_fx
:沿x轴方向受力大小。force_fy
:沿y轴方向受力大小。force_fz
:沿z轴方向受力大小。force_mx
:沿x轴方向转动受力大小。force_my
:沿y轴方向转动受力大小。force_mz
:沿z轴方向转动受力大小。
设置灵巧手手势Handposture_msg
uint16 posture_num
bool block
uint16 timeout
msg成员:
posture_num
:预先保存在灵巧手内的手势序号,范围:1-40。block
:是否为阻塞模式,bool类型,true:阻塞,false:非阻塞。timeout
:阻塞模式下超时时间设置,单位:秒。
设置灵巧手动作序列Handseq_msg
uint16 seq_num
bool block
uint16 timeout
msg成员:
seq_num
:预先保存在灵巧手内的序列序号,范围:1-40。block
:是否为阻塞模式,bool类型,true:阻塞,false:非阻塞。timeout
:阻塞模式下超时时间设置,单位:秒。
设置灵巧手各自由度角度Handangle_msg
int16[6] hand_angle
bool block
msg成员:
hand_angle
:手指角度数组,范围:0-1000。另外,-1 代表该自由度不执行任何操作,保持当前状态。block
:是否为阻塞模式,bool类型,true:阻塞,false:非阻塞。
设置灵巧手速度Handspeed_msg
uint16 hand_speed
msg成员:
hand_speed
:手指速度,范围:1-1000。
设置灵巧手力阈值Handforce_msg
uint16 hand_force
msg成员:
hand_force
:手指力,范围:1-1000。
透传力位混合补偿-角度Forcepositionmovejoint_msg
float32[] joint
uint8 sensor
uint8 mode
int16 dir
float32 force
bool follow
uint8 dof
msg成员:
joint
:角度力位混合透传,单位:弧度。sensor
:所使用传感器类型,0-一维力,1-六维力。mode
:模式,0-沿工作坐标系,1-沿工具端坐标系。dir
:力控方向,0-5 分别代表 X/Y/Z/Rx/Ry/Rz,其中一维力类型时默认方向为Z 方向。force
:力的大小,精度 0.1N 或者 0.1Nm。follow
:跟随状态,bool类型,true高跟随,false低跟随,不设置默认高跟随。dof
:机械臂自由度信息。
透传力位混合补偿-位姿Forcepositionmovejoint_msg
geometry_msgs/Pose pose
uint8 sensor
uint8 mode
int16 dir
float32 force
bool follow
msg成员:
pose
:机械臂位姿信息,x、y、z位置信息+四元数姿态信息。sensor
:所使用传感器类型,0-一维力,1-六维力。mode
:模式,0-沿工作坐标系,1-沿工具端坐标系。dir
:力控方向,0-5 分别代表 X/Y/Z/Rx/Ry/Rz,其中一维力类型时默认方向为Z 方向。force
:力的大小,精度 0.1N 或者 0.1Nm。follow
:跟随状态,bool类型,true高跟随,false低跟随,不设置默认高跟随。
速度开环控制-升降机构Liftspeed_msg
int16 speed
bool block
msg成员:
speed
:速度百分比,-100-100。Speed<0:升降机构向下运动;Speed>0:升降机构向上运动;Speed=0:升降机构停止运动。block
:是否为阻塞模式,bool类型,true:阻塞,false:非阻塞。
位置闭环控制-升降机构Liftheight_msg
uint16 height
uint16 speed
bool block
msg成员:
height
:目标高度,单位 mm。speed
:速度百分比,1-100。block
:是否为阻塞模式,bool类型,true:阻塞,false:非阻塞。
获取升降机构状态-升降机构Liftstate_msg
int16 height
int16 current
uint16 err_flag
msg成员:
height
:当前升降机构高度,单位:mm,精度:1mm。current
:当前升降机构电流,精度 0.001mA。err_flag
:升降驱动错误代码,错误代码类型参考关节错误代码。
查询或设置UDP机械臂状态主动上报配置Setrealtimepush_msg
uint16 cycle
uint16 port
uint16 force_coordinate
string ip
bool aloha_state_enable
bool arm_current_status_enable
bool expand_state_enable
bool hand_enable
bool joint_speed_enable
bool lift_state_enable
bool plus_base_enable
bool plus_state_enable
msg成员:
cycle
:设置广播周期,为5ms的倍数。port
:设置广播的端口号。force_coordinate
:系统外受力数据的坐标系,0 为传感器坐标系 1 为当前工作坐标系 2 为当前工具坐标系。ip
:自定义的上报目标IP 地址。aloha_state_enable
:aloha状态信息主动上报使能。arm_current_status_enable
:机械臂当前状态主动上报使能。expand_state_enable
:拓展关节主动上报使能。hand_enable
:灵巧手数据主动上报使能。joint_speed_enable
:关节速度主动上报使能。lift_state_enable
:升降机主动上报使能。plus_base_enable
:末端设备基础信息主动上报使能。plus_state_enable
:末端设备实时信息主动上报使能。
UDP机械臂状态上报Armcurrentstatus_msg
uint16 arm_current_status
msg成员:
arm_current_status
:机械臂状态,定义如下:bash0 - 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 // 示教状态
UDP关节电流上报Jointcurrent_msg
float32[] joint_current
msg成员:
joint_current
:当前关节电流,精度 0.001mA。
UDP关节使能状态上报Jointenflag_msg
bool[] joint_en_flag
msg成员:
joint_en_flag
:当前关节使能状态 ,1 为上使能,0 为掉使能。
UDP机械臂欧拉角位姿上报Jointposeeuler_msg
float32[3] euler
float32[3] position
msg成员:
euler
:当前路点姿态欧拉角,精度 0.001rad。position
:当前路点位置,精度 0.000001M。
UDP关节速度上报Jointspeed_msg
float32[] joint_speed
msg成员:
joint_speed
:当前关节速度,精度0.02RPM。
UDP关节温度上报Jointtemperature_msg
float32[] joint_temperature
msg成员:
joint_temperature
:当前关节温度,精度 0.001℃。
UDP关节电压上报Jointvoltage_msg
float32[] joint_voltage
msg成员:
joint_voltage
:当前关节电压,精度 0.001V。
UDP错误上报Rmerr_msg
uint8 err_len
int32[] err
msg成员:
err_len
:当前报错数量,uint8。err
:当前报错代码,int32。
末端设备基础信息Rmplusbase_msg
string manu
int8 type
string hv
string sv
string bv
int32 id
int8 dof
int8 check
int8 bee
bool force
bool touch
int8 touch_num
int8 touch_sw
int8 hand
int32[12] pos_up
int32[12] pos_low
int32[12] angle_up
int32[12] angle_low
int32[12] speed_up
int32[12] speed_low
int32[12] force_up
int32[12] force_low
msg成员:
manu
:设备厂家。type
:设备类型 1:两指夹爪 2:五指灵巧手 3:三指夹爪。hv
:硬件版本。sv
:软件版本。bv
:boot版本。id
:设备ID。dof
:自由度。check
:自检开关。bee
:蜂鸣器开关。force
:力控支持。touch
:触觉支持。touch_num
:触觉个数。touch_sw
:触觉开关。hand
:手方向 1 :左手 2: 右手。pos_up
:位置上限,单位:无量纲。pos_low
:位置下限,单位:无量纲。angle_up
:角度上限,单位:0.01度。angle_low
:角度下限,单位:0.01度。speed_up
:速度上限,单位:无量纲。speed_low
:速度下限,单位:无量纲。force_up
:力上限,单位:0.001N。force_low
:力下限,单位:0.001N。
末端设备基础信息Rmplusstate_msg
int32 sys_state
int32[12] dof_state
int32[12] dof_err
int32[12] pos
int32[12] speed
int32[12] angle
int32[12] current
int32[18] normal_force
int32[18] tangential_force
int32[18] tangential_force_dir
uint32[12] tsa
uint32[12] tma
int32[18] touch_data
int32[12] force
msg成员:
sys_state
:系统状态。dof_state
:各自由度当前状态。dof_err
:各自由度错误信息。pos
:各自由度当前位置。speed
:各自由度当前速度。angle
:各自由度当前角度。current
:各自由度当前电流。normal_force
:自由度触觉三维力的法向力。tangential_force
:自由度触觉三维力的切向力。tangential_force_dir
:自由度触觉三维力的切向力方向。tsa
:自由度触觉自接近。tma
:自由度触觉互接近。touch_data
:触觉传感器原始数据。force
:自由度力矩。
自定义高跟随模式角度透传Jointposcustom_msg
float32[] joint
bool follow
float32 expand
uint8 dof
uint8 trajectory_mode
uint8 radio
msg成员:
joint
:关节角度,float类型,单位:弧度。follow
:跟随状态,bool类型,true高跟随,false低跟随,不设置默认高跟随。expand
:拓展关节,float类型,单位:弧度。dof
:机械臂自由度信息。trajectory_mode
:设置高跟随模式下,支持多种模式,0-完全透传模式、1-曲线拟合模式、2-滤波模式。radio
:设置曲线拟合模式下平滑系数(范围0-100)或者滤波模式下的滤波参数(范围0-1000),数值越大表示平滑效果越好。
自定义高跟随模式位姿透传Carteposcustom_msg
geometry_msgs/Pose pose
bool follow
uint8 trajectory_mode
uint8 radio
msg成员:
pose
:机械臂位姿,geometry_msgs/Pose类型,x、y、z坐标(float类型,单位:m)+四元数。follow
:跟随状态,bool类型,true高跟随,false低跟随,不设置默认高跟随。trajectory_mode
:设置高跟随模式下,支持多种模式,0-完全透传模式、1-曲线拟合模式、2-滤波模式。radio
:设置曲线拟合模式下平滑系数(范围0-100)或者滤波模式下的滤波参数(范围0-1000),数值越大表示平滑效果越好。
主要为套用API实现的一些机械臂本体的功能,其详细介绍和使用在此不详细展开,可以通过RM-机械臂ROS2话题详细说明进行查看。