機器人操作系統入門(三)ROS通信架構


參考資料:

https://www.icourse163.org/course/ISCAS-1002580008?tid=1003713012  //中國大學MOOC

https://www.bilibili.com/video/av23401751  //B站

《ROS操作系統入門講義》PDF下載

鏈接:https://pan.baidu.com/s/1OCja2WLDRnjYXMrpnZ3-sQ 
提取碼:mziy

第三章 ROS通信架構(一)

1. 節點node:ROS世界中最小的進程單元

  • 程序角度:可執行文件被執行,加載至內存,生成node
  • 功能角度:一個node復制機器人的一個單獨功能

注:可執行文件是靜態的,節點node是動態

2. 節點管理器master

  • node首先在master處進行注冊,之后master會將該node納入整個ROS程序中
  • node之間的通信也是先由master進行“牽線”,才能兩兩的進行點對點通信

3. 啟動master和node

  • roscore  //啟動master、rosout和parameter server
  • rosrun pkg_name node_name  //rosrun尋找包pkg_name下名為node_name的可執行程序

注:rosrun命令的詳細用法  rosrun [--prefix cmd] [--debug] pkg_name node_name [ARGS]

示例:rosrun --prefix 'gdb -ex run --args' pkg_name node_name  //在GDB下運行ros程序

注:通過 rosnode help 查看命令幫助

4. launch文件:一次性把多個節點按照預先的配置啟動起來

(1)用法:roslaunch pkg_name file_name.launch  //若master沒有啟動,那么roslaunch就會首先自動啟動master

(2)寫法與格式:xml格式規范

(3)示例

  • 啟動rospy_tutorials軟件包中單個節點talker

  • Ros-Academy-for-Beginners 中的 robot_sim_demo:啟動gazebo模擬器,導入參數內容,加入機器人模型

5. 話題topic  //適用於實時性、周期性的消息,如傳感器數據

(1)ROS的四大通信方式

  • Topic 話題  //節點對節點的單向通信異步通信
  • Service 服務  //請求-查詢式的雙向通信模型;同步通信
  • Parameter Server 參數服務器  //使用數據字典維護全局共享參數
  • Actionlib 動作庫  //請求-響應-反饋式雙向通信

(2)話題的建立過程(單向

  1. publisher節點和subscriber節點都要到節點管理器進行注冊
  2. publisher會發布topic
  3. subscriber在master的指揮下會訂閱該topic,從而建立起sub-pub之間的直接通信

注:

  • 異步指的是發布者和訂閱者不關心對方的狀態,各司其職,不存在協同工作
  • topic發送時調用publish()方法,發送完成立即返回,不用等待反饋
  • subscriber通過回調函數的方式來處理消息
  • topic可以同時有多個subscribers,也可以同時有多個publishers;ROS中這樣的例子有:/rosout、/tf等等

(3)topic常用命令

注:使用 rostopic help rostopic command -h 查看具體用法

6. Message(.msg)  //topic的數據格式標准,利用 rostopic type topic_name 進行查看

(1)msg的基本數據類型:bool、int8、int16、int32、int64(以及uint)、float、float64、string、time、duration、header、可變長數組array[ ]、固定長度數組array[C]

示例:sensor_msgs/msg/image.msg

注:可以將msg類比為“類”,而每次發布的具體內容為“對象”

(2)rosmsg的常用命令

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM