在ROS Melodic中推薦使用catkin_tool:
$ 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,Linux和Python中的真正初學者,本簡短指南將展示如何開始自己的機器人專案。
ROS是用於編寫機器人軟體的開放原始碼和靈活框架。通過實踐方法和示例專案,本書將使您能夠開始第一個機器人專案。您將學習使用ROS的基本概念,並開始使用C ++和Python編寫ROS API。
你會學到什麼
  • 安裝ROS
  • 回顧ROS的基本概念
  • 在ROS中處理常用的命令
  • 使用ROS從頭開始的製作移動機器人
本書目標物件
絕對的初學者,很少或沒有程式設計經驗,希望學習機器人程式設計。

----