
01
ROS(Robot Operating System)起源于2007年斯坦福大學人工智能實驗室與機器人技術公司Willow Garage的項目合作,ROS的首要設計目標是提高機器人研發領域的代碼復用率。2010年Willow Garage公司發布了開源的機器人操作系統ROS,ROS的誕生大大提高了機器人軟件的開發效率。即使是小型的初創公司,也能在短期內開發復雜的機器人應用。ROS是學術界使用最廣泛的框架,也是機器人領域的普遍標準,越來越多的機器人廠商都已使用ROS,其中占工業市場份額最大的機器人四大家族也都有基于ROS開發的產品。


Kuka LBR iiwa 機械臂
無人駕駛的興起,也促進了ROS的進一步發展(無人駕駛汽車相當于一個大號的移動機器人)。寶馬、博世等世界知名整車廠及零部件供應商,也都將其作為無人駕駛汽車的重要工具。

2018年春晚,百度Apollo無人車隊跨越港珠澳大橋
谷歌、百度、微軟、亞馬遜等眾多知名企業的平臺和產品也均支持ROS。美國宇航局NASA,基于ROS開發了宇航機器人,并應用在國際空間站中。

Robonaut2 在國際空間站中工作
02
ROS基于功能把整個系統分成多個模塊,當模塊需要聯調時,通過框架可以把各個模塊快速的集成到一起,建立復雜的系統以實現復雜的功能。ROS框架中有數千個基礎庫,能夠支持應用的快速開發,很多現存的開源項目的代碼都已集成到ROS平臺中,例如:OpenCV(視覺),Player(驅動、運動控制和仿真),OpenRAVE(軌跡規劃),SLAM(定位,建圖,導航)等等。
ROS中的軟件以Package的方式組織起來,每個Package由節點(Node)、依賴庫、數據套、配置文件、第三方軟件、或者任何其他邏輯構成。ROS Package是一種便于軟件重復使用的結構。
目前,工業機器人領域對于機器視覺、自主路徑規劃等智能化功能需求日益增長。然而,在傳統的工業機器人系統中添加智能化功能模塊時需要修改大量的源碼,要耗費大量的人力資源和成本投入。通過部署ROS系統,PLCnext用戶可以直接從海量的ROS軟件池中獲取ROS功能包。從而實現智能工業機器人系統的快速開發。

ROS 部署在PLCnext上的架構
從軟件構架的角度說,ROS是一種基于消息傳遞通信的分布式多進程框架。ROS系統通常由大量節點組成,其中任何一個節點均可與其他節點進行通信。ROS作為一個靈活的操作系統,其上的節點具有很大的隨意性。它們可以位于不同的計算機上,甚至可以位于不同的網絡中。上述的靈活性使得ROS可以適應眾多不同的應用場景。

ROS Network
ROS 的主要組件包括ROS Master、ROS Node和ROS Service三種。ROS Master是一個超級管理員,管理著系統中所有的節點。ROS Master的主要功能是命名服務,它存儲了啟動時需要的運行時參數,上游(消息發布)節點和下游(消息接收)節點的連接名、連接方式,和已有ROS服務的連接名。
ROS Node是真正的執行模塊(每個ROS node都是一個獨立的可執行程序),對收到的消息進行處理,并且發布新的消息給下游節點。ROS Service是一種特殊的ROS節點,它相當于一個服務節點,接受請求并返回請求的結果。
下圖展示了ROS通信的流程順序,首先節點會向master advertise或者subscribe感興趣的topic。當創建連接時,下游節點會向上游節點TCP Server發布連接請求,等連接創建后,上游節點的消息就會通過連接送至下游節點。

ROS Node通信流程
03

下面借助PLCnext控制器AXC F2152與TurtleBot3,讓大家直觀的感受一下ROS系統的工作方式:
AXC F 2152:基于最新的PLCnext Technology,突破了編程語言的限制,融合了傳統控制器的可靠性和智能終端的強大應用,面向開源,面向未來的新一代控制器;
TurtleBot3:是一款模塊化、可編程的基于ROS的移動機器人,由Willow Garage公司開發。其內部已集成SLAM導航功能包、遙控功能包以及與行駛相關的bringup等功能包;
首先,需要在PLCnext中創建ROS Master,它負責管理我們的整個系統,接著創建Instruction Node,它負責從本地IO(I/O modules)中讀取數據(前進,后退,速度控制指令),將獲取到的數據打包成會話(Topic)的格式,然后發布(Publish)。TurtleBot3中的指令接收節點Motion Node Group(實際上不止一個節點,為便于理解,就用Node Group指代),負責訂閱(Subscribe)這個類型的會話(Topic)。當PLCnext中的Instruction Node接收到本地IO中傳來的指令時,就會立刻通過TCP/IP協議發送給TurtleBot3中的Motion節點,從而控制車輪的轉動。

同樣,在TurtleBot3移動的過程中,SLAM Node會基于激光雷達傳來的數據,進行即時的定位與地圖的構建,并將定位和建圖的數據封裝成會話(Topic)的格式,然后發布(Publish)。PC端仿真建圖軟件的節點Simulation Node,訂閱(Subscribe)這個類型的會話(Topic)。于是在TurtleBot3移動的過程中,我們就能夠在PC端的仿真軟件中看見及時的定位與建圖的更新。

ROS Node 工作流圖
下面視頻便是PLCnext上搭載ROS Master與TurtleBot3機器人及PC機路徑規劃仿真的概念演示。
共0條 [查看全部] 網友評論