ROS(五)ROS-industrial相關
rosi層級結構
GUI:上層UI分為兩個部分:一個部分是ROS中現在已有的UI工具;另外一個部分是專門針對工業機器人通用的UI工具,不過是將來才會實現。
-
ROS Layer:ROS基礎框架,提供核心通訊機制
-
MoveIt! Layer:為工業機器人提供規劃、運動學等核心功能的解決方案
-
ROS-I Application Layer:處理工業生產的具體應用,也是針對將來的規劃
-
ROS-I Interface Layer:介面層,包括工業機器人的客戶端,可以通過 simple message協議與機器人的控制器通訊
-
ROS-I Simple Message Layer
-
ROS-I Controller Layer:機器人廠商開發的工業機器人控制器。
ROS-I目前主要關注的是如何使用這些軟體包來控制工業機械臂,也就是最下邊的三層結構。我們把這三層從上到下分析一下:
首先是ROS-I Interface Layer層,這一層需要我們設計一個機器人的客戶端節點,主要功能是完成資料從ROS到機械臂的轉發,ROS-I為我們提供了許多程式設計介面,可以幫助我們快速開發,下圖就是幾個比較常用的API,具體API的使用說明可以檢視官方文件。
對於機械臂來講,這裡最重要的是 robot_state和 joint_trajectory。 robot_state包括很多狀態資訊,ROS-I都已經幫我們定義好了,可以去industrial_msgs包裡看到訊息的定義檔案。joint_trajectory訂閱了MoveIt規劃出來的路徑訊息,然後打包傳送給最下層的機器人伺服器端。通常會把這一層的功能封裝成robot_name_driver功能包,可以看ROS-I中ABB和UR的機械臂都是這樣的,可以參考他們的原始碼進行設計。
然後是ROS-I Simple Message Layer層,這一層主要是上下兩層的通訊協議。Simple Message這個協議是基於TCP的,上下層客戶端和伺服器端的訊息互動,全部通過這一層提供的API進行打包和解析。主要實現SimpleSerialize和TypedMessage兩個類的功能即可。
最下層的ROS-I Controller Layer是廠家自己的控制器,考慮到實時性的要求,一般不會使用ROS,只要留出TCP的介面即可,接收到trajectory訊息解析之後,就按照廠家自己的演算法完成動作了。