文章目录
1. 概述
ROS-I Interface Layer作为ROS-I Controller Layer与ROS的沟通桥梁,担任着类似翻译的工作:
- 把ROS-I Controller Layer上传的ROBOT STATE通过话题的形式发布到ROS中
- 接收ROS以control_msgs::FollowJointTrajectoryAction形式传输的点位数据,以simple message格式传输到ROS-I Controller Layer。
以上两点是ROS-I Interface Layer完成的最基础的两项功能。
为了按需修改或增加交换信息,有必要解析下ROS-I Interface Layer的代码。
2. industrial_robot_client
实现ROS-I Interface Layer功能的源代码位于industrial_robot_client文件夹内,包含
- robot_state_interface
- robot_status_relay_handler
- joint_relay_handler
- joint_trajectory_interface
- joint_trajectory_downloader
- joint_trajectory_streamer
- joint_trajectory_action
2.1 robot_state_interface
2.1.1 robot_state_interface解析
2.1.2 message_manager解析
message_manager源代码位于simple_message文件夹内
2.1.3 robot_status_relay_handler解析
当message_manager接收到Robot Contoller发送的Robot Status Data(Robot Contoller Layer 2.2.1节)时,调用robot_status_relay_handler类进行处理。
2.1.4 robot_status_relay_handler解析
当message_manager接收到Robot Contoller发送的Robot Joint Data(Robot Contoller Layer 2.2.2节)时,调用joint_relay_handler类进行处理。
2.2 joint_trajectory_interface解析
2.2.1 joint_trajectory_interface解析
2.2.2 joint_trajectory_downloader解析
ROS-I控制Robot Controller动作有两种方式:
- 发送全部路径点位后,Robot Controller再依次执行点位数据
- 流控制方式,Robot Controller在接收到点位数据后马上执行
joint_trajectory_downloader类控制方式为发送全部路径点位后,Robot Controller再依次执行点位数据。
2.2.3 joint_trajectory_downloader解析
joint_trajectory_downloader类控制方式为流控制方式,Robot Controller在接收到点位数据后马上执行。