機器人操做系統入門(三)ROS通訊架構

參考資料:node

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通訊架構(一)ide

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

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

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

2. 節點管理器masterspa

  • 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、int八、int1六、int3二、int64(以及uint)、float、float6四、string、time、duration、header、可變長數組array[ ]、固定長度數組array[C]

示例:sensor_msgs/msg/image.msg

注:能夠將msg類比爲「類」,而每次發佈的具體內容爲「對象」

(2)rosmsg的經常使用命令

相關文章
相關標籤/搜索