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命令例項練習 ,兩門課程可以結合互補學習,也可以參見我的學習筆記:
這一部分可以參照機器人作業系統(ROS)線上實訓平臺學習實驗指南
3、學習ROS基礎
這一部分也可以參照機器人作業系統(ROS)線上實訓平臺學習實驗指南
對於ROS的學習,最好的辦法還是直接學習官方的Tutorial: ROS Tutorials
此外,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學習入門(拋磚引玉篇)
4、https://www.zhihu.com/question/49903412/answer/120374605?from=profile_answer_card