1. 程式人生 > 實用技巧 >基於ROS搭建簡易軟體框架實現ROV水下目標跟蹤(一)--簡述

基於ROS搭建簡易軟體框架實現ROV水下目標跟蹤(一)--簡述

當前,水下領域比較小眾,開源的資料比較少。Bluerov作為成熟的產品,結合其開源的優勢,經歷了多年的技術迭代,在市場上受到極大歡迎。剛接觸水下領域時,希望能找到一個比較方便的實驗平臺,開源的Bluerov基本上算是唯一的選擇。

Bluerov本身的軟體架構,Pixhawk(ardusub)—— Raspberry Pi 3B(不能升級)——QGroundControl,非常臃腫冗餘。由於我並不熟悉嵌入式開發,所以對Bluerov進行開發感到非常棘手。當然也嘗試了在ardusub的框架基礎上引入ROS的框架,藉助MAVROS作為ROS資訊與MAVLINK之間的橋樑,但這樣做給我的感覺是整個專案將變得更加臃腫冗餘。同時,外接感測器需要額外的開發版,也意味著額外的水密艙;MAVLINK與ROS間協議有時MAVROS也無法協調等等諸多問題。再者,在開發過程中,遇到需要任意改變推進器佈局,或者需要採用不同種類的推進器的情況時,我花了較長時間也沒理出頭緒。

ROS在機器人領域得到非常廣泛的應用,開源資源非常豐富,使得開發非常方便簡潔。更進一步,ROS在機器人領域與人工智慧領域大放異彩,這些都是Pixhawk無法比擬的。未來有DIY自己的水下平臺以滿足自身需求的想法與計劃。鑑於這幾年積累了些許的ROS開發經驗,我希望能基於ROS搭建一個開源的軟體框架,適用於ROV/AUV等水下平臺。

為了驗證採用ROS搭建水下平臺軟體框架的可行性,開發了一個簡易的demo,粗略地實現了手柄控制ROV運動以及ROV跟蹤水下目標。由於只是驗證性質,開發過程中我直接忽略了諸多問題,如定向,定深,處理視訊傳輸的時延等等。從某種程度上來說,實驗的基本實現目標。

開發過程充分體現了ROS開源的強大之處,rov的基礎控制採用的是俄亥俄州大學水下機器人隊伍的開源專案(https://uwrt.engineering.osu.edu/);相機的驅動採用的是usb_cam(http://wiki.ros.org/usb_cam)開發包;目標識別採用的是darknet_ros(https://github.com/leggedrobotics/darknet_ros)開發包,即yolov3在ros下的開發工具等等。開發過程只需要將許多成熟的工程專案結合在一起,非常高效。實驗時藉助ROS的工具包能線上調參,效率遠高於Pixhawk這種調參需要燒錄的嵌入式平臺。

Demo程式碼我已上傳至github:

https://github.com/cabinx/cabin_auv_ws

軟體框架簡圖如下:

視覺模組

基礎運動模組

後續我會抽空撰寫一些文章解析各個比較關鍵的模組。

目前這個demo的框架非常簡陋,缺少定向,定深等等水下常見的模組。我個人希望這個框架能成為有點用的開源專案。也就是說,如果能有感興趣的開發者們撰寫一兩個模組完善這個框架,我會非常高興。

下一步我更傾向於選擇ROS2作為開發平臺,計劃在此demo的基礎上以ROS2構建將來水下平臺的軟體架構。