| 一、什么是 ROS機器人是一個系統(tǒng)工程,它涉及機械、電子、控制、通信、軟件等諸多學科。以前,開發(fā)一個機器人需要設計機械、畫電路板、寫驅動程序、設計通信架構、組裝集成、調試、以及編寫各種感知決策和控制算法,每一個任務都需要花費大量的時間。然而隨著技術進步,機器人產業(yè)分工開始走向細致化、多層次化,如今的電機、底盤、激光雷達、攝像頭、機械 
 ROS 是一個適用于機器人編程的框架,這個框架把原本松散的零部件耦合在了一起,為他們提供了通信架構。ROS 雖然叫做操作系統(tǒng),但并非 Windows、Mac 那樣通常意義的操作系統(tǒng),它只是連接了操作系統(tǒng)和開發(fā)的 ROS 應用程序,所以它也算是一個中間件,基于 ROS 的應用程序之間建立起了溝通的橋梁,所以也是運行在 Linux 上的運行時環(huán)境,在這個環(huán)境上,機器人的感知、決策、控制算法可以更好的組織和運行。 以上幾個關鍵詞(框架、中間件、操作系統(tǒng)、運行時環(huán)境)都可以用來描述 ROS 的特性,作為初學者我們不必深究這些概念,隨著你越來越多的使用 ROS,就能夠體會到它的作用。 二、ROS 的特點ROS 主要具有以下特點: (1)分布式、點對點 (2)支持多種語言 ROS 支持多種編程語言。C++和 Pyhton 是目前應用最廣的 ROS 開發(fā)語言。此外,ROS還支持 LISP、C#、Java、Octave 等多種不同的語言。為了支持更多應用的移植和開發(fā),ROS采用了一種語言中立的接口定義語言來實現(xiàn)各模塊之間消息傳送。通俗的理解就是,ROS的通信格式和用哪種編程語言無關,它使用的是自身定義的一套通信接口。 (3)組件化工具包豐富 ROS 采用組件化的方式將已有的工具和軟件進行了集成,比如 ROS 中三維可視化平臺Rviz,Rviz 是 ROS 自帶的一個圖形化工具,可以方便地對 ROS 的程序進行圖形化操作;ROS 中常用的物理仿真平臺 Gazebo,在該仿真平臺下可以創(chuàng)建一個虛擬的機器人仿真環(huán)境,還可以在仿真環(huán)境下添加一些需要的參數(shù)。 (4)免費且開源 ROS 具有一個龐大的開源社區(qū) ROS WIKI(http://wiki./)。ROS WIKI 中的應用代碼以維護者來分類,主要包含由 Willow Garage 公司和一些開發(fā)者設計、維護的核心庫部分,以及不同國家的 ROS 社區(qū)組織開發(fā)和維護的全球范圍的開源代碼。當前使用 ROS 開發(fā)的軟件包已經達到數(shù)千萬個,相關的機器人已經多達上千款。此外,ROS 遵從 BSD 協(xié)議,允許使用者修改和重新發(fā)布其中的應用代碼,對個人和商業(yè)應用及修改完全免費。 ROS 也存在一些問題。如:通信實時性能有限;系統(tǒng)穩(wěn)定性尚不滿足工業(yè)級要求;安全性上沒有防護措施;目前主要支持 Linux(Ubuntu)系統(tǒng)。但總體來說,ROS 為我們開發(fā)機器人帶來了許多方便。它更適合科研和開源用戶使用,如果在工業(yè)場景應用(例如無人駕駛)還需要做優(yōu)化和定制。 三、歷代 ROS 版本ROS1.0 版本發(fā)布于 2010 年,基于 PR2 機器人開發(fā)了一系列機器人相關的基礎軟件包。隨后 ROS 版本迭代頻繁,目前已經發(fā)布到了 Melodic。推薦使用 Kinetic 和 Melodic 這兩個長期支持的版本。 ROS 目前主要支持在 Linux 操作系統(tǒng)上安裝部署,它的首選開發(fā)平臺是 Ubuntu。同時,也可以在 OS X、Android、Arch、Debian 等系統(tǒng)上運行。時至今日 ROS 已經相繼更新推出了多種版本,供不同版本的 Ubuntu 開發(fā)者使用。為了提供最穩(wěn)定的開發(fā)環(huán)境,ROS 的每個版本都有一個推薦運行的 Ubuntu 版本。如下表所示: 
 如果你還沒有安裝 Ubuntu,建議選擇 18.04 版本。并且建議在本地安裝,不推薦用虛擬機,這樣兼容性更好。下載網(wǎng)址:https://www./download/desktop。 如果你已經安裝 Ubuntu,請確定系統(tǒng)版本。在終端中輸入 cat /etc/issue 確定 Ubuntu 版本號,然后選擇對應的 ROS 版本。如果沒有安裝正確的 ROS 版本,就會出現(xiàn)各種各樣的依賴錯誤,所以安裝時請謹慎。 | 
|  |