一、简述 机器人控制系统是一个复杂设计,针对不同功能目标有不同的开发路线,若想开发一个通用的控制系统难度会非常高,因此确定目标需求非常重要,这里所述的目标需求有两种,一种为开发基本的控制系统再根据实际条件进行功能添加开发,另外一种为针对特殊情况开发专门的控制系统。 目标需求设计好后,根据要求可以搭建简单的框架,对于ROS开发来说,一个好的框架是开发的第一步,也是最重要的一步,值得花费大量的时间和精力,因为后续所有功能开发都建立于框架之上,根据框架去设计功能节点和接口,若后期对框架进行大规模调整会对系统整体产生极大影响,这点需要非常注意。  

二、目标设计

此处目标为设计一个可实现物体筛选和抓取的机器人控制系统,目标可简单转述为一个基本的机械臂控制系统和一个视觉的添加功能,属于第一种目标需求,具体要求如下:  

2.1 机械臂控制系统

  1. 说明
目标控制机械臂为常见的六轴构型,需要实现机械臂的运动控制,可分别采用示教模式和工作模式对机械臂进行控制,控制系统需带交互接口和功能接口。
  1. 基本方案设计
  • 运动控制以MoveIt!为核心,辅以Service-Client通讯结构构建运动控制系统核心部分,实现机械臂的运动控制,轨迹规划等,集成机械臂相关的所有控制算法。
  • 控制接口控制接口分为软件接口和硬件接口,软件接口面向功能模块,硬件接口面向硬件。软件接口采用ROS的通讯模式实现,硬件接口可采用ros_control,ros_industral或者actionlib,通讯协议根据需要可采用串口或者ethercat。
  • 交互接口交互接口为人机界面,面向用户,可采用Qt或者rosbridge+WEB实现。
 

2.2 视觉功能

  1. 说明视觉识别目标为实现特定物体的识别与定位。
  2. 基本方案设计相机采用RGBD相机,结合图像数据和点云数据实现物体的识别与定位。视觉算法采用OpenCV+TensorFlow+PCL实现,并通过软件接口与机械臂控制系统结合。
 

三、构建框架

因ROS在设计之初考虑到了诸多方面,冗余较大,因此框架可以采用多种方式实现,不一定要按照某一特定方式进行开发。

3.1 框架参考

  • ROS-Industrial
1   Kungfu Arm Architecture   2   HRMRP   3   ROS-I Interface for COMAU Robots   4  

3.2 框架设计

  5  
  • 交互模块 交互部分不采用ROS提供的rqt实现,独立于ROS,改为通过以下两种思路实现:
    • 采用qt开发,在qt中建立ros节点,实现qt界面与ros通讯(此处采用该方式实现)。
    • 开发交互接口,消息通过rosbridge或者其他通讯接口(蓝牙串口等)与GUI界面通讯。
  • ROS 之后博文详述。
  • 硬件 硬件通过TCP/IP与控制系统通讯,数据通过硬件接口转换为通用的ROS数据传输到ROS系统中。

四、工作空间架构

 
├── robot_description 机械臂相关参数描述
├── robot_bringup 机械臂启动launch
├── robot_control 机械臂控制
├── robot_gazebo gazebo配置
├── robot_gui 控制界面
├── robot_moveit_config moveit配置
├── robot_msgs 自定义消息,服务器
├── robot_vision 视觉
├── robot_driver 机械臂驱动接口
├── robot_ikfast_hand_plugin ikfast逆解pkg
├── trac_ik_kinematics_plugin trac_ik插件
└── trac_ik_lib trac_ik逆解pkg
  工作空间各包根据其功能可简单细分如下,实际上部分包功能存在重叠,同时部分包的实际上是可以合并,但为了结构更加清晰和后续的维护所以分开。 上面列出的包为基础框架部分内容,根据需求还会有功能依赖的相关包,如视觉相关的(cv_bridge)和运动规划相关的(descartes)等。
  • 机械臂本体相关
和机械臂本体相关的关节参数,逆解及moveit配置,这部分可以根据控制对象不同而更换,使控制系统可以控制不同的机械臂。  
robot_description 机械臂相关参数描述
robot_moveit_config moveit配置
robot_ikfast_hand_plugin ikfast逆解pkg
trac_ik_kinematics_plugin trac_ik插件
trac_ik_lib trac_ik逆解pkg
 
  • 机械臂控制
robot_control 机械臂控制
robot_gui 控制界面
 
  • 仿真
仿真包括两部分,一部分为rviz(rviz实际上不包含物理参数,只作显示)  
robot_gazebo gazebo配置
 
  • 驱动
相关包有ros_control和ROS-I simple_message。  
robot_driver 机械臂驱动接口
 
  • 视觉
robot_vision 视觉
 
  • 辅助
robot_bringup 机械臂启动launch
robot_msgs 自定义消息,服务器
   

参考

ROS-Industrial ROS-I Interface for COMAU Robots 功夫手:一款基于ROS的工业机器人 HRMRP机器人的设计