FBTUG-FarmHarvestBot 研究筆記-如何 Debug ROS 系統

緣起

  • 老覺得 ROS 系統複雜,怎麼跑起來的都不清楚,分散式系統遇到問題時,有時還真不知道要怎麼 Debug, 所以藉著思考如何 Debug, 練習並順便整理一些 Debug 技巧,供日後遇到問題時可以參考

debug_ros 工具下載

git clone https://github.com/FBTUG/FarmHarvestBot.git
  https://github.com/FBTUG/FarmHarvestBot/tree/master/software/debug_ros

基本工具箱-常用參考

快速指令表
[ROS04] http://sce.uhcl.edu/harman/A_CRS_ROS_I_SEMINAR/2_1ROScheatsheet_catkin.pdf
Commands Manual
[roscmd] help 
roscommand [sub-command] -h
入手書
[ROS02] ROS_Robot_Programming_EN.pdf
  https://drive.google.com/open?id=1xZpNM9xbFFNE87Hmzgu3TowPPe8vbUEh
  5.1. ROS Command List

快速 Capture 系統步驟

當遇到 Bug 卻沒時間慢慢看,以及一般正式的分析,都會有一套步驟與工具,讓 FAE 能夠抓取各方面的系統資訊,好帶回去慢慢分析

目前建議執行以下步驟,取得 ROS 應用系統相關資訊

先將要 debug 的程式跑起來

./debug_ros.sh   ==> 選 6-dump
將之後輸出存成 log 檔案,每次執行會產生一個 bag 檔。帶回這兩個檔案

使用 rpt_graph 將 graph 記錄下來

dot -Tpdf rosgraph.dot -o rosgraph.pdf
將 .ros/log/latest 目錄複製回來
scp ubuntu@knightcar.local:~/.ros/log/latest/* .

學習歷程圖

digraph G {
"開文件,開始思索與整理"->"方法與工具建構";
"方法與工具建構"->"解 Bug 的基本思路"->
"開始建構 debug bash script 的支援"->
"建構與測試 bash dump 的方法"->
"開始建構測試 python script"->
"嘗試整理用 source code trace 的方法論"->
"收集了幾個程式環境下的 debug 資訊,試著解讀與了解,持續修正 debug_ros script"->
"建構與測試 bash dump 的方法";
"開文件,開始思索與整理"->"練習與熟悉系統工具";
"練習與熟悉系統工具"->
"基本工具箱之常用參考"->
"練習指令快查表上的命令順便紀錄"->
"想與測試確認 debug 時會用到的命令"->
"學習視覺工具,看哪些能用得上"->