在Ubuntu 18.04 LTS入門ROS Melodic版機器人作業系統
$ sudo apt-get install python-catkin-tools
使用catkin build編譯ros_tutorials,簡潔方便:
這是ROS最基礎最核心的教程。ros_tutorials主要有roscpp,rospy和turtlesim三個部分。
圍繞主題(topic)和服務(service)等展開,其中rospy原始碼有序號,推薦先對應學習python版本,然後依據序號順序學習C++版本:
以advanced_publish.py為例:
## talker demo that published std_msgs/ColorRGBA messages ## to the 'color' topic. To see these messages, type: ## rostopic echo color ## this demo shows some of the more advanced APIs in rospy. import rospy from std_msgs.msg import ColorRGBA def talker(): topic = 'color' pub = rospy.Publisher(topic, ColorRGBA, queue_size=10) rospy.init_node('color_talker', anonymous=True) print "\n\nNode running. To see messages, please type\n\t'rostopic echo %s'\nIn another window\n\n"%(rospy.resolve_name(topic)) while not rospy.is_shutdown(): # publish with in-order initialization of arguments (r, g, b, a) pub.publish(1, 2, 3, 4) rospy.sleep(.5) # publish with a=1, use default values for rest pub.publish(a=1.0) rospy.sleep(.5) # print the number of subscribers rospy.loginfo("I have %s subscribers"%pub.get_num_connections()) if __name__ == '__main__': try: talker() except rospy.ROSInterruptException: pass
程式碼關鍵位置都是有英文註釋,訂閱節點後,會顯示節點訂閱數。
通過執行節點,閱讀原始碼,可以紮實基礎,便於後續使用。當然也可以使用Matlab:
----
不知不覺,ROS都已經推出第三個長期支援版本了,從indigo,kinetic到melodic。基礎教程的改變其實並不大,核心的內容沒有太多變化,從日常使用而言無非是支援功能包的多寡和習慣吧,還是一樣的catkin_make(ROS1),而非ament build(ROS2)。最近一次參加ROS和機器人相關的研討會,不少同仁反饋基礎內容教程碎片化嚴重。看起來好像現在ROS學習的資料多起來了,其實去除同質化和雷同化的部分,其本質內容又有多少呢。在易科Top博士的鼓勵和指引下,進入到ROS和機器人開源知識的分享中,同時也是工作的需要,想在高校開設一系列理論與實踐結合的有趣又實用的機器人課程。這期間翻譯了一些書籍,由於時間和其他一些原因,質量不容樂觀,在此深表歉意,並在部落格中依據反饋進行了修正和更新。
機器人不是一門可以速成的學科,需要廣泛的知識儲備和積累,那些曾經或者現存的大神們都是身經百戰和久經磨礪的。所有的經驗都只能當作故事,自主學習的過程最為重要,不論是講授知識還是傳授方法和技巧,都是講師個人的體會,只有自己想明白究竟要學什麼要做什麼,這是最為重要的,畢竟講師不懂也不可能明白學員的初心是什麼。當下的教育無法避免商業和市場的衝擊,在洪流中堅守的力量雖然微弱但頑強不屈。部落格原本是服務教學的手段,針對課堂內容的補充和測試,有些刪減,有些資源莫名奇妙就失效了。
這些年逐漸懂得,自己明白和講解明白是兩回事,講解明白和學生明白又是兩回事,學生明白到靈活應用更是兩回事,再從應用到創新呢。人的認知規律不是線性系統,教育心理學,認知心理學等非常重要,技術僅僅是一種手段而已,主體是知識和方法,主角是學生,教師最多也就是橋樑的作用,連線兩端。
總結上述:簡即是多,寓教於樂。
ROS是用於編寫機器人軟體的開放原始碼和靈活框架。通過實踐方法和示例專案,本書將使您能夠開始第一個機器人專案。您將學習使用ROS的基本概念,並開始使用C ++和Python編寫ROS API。你會學到什麼
- 安裝ROS
- 回顧ROS的基本概念
- 在ROS中處理常用的命令
- 使用ROS從頭開始的製作移動機器人
----