ROS2:
rm_example功能包说明 rm_example功能包为实现了一些基本的机械臂功能,通过该功能包我们可以实现机械臂的的控制功能,如机械臂关节运动、机械臂笛卡尔空间运动、机械臂样条曲线轨迹运动等。 这里将从以下三个方面整体介绍该功能包:
- 1.功能包使用:了解该功能包的使用。
- 2.功能包架构说明:熟悉功能包中的文件构成及作用。
- 3.功能包话题说明:熟悉功能包相关的话题,方便开发和使用。
代码链接:https://github.com/RealManRobot/ros2_rm_robot/tree/main/rm_example
1.rm_example功能包使用
1.1更换工作坐标系
首先需要运行机械臂的底层驱动节点rm_driver。
ros2 launch rm_driver rm_<arm_type>_driver.launch.py
在实际使用时需要将以上的<arm_type>
更换为实际的机械臂型号,可选择的机械臂型号有65、63、eco65、75、gen72。 例如65机械臂的启动命令:
ros2 launch rm_driver rm_65_driver.launch.py
节点启动成功后,需要执行如下指令运行我们更换工作坐标系的节点。
ros2 run rm_example rm_change_work_frame
弹出以下指令代表更换成功: 首先订阅当前的工作坐标系话题,可以在终端中输入如下指令进行验证:
ros2 topic echo /rm_driver/get_curr_workFrame_result
之后发布当前坐标系的请求。
ros2 topic pub --once /rm_driver/get_curr_workFrame_cmd std_msgs/msg/Empty "{}"
可以看到终端中弹出如下界面。
1.2得到当前的机械臂状态信息
首先需要运行机械臂的底层驱动节点rm_driver。
ros2 launch rm_driver rm_<arm_type>_driver.launch.py
在实际使用时需要将以上的<arm_type>更换为实际的机械臂型号,可选择的机械臂型号有65、63、eco65、75、gen72。
例如65机械臂的启动命令:
ros2 launch rm_driver rm_65_driver.launch.py
节点启动成功后,需要执行如下指令运行获得机械臂当前状态的节点。
ros2 run rm_example rm_get_state
弹出以下指令代表更换成功。 界面中现实的为机械臂当前的角度信息,以及机械臂当前的末端坐标位置和欧拉角姿态信息。
1.3机械臂MoveJ运动
通过如下指令可以控制机械臂进行MoveJ关节运动。 首先需要运行机械臂的底层驱动节点rm_driver。
ros2 launch rm_driver rm_<arm_type>_driver.launch.py
在实际使用时需要将以上的<arm_type>更换为实际的机械臂型号,可选择的机械臂型号有65、63、eco65、75、gen72。
例如65机械臂的启动命令:
ros2 launch rm_driver rm_65_driver.launch.py
节点启动成功后,需要执行如下指令控制机械臂进行运动。
ros2 launch rm_example rm_<dof>_movej.launch.py
命令中的dof代表机械当前的自由度信息,可以选的参数有6dof和7dof。
例如启动7轴的机械臂时需要使用如下指令。
ros2 launch rm_example rm_7dof_movej.launch.py
运行成功后,机械臂的关节将发生转动,且界面将显示如下信息。
1.4机械臂MoveJ_P运动
通过如下指令可以控制机械臂进行MoveJ_P关节运动。
首先需要运行机械臂的底层驱动节点rm_driver。
ros2 launch rm_driver rm_<arm_type>_driver.launch.py
在实际使用时需要将以上的<arm_type>
更换为实际的机械臂型号,可选择的机械臂型号有65
、63
、eco65
、75
、gen72
。
例如65机械臂的启动命令:
ros2 launch rm_driver rm_65_driver.launch.py
节点启动成功后,需要执行如下指令控制机械臂进行运动。
ros2 run rm_example movejp_demo
执行成功后界面将出现如下提示,并且机械臂运动到指定位姿。
1.5机械臂MoveL运动
通过如下指令可以控制机械臂进行MoveL关节运动。 首先需要运行机械臂的底层驱动节点rm_driver。
ros2 launch rm_driver rm_<arm_type>_driver.launch.py
在实际使用时需要将以上的<arm_type>更换为实际的机械臂型号,可选择的机械臂型号有65、63、eco65、75、gen72。
例如65机械臂的启动命令:
ros2 launch rm_driver rm_65_driver.launch.py
节点启动成功后,需要执行如下指令控制机械臂进行运动。
ros2 run rm_example movel_demo
执行成功后界面将出现如下提示,并且机械臂将进行两次运动,首先通过MoveJP运动到指定位姿,之后通过MoveL进行关节运动。
2.rm_example功能包架构文件总览
当前rm_example功能包的文件构成如下。
├── CMakeLists.txt #编译规则文件
├── doc
│ ├── rm_example10.png
│ ├── rm_example11.png
│ ├── rm_example1.png
│ ├── rm_example2.png
│ ├── rm_example3.png
│ ├── rm_example4.png
│ ├── rm_example5.png
│ ├── rm_example6.png
│ ├── rm_example7.png
│ ├── rm_example8.png
│ └── rm_example9.png
├── launch
│ ├── rm_6dof_movej.launch.py #6自由度MoveJ运动启动文件
│ └── rm_7dof_movej.launch.py #7自由度MoveJ运动启动文件
├── package.xml
└── src
├── api_ChangeWorkFrame_demo.cpp #更换工作坐标系源文件
├── api_Get_Arm_State_demo.cpp #获得机械臂状态源文件
├── api_MoveJ_demo.cpp #MoveJ运动源文件
├── api_MoveJP_demo.cpp #MoveJP运动源文件
├── api_MoveJP_Gen72_demo.cpp #适用于Gen72的MoveJP运动源文件
└── api_MoveL_demo.cpp #MoveL运动源文件
└── api_MoveL_Gen72_demo.cpp #适用于Gen72的MoveL运动源文件
3.rm_example话题说明
3.1rm_change_work_frame话题说明
以下为该节点的数据通信图: 可以看到/changeframe节点和/rm_driver之间的主要通信话题为/rm_driver/change_work_frame_result和/rm_driver/change_work_frame_cmd。/rm_driver/change_work_frame_cmd为切换请求和切换目标坐标的发布,/rm_driver/change_work_frame_result为切换结果。
3.2rm_get_state话题说明
以下为该节点的数据通信图: 可以看到/get_state节点和/rm_driver之间的主要通信话题为/rm_driver/get_current_arm_state_cmd和/rm_driver/get_current_arm_original_state_result。/rm_driver/get_current_arm_state_cmd为获取机械臂当前状态请求,/rm_driver/get_current_arm_original_state_result为切换结果。
3.3movej_demo话题说明
以下为该节点的数据通信图: 可以看到/Movej_demo节点和/rm_driver之间的主要通信话题为/rm_driver/movej_cmd和/rm_driver/movej_result。/rm_driver/movej_cmd为控制机械臂运动的请求,将发布需要运动到的各关节的弧度信息,/rm_driver/ movej_result为运动结果。
3.4movejp_demo话题说明
以下为该节点的数据通信图: 可以看到/Movejp_demo_node节点和/rm_driver之间的主要通信话题为/rm_driver/movej_p_cmd和/rm_driver/movej_p_result。/rm_driver/movej_p_cmd为控制机械臂运动规划的请求,将发布需要运动到的目标点的坐标,/rm_driver/ movej_p_result为运动结果。
3.5movel_demo话题说明
以下为该节点的数据通信图: 可以看到/Movel_demo_node节点和/rm_driver之间的主要通信话题为/rm_driver/movej_p_cmd和/rm_driver/movej_p_result还有/rm_driver/movel_cmd和/rm_driver/movel_result。/rm_driver/movej_p_cmd为控制机械臂运动规划的请求,将发布机械臂首先需要运动到的目标点的坐标, /rm_driver/ movej_p_result为运动结果,到达第一个点位后我们通过直线运动到达第二个点位,就可以通过/rm_driver/movel_cmd发布第二个点位的位姿,/rm_driver/movel_result话题代表运动的结果。