文章目录
- 知识目标
- 1. 遨博机械臂SDK二次开发接口
- 2. 机械臂MoveIt!低级控制器配置
- 3. aubo ROS中间件通讯机制
知识目标
- 学习遨博机械臂SDK开发常用接口;
- 学习MoveIt!功能包中机械臂控制器的配置通用流程;
- 学习遨博ROS驱动与底层SDK与上层move_group之间的通讯机制。
1. 遨博机械臂SDK二次开发接口
在ROS系统下与真实机械臂进行通讯,需要借助SDK提供的二次开发接口。AUBO机械臂提供了非常多种类的二次开发接口,具体包括C++、C、python等多种语言的SDK,这些SDK可以在官网进行下载。
以C++SDK为例, 下面介绍下API接口在ROS中常被调用的相关接口,其他接口介绍详见源码“aubo_driver/serviceinterface.h”头文件。
2. 机械臂MoveIt!低级控制器配置
使用aubo关节控制器可以实现通过FollowJointTrajectory-Action类型的action消息来控制模型运动,但是当需要将其与MoveIt!规划出的结果发给AUBO关节控制器时,这两者之间需要一个连接的接口,该接口以插件形式提供,即为moveit_simple_controller_manager,这个manager提供了FollowJointTrajectoryAction接口,将规划的结果以action的形式发布。
接下来讲解如何配置相关接口文件。
(1)YAML配置
要创建的第一个文件是YAML配置文件(调用它controllers.yaml并将其放在aubo_e5_moveit_config MoveIt机器人配置包的目录中)。这将为您的机器人指定控制器配置。这是一个示例文件,用于为其配置FollowJointTrajectory动作控制器。
(2)FollowJointTrajectory控制器接口
参数是:
(3)可选的允许轨迹执行持续时间参数
(4)ROS Control控制器启动文件
3. aubo ROS中间件通讯机制
在上一步中MoveIt 作为Action Client将路点信息发送出去。aubo_controller功能包中的aubo_joint_trajectory_action节点实现Action Server功能获取该信息,发布到joint_path_command主题。
aubo_robot_simulator节点订阅joint_path_command主题信息,并通过moveItController_cmd主题将MoveIt 发布的机械臂路点信息发布出去。
aubo_driver功能包向下连接真实的机械臂控制器,设置机械臂的运动参数,订阅moveItController_cmd主题消息。定时器每0.1秒查询是否有路点信息(关节角数据),如果有,则通过底层API函数robotServiceSetRobotPosData2Canbus()向机械臂控制器发送MoveIt为机械臂计算出来的路点信息(每个关节的角度值)。
aubo_driver功能包同时也获取机械臂的真实状态,并将这些参数向上发送给move_group(MoveIt!)、rosout、aubo_robot_simulator、robot_state_publisher、RViz等需要获取该消息的节点。