參考資料:
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
第五章 常用工具
- gazebo:ROS仿真工具 //目前最好
- rviz:可視化消息 //呈現接收信息
- rqt:數據流可視化工具 //直觀查看消息的通信架構和流通路徑
- rosbag:記錄和回放ROS話題 //不記錄service
- rosbridge:溝通ROS和外界的功能包
- moveit!:開源操作軟件 //目前應用最廣泛
注:gazebo——仿真;rviz、rqt——調試和可視化
1. Gazebo:提供一個虛擬的世界 //與ROS一樣,由OSRF維護
- 機器人仿真工具、模擬器,獨立的開源機器人仿真平台;
- 與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 的結構比較容易擴展,不僅具有獨立的能力如抓放,運動規划,也可擴展自公共類,但實際作為獨立的插件運行