1. 程式人生 > >ROS學習之路的整理

ROS學習之路的整理

        ROS是基於linux系統的一個次級作業系統,目前被看做是機器人界的一套標準平臺,可以類比手機的安卓作業系統或者是電腦的windows作業系統。ROS最大的優點在於靈活、低耦合、分散式、開源以及功能強大而豐富的第三方功能包(類似於程式語言中的庫)。

       ROS雖然叫作業系統,但是真正底層的任務排程、編譯、定址等任務還是由Linux作業系統完成,也就是ROS充其量是一個執行在Linux上的次級作業系統。

       學習ROS的步驟如下:

1、首先要在電腦上安裝Ubuntu系統和ROS系統,這一步可以參照Ubuntu16.04安裝ROS

2、學習基本的linux命令列。

      由於ROS要在Ubuntu上執行,而Ubuntu是linux系統的變種,因此有必要學習一下linux的操作和命令列。在Linux中,一切任務都可以在終端(Terminal)通過命令列完成。

      學習Linux推薦線上程式設計學習環境實驗樓的兩門課程:Linux 基礎入門(新版)Linux命令例項練習 ,兩門課程可以結合互補學習,也可以參見我的學習筆記:

Linux命令列有一個小建議是實驗樓的線上程式設計環境就是Linux,因此沒有必要在它們的網路環境學習,而是直接用自己的終端。這樣可以有操作感,獲得的體驗更深刻。

     這一部分可以參照機器人作業系統(ROS)線上實訓平臺學習實驗指南

3、學習ROS基礎

    這一部分也可以參照機器人作業系統(ROS)線上實訓平臺學習實驗指南

        對於ROS的學習,最好的辦法還是直接學習官方的Tutorial: ROS Tutorials

。英語不太好的話可以看中文版的 核心 ROS 教程 也可以參見我的學習筆記ROS基礎筆記 ,前期只學初級20講即可。學習完基礎20講後可以根據興趣或用途來學習其他教程,如上圖就是實時觀測工具Rviz顯示機器人的URDF(Unified Robot Description Format)模型,裡面還涉及座標變換的TF相關知識,都需要學習對應的Tutorial來入門。當然,無從著手的話,這時候選擇一本參考書也是很不錯的,如ros by example, Robot Operating System (ROS) The Complete Reference。最後推薦Roi Yehoshua教授授課所用的ppt:Introduction to Robotics

        此外,ROS的程式語言主要是C++ 和 Python。C++是國內大多數高校的教學語言,更加深入的學習可以閱讀C++ Primer。但是我同時推薦的是學習Python,Python語言作為一種解釋性語言/指令碼語言,更加靈活、程式設計效率更高,同時有強大的庫支援,因此也是現在人工智慧的第一語言。如果有C/C++基礎也可以很快入門,推薦廖雪峰的微博教程 Python 2.7教程 ,以及實驗樓快速入門課程:Python快速教程 ,書的話我用的是《Python核心程式設計》(Core Python Programming)。

4、做專案

      學習ROS最好是一開始就挑戰一個專案。在完成前三步的基礎上,這時候就要根據嘗試寫第一個功能包(package)、第一個節點(node)了。碰到問題可以谷歌,官方問答平臺ROS Q&A也很有用。同時要在實踐中不斷學習,因為基礎20講還遠遠不夠,用到相關知識可以繼續參見相關Tutorial。

      總之,ROS的學習曲線在開始階段很陡,需要很多預備知識,比如程式語言、Linux基礎、熟練的英文閱讀功底,甚至在理解ros::spin(),ros::spinOnce() (C++),rospy.spin() (Python)的時候只有理解執行緒才能搞清楚這三者之間的區別。總之,有志於學習ROS的同學要有不斷學習的心理準備,但是同時,ROS的熟練使用絕對是以後找工作或實現專案的一塊很有力的敲門磚。

相關連結:
1、ROS學習入門(拋磚引玉篇)

2、ubuntu14.04下外放有聲音,耳機沒聲音

3、機器人作業系統ROS | 簡介篇

4、https://www.zhihu.com/question/49903412/answer/120374605?from=profile_answer_card

5、ROS學習總結(1)--入門、學習路線