Programming Robots with ROS讀書筆記-1

Programming Robots with ROS

  • ROS的msg是存在某個package裏面的,所以用rostopic find <msg>的時候,要把msg所屬於的pkg名也加上,比如rostopic find std_msgs/Int32.
  • 書中反覆強調,每一個新的節點要訂閱一個話題的信息時候,是先連接 roscore 然後直接與向話題發佈信息的node連接。
  • 當使用rospy.spin()的時候,ROS does not necessarily need to “take over” the main thread of execution.
  • This means that, even if you’re using an interpreted language such as Python, you need to run catkin_make if you’re going to define your own message types.
  • ROS系統並不特殊,它也是一個系統,像Linux一樣。當使用python node時,python node本身是不需要編譯的(當然,package內部還有其他需要編譯的程序除外)
  • Package.xml的信息不光是meta information,在使用的時候還是需要更改的
  • 如果修改了msg,很可能在所有用到的msg的package都要重新catkin_make,因爲MD4 checksum的存在。C++有這個問題,用了cython的python代碼也有這個問題。
  • 爲什麼不同的node叫做不同的type?因爲同一個type的node根據名字的不同可以同時存在。
  • ROS是有自己的數據類型的,雖然看起來很像其他的編程語言,但還是有很多的差異。ROS的message與其他語言的類型之間是用ROS系統自動生成的代碼來轉換的。
  • ROS的三種功能:message, service, action都是需要定義特定的文件,而該文件的本質,是通信中數據的類型。因爲無論是定於message, service還是action,本質上都是在定義ROS的通信,只要定義好了通信,其他的就全都是函數。
  • 在定義好message, service, action的基礎上,catkin提供了不同的語言與這些“廣義消息”之間的接口,不同的語言所實現的是函數,已經不需要考慮藉口問題了。
  • 像service,action這種通信,只要定義好通信數據類型,函數與通信的接口是由各種ROS的內部庫來解決,因此,同樣的service,action,可以由不同的函數反覆使用。
  • 任何想要使用service的地方,都最好考慮用Action。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章