一、簡述
機器人控制系統是一個複雜設計,針對不同功能目標有不同的開發路線,若想開發一個通用的控制系統難度會非常高,因此確定目標需求非常重要,這裏所述的目標需求有兩種,一種爲開發基本的控制系統再根據實際條件進行功能添加開發,另外一種爲針對特殊情況開發專門的控制系統。
目標需求設計好後,根據要求可以搭建簡單的框架,對於ROS開發來說,一個好的框架是開發的第一步,也是最重要的一步,值得花費大量的時間和精力,因爲後續所有功能開發都建立於框架之上,根據框架去設計功能節點和接口,若後期對框架進行大規模調整會對系統整體產生極大影響,這點需要非常注意。
二、目標設計
此處目標爲設計一個可實現物體篩選和抓取的機器人控制系統,目標可簡單轉述爲一個基本的機械臂控制系統和一個視覺的添加功能,屬於第一種目標需求,具體要求如下:
2.1 機械臂控制系統
- 說明
目標控制機械臂爲常見的六軸構型,需要實現機械臂的運動控制,可分別採用示教模式和工作模式對機械臂進行控制,控制系統需帶交互接口和功能接口。
- 基本方案設計
-
運動控制
以MoveIt!爲核心,輔以Service-Client通訊結構構建運動控制系統核心部分,實現機械臂的運動控制,軌跡規劃等,集成機械臂相關的所有控制算法。
-
控制接口
控制接口分爲軟件接口和硬件接口,軟件接口面向功能模塊,硬件接口面向硬件。
軟件接口採用ROS的通訊模式實現,硬件接口可採用ros_control,ros_industral或者actionlib,通訊協議根據需要可採用串口或者ethercat。
-
交互接口
2.2 視覺功能
-
說明
視覺識別目標爲實現特定物體的識別與定位。
-
基本方案設計
相機採用RGBD相機,結合圖像數據和點雲數據實現物體的識別與定位。
視覺算法採用OpenCV+TensorFlow+PCL實現,並通過軟件接口與機械臂控制系統結合。
三、構建框架
因ROS在設計之初考慮到了諸多方面,冗餘較大,因此框架可以採用多種方式實現,不一定要按照某一特定方式進行開發。
3.1 框架參考
- ROS-Industrial
- Kungfu Arm Architecture
- HRMRP
- ROS-I Interface for COMAU Robots
3.2 框架設計
- 交互模塊
交互部分不採用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-I Interface for COMAU Robots
胡春旭,熊梟,任慰,何頂新. 基於嵌入式系統的室內移動機器人定位與導航[J/OL]. 華中科技大學學報(自然科學版),2013,41(S1):254-257+266. (2014-01-10)[2017-08-15].