機器人操做系統入門(五)經常使用工具

參考資料:node

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

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

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

連接:https://pan.baidu.com/s/1OCja2WLDRnjYXMrpnZ3-sQ 
提取碼:mziy瀏覽器

第五章 經常使用工具架構

  • gazebo:ROS仿真工具  //目前最好
  • rviz:可視化消息  //呈現接收信息
  • rqt:數據流可視化工具  //直觀查看消息的通訊架構和流通路徑
  • rosbag:記錄和回放ROS話題  //不記錄service
  • rosbridge:溝通ROS和外界的功能包
  • moveit!:開源操做軟件  //目前應用最普遍

注:gazebo——仿真;rviz、rqt——調試和可視化編程語言

1. Gazebo:提供一個虛擬的世界  //與ROS同樣,由OSRF維護ide

  • 機器人仿真工具、模擬器,獨立的開源機器人仿真平臺;
  • 與ROS兼容最好
  • 給機器人一個逼近現實的虛擬物理環境
  • 仿真一些不依賴於具體硬件的算法和場景,例如圖像識別、傳感器數據融合處理、路徑規劃、SLAM等任務

2. rviz:the robot visualization tool 機器人可視化工具  //呈現接收到的信息工具

  • 左側的插件至關於一個個的subscriber,rviz接收消息,並顯示

3. rqt:基於qt開發的可視化工具  //比rviz高級一個層次性能

(1)rqt_graph:顯示通訊架構,包括當前有哪些node(橢圓形)topic(矩形)在運行,消息的流向是怎樣的  //不顯示service

(2)rqt_plot:將參數以曲線的形式繪製出來  //有利於分析動態參數的變化態勢

(3)rqt_console:配合過濾器 rqt_logger_level 進行日誌的查看

4. rosbag:提升性能,並避免消息的反序列化和從新排序  //同時提供命令行工具代碼API

  • rosbag對軟件包來操做(一個包是ROS用於存儲ROS消息數據的文件格式),rosbag命令能夠記錄、回放和操做包。指令列表以下:

5. rosbridge:用於得ros系統和其餘系統交互的功能包  //「橋樑」做用

主要包含兩部分:協議和實現

(1)協議protocol:提供了非ROS程序與ROS通訊的具體的格式規範,規範基於JSON格式,包括訂閱topic,發佈message,調用server,設置參數,壓縮消息等。

示例:訂閱topic的格式規範

注:此規範與所用的編程語言和傳輸方式無關,任何能夠發送JSON格式的語言和傳輸方式均可以rosbridge protocol進行交流,而且與ROS進行交互

(2)實現implementation:rosbridge_suite元程序包  //實現rosbridge protocol並提供WebSocket傳輸層的包的集

  • rosbridge_library:核心rosbridge軟件包,負責獲取JSON字符串並將命令發送到ROS,反過來接收處理ROS發過來的信息,將之轉換爲JSON字符串,並將結果轉交給非ROS程序
  • rosapi:經過服務調用來訪問某些ROS操做,這些服務一般爲ROS客戶端庫保留的服務,包括獲取和設置參數,獲取主題列表等
  • rosbridge_server:提供傳輸層的WebSocket鏈接,使得瀏覽器能夠與ROS「交談」;roslibjs是一個瀏覽器的JavaScript庫,能夠經過rosbridge_server與ROS進行交流

 (3)安裝:sudo apt-get install ros-<rosdistro>-rosbridge-server

6. moveit!:在機器人上最普遍使用的開源操做軟件

  • moveit!的使用經過爲用戶提供接口來調用它,包括C++、Python、GUI三種接口
  • ROS中的 move_group 節點充當整合器,整合多個獨立組件,提供ROS風格的Action和Service
  • move_group 經過ROS topic和action與機器人通信,獲取機器人的位置、節點等狀態,獲取數據再傳遞給機器人的控制器
  • move_group 節點獲取到節點狀態信息或者機器人變換信息時候,會經過控制器的接口去處理這些信息,好比進行座標轉換、規劃場景、3D感知
  • move_group 的結構比較容易擴展,不只具備獨立的能力如抓放,運動規劃,也可擴展自公共類,但實際做爲獨立的插件運行
相關文章
相關標籤/搜索