6
本文作者: 新智造 | 2017-03-27 19:40 |
雷鋒網(wǎng)新智造按:本文來(lái)源于知乎,作者卓求,雷鋒網(wǎng)新智造已獲得授權(quán),也歡迎大家關(guān)注作者的知乎賬號(hào),將不定期更新ROS, Robotics,Python, Matlab相關(guān)內(nèi)容總結(jié)。
第一次接觸ROS是在沈陽(yáng)自動(dòng)化所做項(xiàng)目的時(shí)候,那時(shí)候我才知道自己非常感興趣的機(jī)器人領(lǐng)域有一個(gè)叫做ROS(Robot Operating System)的平臺(tái)。仔細(xì)了解之后才知道ROS被機(jī)器人界看作是一套準(zhǔn)標(biāo)準(zhǔn)平臺(tái),很多人將其比作是手機(jī)界的安卓,電腦界的微軟。在我看來(lái)ROS最大的優(yōu)點(diǎn)在于靈活、低耦合、分布式、開(kāi)源以及功能強(qiáng)大而豐富的第三方功能包(類(lèi)似于編程語(yǔ)言中的庫(kù))。于是我乘著畢設(shè)的機(jī)會(huì)申請(qǐng)了做ROS相關(guān)的項(xiàng)目--自主導(dǎo)航小車(chē)PlantBot。
ROS雖然叫操作系統(tǒng),但是真正底層的任務(wù)調(diào)度、編譯、尋址等任務(wù)還是由Linux操作系統(tǒng)完成,也就是ROS充其量是一個(gè)運(yùn)行在Linux上的次級(jí)操作系統(tǒng)。關(guān)于ROS的介紹有一篇大牛寫(xiě)的很不錯(cuò)的文章:機(jī)器人操作系統(tǒng)ROS | 簡(jiǎn)介篇。
第一步,安裝Linux和ROS
學(xué)習(xí)ROS首先要安裝Linux,為了不拋棄原Windows操作系統(tǒng),有兩個(gè)選擇:一個(gè)是在VMvare等虛擬機(jī)上運(yùn)行,另一個(gè)是安裝Windows和Linux的雙系統(tǒng)。我的建議是電腦有足夠的空間的話,最好安裝雙系統(tǒng),這樣在Linux上使用ROS時(shí)運(yùn)行速度更快。虛擬機(jī)跑ROS我沒(méi)嘗試過(guò),但是網(wǎng)上也看到有人用虛擬機(jī)學(xué)習(xí)ROS,如果電腦不好裝雙系統(tǒng)或者內(nèi)存不夠的話可以嘗試使用虛擬機(jī)。
Linux 有不同的發(fā)行版本,目前對(duì)ROS支持最好的版本是Ubuntu 14.04 LTS (Long Term Support),對(duì)應(yīng)的ROS的版本推薦為indigo,官網(wǎng)安裝主頁(yè)已更新為最新版本的Ubuntu??梢缘?a target="_blank" rel=nofollow>Old Ubuntu Releases 下載對(duì)應(yīng)的14.04版本。Linux安裝教程可以參照:Win7上安裝Ubuntu14.04雙系統(tǒng) 。
需要說(shuō)明的是,隨著電腦的配置和操作系統(tǒng)的不同,安裝過(guò)程大同小異,但是 有的電腦就是裝不上,谷歌之后仍然無(wú)法解決問(wèn)題,這時(shí)候可以嘗試換臺(tái)電腦或者裝虛擬機(jī),我之前用聯(lián)想ideapad,折騰了一周,試了各種方法就是不成功,最后換了臺(tái)華碩一下就好了。
裝好Linux后可以根據(jù)這篇官方指導(dǎo)安裝ROS: Ubuntu install of ROS Indigo。如果沒(méi)有任何Linux命令行基礎(chǔ),那么可以先學(xué)習(xí)Linux命令行,然后再裝ROS。
第二步,學(xué)習(xí)Linux命令行
對(duì)于熟悉Windows而沒(méi)有接觸過(guò)Linux系統(tǒng)的人來(lái)說(shuō),上一步安裝的Ubuntu是一個(gè)很好的Linux過(guò)渡版本。在Linux中,一切任務(wù)都可以在終端(Terminal)通過(guò)命令行完成。因此非常有必要學(xué)習(xí)Linux命令行。學(xué)習(xí)Linux推薦在線編程學(xué)習(xí)環(huán)境實(shí)驗(yàn)樓的兩門(mén)課程:Linux 基礎(chǔ)入門(mén)(新版)和 Linux命令實(shí)例練習(xí) ,兩門(mén)課程可以結(jié)合互補(bǔ)學(xué)習(xí),也可以參見(jiàn)我的學(xué)習(xí)筆記:Linux命令行 有一個(gè)小建議是實(shí)驗(yàn)樓的在線編程環(huán)境就是Linux,因此沒(méi)有必要在它們的網(wǎng)絡(luò)環(huán)境學(xué)習(xí),而是直接用自己的終端。
同時(shí)Ubuntu 作為非商業(yè)操作系統(tǒng),里面或多或少有dug,遇到問(wèn)題多搜索,對(duì)于常見(jiàn)的問(wèn)題,網(wǎng)上都有解決辦法。我在安裝完Ubuntu后就遇到一個(gè)很窘的問(wèn)題:網(wǎng)絡(luò)連接不上,但是神奇的是蓋上蓋子再打開(kāi)后就好了,之后碰到的帶耳機(jī)的時(shí)候沒(méi)聲音也是這樣,一種解釋如下:ubuntu14.04下外放有聲音,耳機(jī)沒(méi)聲音。對(duì)于同樣的遇到網(wǎng)絡(luò)無(wú)法連接的同學(xué)可以在終端輸入:
echo "options asus_nb_wmi wapf=4"| sudo tee /etc/modprobe.d/asus_nb_wmi.conf
重啟即可。
第三步, 學(xué)習(xí)ROS基礎(chǔ)
對(duì)于ROS的學(xué)習(xí),最好的辦法還是直接學(xué)習(xí)官方的Tutorial: ROS Tutorials 。英語(yǔ)不太好的話可以看中文版的 核心 ROS 教程 也可以參見(jiàn)我的學(xué)習(xí)筆記 ROS基礎(chǔ)筆記 ,前期只學(xué)初級(jí)20講即可。學(xué)習(xí)完基礎(chǔ)20講后可以根據(jù)興趣或用途來(lái)學(xué)習(xí)其他教程,如上圖就是實(shí)時(shí)觀測(cè)工具Rviz顯示機(jī)器人的URDF(Unified Robot Description Format)模型,里面還涉及坐標(biāo)變換的TF相關(guān)知識(shí),都需要學(xué)習(xí)對(duì)應(yīng)的Tutorial來(lái)入門(mén)。當(dāng)然,無(wú)從著手的話,這時(shí)候選擇一本參考書(shū)也是很不錯(cuò)的,如ros by example, Learning Robotics Using Python , Learning ROS for Robotics Programming 。
此外,ROS的編程語(yǔ)言主要是C++ 和 Python。C++是國(guó)內(nèi)大多數(shù)高校的教學(xué)語(yǔ)言,更加深入的學(xué)習(xí)可以閱讀C++ Prime 。但是我同時(shí)推薦的是學(xué)習(xí)Python,Python語(yǔ)言作為一種解釋性語(yǔ)言/腳本語(yǔ)言,更加靈活、編程效率更高,同時(shí)有強(qiáng)大的庫(kù)支持,因此也是現(xiàn)在人工智能的第一語(yǔ)言。如果有C/C++基礎(chǔ)也可以很快入門(mén),推薦廖雪峰的微博教程 Python 2.7教程 ,以及實(shí)驗(yàn)樓快速入門(mén)課程:Python快速教程 ,書(shū)的話我用的是《Python核心編程》(Core Python Programming)。
第四步,做項(xiàng)目
只有不斷的學(xué)習(xí)和實(shí)踐才能學(xué)好一門(mén)知識(shí),學(xué)習(xí)ROS最好是一開(kāi)始就挑戰(zhàn)一個(gè)項(xiàng)目。在完成前三步的基礎(chǔ)上,這時(shí)候就要根據(jù)嘗試寫(xiě)第一個(gè)功能包(package)、第一個(gè)節(jié)點(diǎn)(node)了。碰到問(wèn)題可以谷歌,官方問(wèn)答平臺(tái)ROS Q&A也很有用。同時(shí)要在實(shí)踐中不斷學(xué)習(xí),因?yàn)榛A(chǔ)20講還遠(yuǎn)遠(yuǎn)不夠,用到相關(guān)知識(shí)可以繼續(xù)參見(jiàn)相關(guān)Tutorial。
總之,ROS的學(xué)習(xí)曲線在開(kāi)始階段很陡,需要很多預(yù)備知識(shí),比如編程語(yǔ)言、Linux基礎(chǔ)、熟練的英文閱讀功底,甚至在理解ros::spin(),ros::spinOnce() (C++),rospy.spin() (Python)的時(shí)候只有理解線程才能搞清楚這三者之間的區(qū)別??傊?,有志于學(xué)習(xí)ROS的同學(xué)要有不斷學(xué)習(xí)的心理準(zhǔn)備,但是同時(shí),ROS的熟練使用絕對(duì)是以后找工作或?qū)崿F(xiàn)項(xiàng)目的一塊很有力的敲門(mén)磚。
附原文地址:https://zhuanlan.zhihu.com/p/26007106?winzoom=1
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。