前言
工业机器人是机器人中非常重要的一个部分,在工业领域应用广泛而且成熟,ROS迅猛发展的过程中,也不断渗入到工业领域,从而产生了一个新的分支——ROS-Industrial(ROS-I)。简单来说,ROS-I的目的是为工业机器人提供ROS接口,从而使得ROS可以控制工业机器人。
1. ROS-I的目标
- 将ROS强大的功能应用到工业生产的过程中;
- 为工业机器人的研究与应用提供快捷有效的开发途径;
- 为工业机器人创建一个强大的社区支持;
- 为工业机器人提供一站式的工业级ROS应用开发支持。
- ROS向工业领域的渗透,可以将ROS中丰富的功能、特性带给工业机器人,比如运动规划,运动学算法,视觉感知,还有rviz,gazebo等工具,不仅降低了原本复杂严格的工业机器人研发门槛,而且在研发成本发面也具有极大的优势
2. ROS-I的架构
① ROS-I Controller Layer:这一层是机器人控制器层,作为整个框架的最底层,这一层是在具体的机器人控制器上编写指令,实现机器人状态、当前关节数据的发送,动作点位的接收及移动功能。发送、接收数据的规范由②Simple Message Layer定义,机器人控制器作为服务器。
② ROS-I Simple Message Layer:对信息传输格式进行规范,在底层和其上的层次之间加入一条规范的通道,所以向上传送和向下传送的数据必须按照这条通道规范的格式进行传送,不然就报错。上下层通讯方式为socket通讯,此层是定义socket通讯的具体协议。
③ ROS-I Interface Layer:此层提供了ROS接口。把从机器人控制器接收到的状态、当前关节数据以话题的方式发布到ROS。并通过ROS action的方式,接收ROS传送过来的点位路径数据,通过②Simple Message Layer协议发送到机器人控制器。
④ ROS-I Configuration:机器人及机器人控制器相关的配置信息。通常需提供机器人本体的URDF文件,用于在Gazebo或是RVIZ中进行机器人的建模。及parameters等指定机器人的相关参数,控制器的IP地址,各种可能用到的或用不到的信号量等等。
⑤ ROS Layer:ROS的开发层,可开发相关的ROS相关功能。
⑥ MoveIt Layer:ROS提供的机械臂开发平台。该平台提供了一系列功能包,帮助开发者完成机械臂的运动学求解、运动规划、3D感知、仿真配置等功能。
⑦ ROS-I Application Layer:这一层是针对工业应用的应用层,未来可能会包括工业的工艺规划,状态机等功能。
⑧ ROS GUI:ROS中现在已有的UI工具。
⑨ ROS-I GUI:专门针对工业机器人通用的UI工具,不过是将来才会实现。也可自己开发对应的界面。
从上边的架构我们可以看到,ROS-I在复用已有ROS框架、功能的基础上,针对工业领域进行了针对性的拓展,而且可以通用于不同厂家的机器人控制器。
使用ROS-I主要需要的开发工作位于① ROS-I Controller Layer、③ ROS-I Interface Layer及④ ROS-I Configuration。同时也需了解② ROS-I Simple Message Layer才能编写①及修改、使用③。
3. ROS-I官网
- ROS-I官方:http://wiki.ros.org/Industrial
- ROS-I教程:http://wiki.ros.org/Industrial/Tutorials
- ROS-I源码下载:https://github.com/ros-industrial/industrial_core
4. 对应Layer解析
4.1 ROS-I Simple Message Layer
ROS-I Simple Message Layer主要包含2个内容:Simple Message数据格式定义及Simple Soket的通讯端口定义。