Skip to content

rm_control功能包说明

rm_control功能包为实现moveit2控制真实机械臂时所必须的一个功能包,该功能包的主要作用为将moveit2规划好的路径点进行进一步的细分,将细分后的路径点以透传的方式给到rm_driver,实现机械臂的规划运行。 这里将从以下三个方面整体介绍该功能包:

  • 1.功能包使用:了解该功能包的使用。
  • 2.功能包架构说明:熟悉功能包中的文件构成及作用。
  • 3.功能包话题说明:熟悉功能包相关的话题,方便开发和使用。

代码链接:https://github.com/RealManRobot/ros2_rm_robot/tree/main/rm_control

1.rm_control功能包使用

1.1功能包基础使用

首先配置好环境完成连接后我们可以通过以下命令直接启动节点,运行rm_control功能包。

ros2 launch  rm_control rm_<arm_type>_control.launch.py

在实际使用时需要将以上的<arm_type>更换为实际的机械臂型号,可选择的机械臂型号有65、63、eco65、75、gen72。 例如65机械臂的启动命令:

ros2 launch  rm_control rm_65_control.launch.py

节点启动成功后,将显示以下画面。 image 在单独启动该功能包的节点时并不发挥作用,需要结合rm_driver功能包和moveit2的相关节点一起使用才能发挥作用,详细请查看《rm_moveit2_config详解》相关内容。

1.2功能包进阶使用

在rm_control功能包中也有一些参数可以进行配置,由于参数并不是很多,这边将参数直接在launch文件中进行了配置。 image 如上图所示第一个红框框出的位置为文件的路径,第二个框出的位置为当前可配置的参数。
参数follow:代表当前透传使用的跟随模式,true:高跟随,false:低跟随。高跟随即机械臂运动方式与透传完全一致,需要根据透传的速率和机械臂的速度、加速度参数进行较详细的计算,使用门槛较高,但控制精细。低跟随即机械臂会基本根据透传速率和速度、加速度向透传点运动,若有来不及到达的点可能会有丢弃现象发生,使用门槛低,控制不太精细,但基本满足使用。
参数arm_type:代表当前使用的机械臂型号,可以选择的参数有65(65系列)、651(eco65)、632(63系列)、75(75系列)、72(GEN72 系列)。
再实际使用时,我们选择对应的launch文件启动时会自动选择正确的型号,若有特殊要求可在此处进行相应的参数修改,修改之后需要在工作空间目录下进行重新编译,之后修改的配置才会生效。
在工作空间目录运行colcon build指令。

colcon build

编译成功后可按如上指令进行功能包启动。

2.rm_control功能包架构说明

2.1功能包文件总览

当前rm_control功能包的文件构成如下。

├── CMakeLists.txt                  #编译规则文件
├── doc                             #辅助文档、图片存放文件夹
│   ├── rm_control1.png             
│   └── rm_control2.png             
├── include                         #依赖头文件文件夹
│   ├── cubicSpline.h               #三次样条插值头文件
│   └── rm_control.h                #rm_control头文件
├── launch
│   ├── rm_63_control.launch.py     #63启动文件
│   ├── rm_65_control.launch.py     #65启动文件
│   ├── rm_75_control.launch.py     #75启动文件
│   ├── rm_eco65_control.launch.py  #eco65启动文件
│   └── rm_gen72_control.launch.py  #gen72启动文件
├── package.xml                     #依赖声明文件
├── README_CN.md
├── README.md
└── src
    └── rm_control.cpp              #代码源文件

3.rm_control话题说明

如下为该功能包的话题说明:

  Subscribers:
    /parameter_events: rcl_interfaces/msg/ParameterEvent
  Publishers:
    /parameter_events: rcl_interfaces/msg/ParameterEvent
    /rm_driver/movej_canfd_cmd: rm_ros_interfaces/msg/Jointpos
    /rosout: rcl_interfaces/msg/Log
  Service Servers:
    /rm_control/describe_parameters: rcl_interfaces/srv/DescribeParameters
    /rm_control/get_parameter_types: rcl_interfaces/srv/GetParameterTypes
    /rm_control/get_parameters: rcl_interfaces/srv/GetParameters
    /rm_control/list_parameters: rcl_interfaces/srv/ListParameters
    /rm_control/set_parameters: rcl_interfaces/srv/SetParameters
    /rm_control/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically
  Service Clients:

  Action Servers:
    /rm_group_controller/follow_joint_trajectory: control_msgs/action/FollowJointTrajectory
  Action Clients:

Publishers:代表其当前发布的话题,其最主要发布的话题为:

  • rm_driver/movej_canfd_cmd,我们通过该话题将细分后的点发布给rm_driver节点,rm_driver节点再通过透传的指令方式给到机械臂执行相对应的路径。

Action Servers:代表其接受和发布的动作信息:

  • rm_group_controller/follow_joint_trajectory动作为rm_control与moveit2进行通信的桥梁,通过该动作rm_control接收到moveit2规划的路径,rm_control会将这些路径进行进一步细分由以上话题给到rm_driver。