西門子西南代理商PLC中國(授權)一級代理
| 更新時間 2024-12-02 08:00:00 價格 請來電詢價 西門子變頻器 西門子觸摸屏 西門子伺服電機 西門子PLC 西門子直流調速器 西門子電纜 聯系電話 13922889745 聯系手機 18475208684 聯系人 向小姐 立即詢價 |
ROS是什么
ROS的誕生時間并不長,但它在很短的時間里就從一個公司內部項目發展為機器人開發的事實標準。本文以ROS誕生的起因為切入點,探索ROS解決了機器人上的哪些問題,使得它能夠被機器人行業廣泛地采納。
ROS的誕生相比于機器人的發展歷史來說并不算久遠,它在2010年3月才推出了第一個發行版本,和Linux的誕生一樣,ROS并不是忽然之間橫空出世的,它的雛形Zui早可以追溯到2007年左右斯坦福大學人工智能實驗室的STAIR機器人項目。STAIR機器人項目希望完成一個服務機器人原型,在機器視覺的輔助下,可以在復雜環境中運動,還可以通過機械臂操控環境中的物體。STAIR機器人配備了一個運動底盤用于移動,一個小型機械臂用于抓取周圍物體,還配備了立體攝像頭和激光雷達用于感知周圍的環境,如圖所示。
當時負責STAIR機器人項目軟件架構設計和開發的是美國斯坦福大學博士生摩根·奎格利(Morgan Quigley),隨著項目開發的推進,他逐漸意識到從軟件開發的角度來看,將各種功能集成在一個機器人上非常不容易,也是從那時他開始考慮采用“分布式”的方式來連接不同的模塊,并將這一概念成功應用到機器人軟件系統中,取名為Switchyard。
摩根·奎格利的導師是吳恩達教授,吳恩達教授當時帶領的人工智能實驗室正在和Willow Garage公司(見下圖1)合作,幫助它們開發PR2(Personal Robot 2nd)機器人,如下圖2所示。
有類似項目開發經驗的摩根·奎格利自然也加入并將開發Switchyard的經驗充分應用到該項目中,而PR2項目中的機器人軟件系統名正是“ROS”。
2009年,摩根·奎格利、吳恩達和Willow Garage公司的工程師們在當年的IEEE國際機器人與自動化會議上發表了“ROS: An Open-Source Robot Operating System”一文,正式向外界介紹了ROS。因為摩根·奎格利對于ROS的誕生有著杰出的貢獻,所以他也被稱為ROS之父,而此時的摩根·奎格利還在攻讀博士學位尚未畢業。
2010 年,PR2機器人正式對外發布,作為機器人配套的軟件系統,ROS的第一個正式發布版本也一起發布,即ROS 1.0。在ROS發布之后,受到了學術界和機器人產業的熱烈歡迎,并在2012年舉辦了第一次開發者大會ROSCon 2012。同年為了推動ROS的發展,Willow Garage公司成立了非營利組織“開源機器人基金會”(Open Source Robot Foundation,OSRF),并在2013年將ROS的開發和維護工作從Willow Garage公司移交到OSRF基金會。直到現在,ROS依然是由OSRF在管理和維護。
從ROS的誕生的背景來看,它主要解決一個復雜的機器人系統中,眾多的外部設備和功能之間結合很困難的問題,而它給出的解決思路是“分布式”,即將各個功能模塊都獨立出來,再通過一套標準的協議來連接各個獨立的模塊,使每個模塊只需要負責一個具體的功能即可。例如機器人需要使用激光雷達實現導航時,激光雷達只需要捕獲周圍的環境信息,由定位軟件來根據雷達的數據確定機器人的當前位置,路徑規劃軟件根據機器人當前位置和目標位置來規劃機器人的路徑,再由機器人底盤驅動軟件根據規劃出的路徑控制運動底盤上的電動機運動,使機器人Zui終到達目標位置。這樣的好處在于,將機器人導航這樣一個復雜的功能拆解成了若干個小的模塊,降低了開發的難度,并且各個模塊之間相互獨立,通過一套協議來溝通,軟件系統的耦合度也很低,當需要換更換機器人上搭載的硬件時,只需要修改對應的模塊軟件,不需要對整個軟件系統進行大幅度的修改。
ROS官方對ROS的定義是:機器人操作系統(ROS)是用于編寫機器人軟件的靈活框架。它是工具、庫和規范的集合,用于簡化在各種機器人平臺上創建復雜而強大的機器人行為的任務。下圖所示為zhuming的ROS等式,ROS=通信架構+工具+功能+生態系統。
通信架構提供了一套標準的通信協議,工具為開發過程的調試提供了很大的便利,至于功能,因為有了一套標準的通信協議,所以不同開發者開發的機器人和功能之間可以很容易組合起來,這樣就會有很多軟件可以直接使用,避免了重復開發。眾多的開發者、使用ROS的企業和組織共同構建了生態系統,這個生態中包含了各種ROS學習交流會議、論壇以及支持或者使用ROS的設備,這使得ROS無論是從學習還是應用的角度來看,都成為一項通用的技能。
從使用ROS的經驗來看,ROSZui令人滿意的有兩點,第一是它將各個功能模塊拆解后極大地降低了機器人的開發難度,機器人本身是一個相對復雜的系統,完全從0去構建涉及機械、電子電路、嵌入式、運動控制、上位機軟件、算法等多個技術領域,而這些跨度極大的技能通常很難由一個人所掌握,團隊中將各個功能模塊分配給不同的人來完成,因為有標準的協議,負責不同模塊的開發者只需要遵循協議,Zui終就可以很容易地將所有人的工作整合成一套完整的機器人系統。
第二是ROS通過多年的發展已經成為機器人開發的事實標準,這就構建出了一個良好的ROS生態。現在從市面上能買到的很多設備,例如運動底盤、激光雷達、相機、姿態傳感器等開發廠商都會提供對應的ROS驅動,減少了用戶的無意義重復工作。通過已有的設備驅動和各類功能軟件,用戶可以輕松地構建出產品原型,因此有越來越多的公司開始傾向使用ROS,這也會使各類設備廠商更有積極性去支持ROS。
ROS開發環境搭建
在開發ROS功能包前需要先搭建一個開發環境,ROS功能包的編譯等系統工具ROS已經有提供,只需要給自己一個寫代碼的環境就可以。
Zui簡單的環境可以直接使用文本編輯器寫代碼+終端編譯代碼,這種方法的弊端是缺少自動補全或者語法檢查之類基礎功能,開發效率不高。因此人們更傾向于使用一些集成開發環境(Integrated Development Environment,IDE)軟件作為開發環境。
ROS并沒有指定使用某一款特定的IDE,在官方的推薦列表中有十多款軟件可選,這里推薦使用的是微軟的VSCode(Visual Studio Code)及其提供的插件作為后續的開發環境。
在Ubuntu中,安裝VSCodeZui簡單的方式是通過軟件中心來安裝,搜索“vscode”,單擊“Install”按鈕即可安裝,如圖所示。
Ubuntu操作系統中使用的是deb格式的軟件安裝包,下載時選擇deb格式單擊“Save File”按鈕保存即可,下載完成后可以通過dpkg命令手動安裝。例如將軟件安裝包下載在當前用戶的Downloads目錄下,那么執行sudo dpkg -i ~/Downloads/文件名即可安裝。
通過軟件商店或者安裝包的方式安裝完成后,在終端中執行code即可啟動VSCode,由于后續要頻繁地使用到VSCode,這里建議將它固定在左側程序塢(Dock)欄中以方便使用。
下圖所示是VSCode的界面,單擊右上角的“File”→“Open Folder”,選擇第2章中創建的工作空間“catkin_ws”目錄,然后單擊“OK”按鈕。這樣左側的Explorer欄中就有了catkin_ws工作空間的目錄。
打開src目錄中的CMakeLists.txt文件,這個文件應該是像普通文本一樣顯示的,沒有語法關鍵字高亮等特性。這是由于VSCode中語言的支持是通過插件來實現的,插件是獨立于VSCode之外單獨安裝的。為了能夠實現語法高亮、自動檢查等功能,需要在VSCode中安裝相應的插件。
VSCode中的插件可以通過左側一欄中的 按鈕安裝,單擊展開后會有一個搜索框,在本書涉及的ROS開發中主要會用到以下幾個插件:C/C++、Python、CMake Tools和ROS。如圖所示,搜索插件名稱,單擊選中插件,在詳情頁單擊“install”按鈕即可完成插件的安裝。
通過以上幾個插件,在VSCode中就可以實現語法高亮顯示、自動補全等操作,這些功能會極大地提升開發的效率。
聯系方式
- 電 話:13922889745
- 經理:向小姐
- 手 機:18475208684
- 微 信:18475208684