




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
ROS調(diào)試與可視化工具課程介紹課程安排:介紹ROS程序調(diào)試方式、診斷工具和可視化工具等。課程目的:有效地使用調(diào)試診斷工具,加快ROS程序開發(fā)所需基礎(chǔ):ROS系統(tǒng)基礎(chǔ)、了解GDB調(diào)試器。2?NXROBO2022課程內(nèi)容日志記錄工具GBD調(diào)試器ROS系統(tǒng)診斷工具roswtf可視化工具Rviz數(shù)據(jù)保存與回放工具rosbag3?NXROBO2022ROS程序的調(diào)試為了監(jiān)測ROSnode內(nèi)部代碼執(zhí)行的情況,可以從以下三個層面著手,使軟件調(diào)試更加容易:輸出調(diào)試信息動態(tài)調(diào)試ROS組件工具4?NXROBO2022輸出調(diào)試信息在編寫程序時,在恰當(dāng)位置設(shè)置打印輸出調(diào)試信息以顯示程序的運行狀態(tài)是非常重要的roscpp:使用rosconsole功能包以ROS_形式的宏提供客戶端的日志記錄API;4種日志記錄方式;5種詳細(xì)級別;支持printf形式及stream形式的格式化輸出
rospy:以log開頭的methods同樣提供4種日志記錄方式及5種詳細(xì)級別的日志記錄。5?NXROBO2022日志記錄方式與級別日志記錄四種方式:stdoutstderrlogfile/rosoutTOPIC6日志記錄五個級別:DEBUG(對應(yīng)rospy中的logdebug)INFO(loginfo)WARN(logwarn)ERROR(logerr)FATAL(logfatal)?NXROBO2022日志記錄方式與級別具體列表如下,左側(cè)為roscpp的日志等級,右側(cè)為rospy的日志等級。7?NXROBO2022調(diào)試信息的輸出舉例基本信息語句形式為ROS_<LEVEL>[_STREAM],如ROS_DEBUG(...)ROS_DEBUG_STREAM(args)因為日志記錄宏是由roscosole功能包提供的,所以要包含console.h頭文件。代碼中以DEBUG級別為例就printf和stream風(fēng)格輸出日志信息。這樣的日志記錄的輸出者為默認(rèn)的ros.<your_package_name>。8?NXROBO2022日志記錄方式與級別不管在終端還是rqt工具中,各級別的日志文字的輸出顏色是不一樣的。DEBUG為綠色,INFO為白色,WARN為黃色,ERROR為紅色,以及FATAL為紫色。所有輸出的調(diào)試信息都附帶其級別和當(dāng)前時間戳(方括號中的數(shù)值)。時間戳以公歷時間計時,表示自1970年以來的秒和納秒計數(shù),時間戳之后是具體的信息。9?NXROBO2022日志記錄方式與級別10?NXROBO2022動態(tài)調(diào)試ROS節(jié)點調(diào)試信息可以大致了解程序的執(zhí)行進(jìn)度及邏輯走向,對于大段計算算法及bug排除,調(diào)試信息打印顯得有點力不從心,而動態(tài)調(diào)試則高效得多,獲取程序的實時信息更為直接。對于Linux系統(tǒng)中的可執(zhí)行程序(elf文件),動態(tài)調(diào)試一般使用GDB調(diào)試器。11?NXROBO2022GDB調(diào)試前的準(zhǔn)備GDB調(diào)試前的準(zhǔn)備為了保證能進(jìn)行源碼級穩(wěn)定的調(diào)試,須做以下工作:編譯時一定要加上選項"-g",這樣編譯出的可執(zhí)行代碼中才包含調(diào)試信息,否則GDB無法關(guān)聯(lián)源碼。編譯時不能使用-O2選項對可執(zhí)行文件進(jìn)行優(yōu)化,否則可能在調(diào)試過程中出現(xiàn)不可預(yù)知的錯誤或問題。12?NXROBO2022GDB調(diào)試前的準(zhǔn)備對于roscpp程序,可在CMakeLists.txt下加入:
SET(CMAKE_BUILD_TYPE"Debug")
SET(CMAKE_CXX_FLAGS_DEBUG"$ENV{CXXFLAGS}-O0-Wall-g-ggdb")SET(CMAKE_CXX_FLAGS_RELEASE"$ENV{CXXFLAGS}-O3-Wall")因為CMake中有一個變量
CMAKE_BUILD_TYPE,可以的取值是
Debug、Release、RelWithDebInfo
和
MinSizeRel。當(dāng)這個變量值為
Debug
的時候,CMake會使用變量
CMAKE_CXX_FLAGS_DEBUG
和
CMAKE_C_FLAGS_DEBUG
中的字符串作為編譯選項生成Makefile;除此之外,還要保證GDB能找到源碼文件,-g選項的作用是在可執(zhí)行文件中加入源代碼的關(guān)聯(lián)信息,因為并不是把整個源文件嵌入到可執(zhí)行文件中,GDB會在編譯目錄和當(dāng)前目錄搜索源碼。13?NXROBO2022調(diào)用GDB調(diào)試器直接啟動GDB通過rosrun啟動GDB通過roslaunch啟動GDBGDB掛接已運行進(jìn)程14?NXROBO2022調(diào)用GDB調(diào)試器直接啟動GDB
對于不需要參數(shù)設(shè)置和重映像的node運行,可以直接運行程序,而無需使用標(biāo)準(zhǔn)的rosrun<package><node>的語法。
所以只要保證roscore已經(jīng)啟動,調(diào)試ROS節(jié)點程序如同調(diào)試普通C/C++程序一樣:
15$gdbexecutable?NXROBO2022調(diào)用GDB調(diào)試器通過rosrun啟動GDB從Indigo版本開始,rosrun工具增加了--prefix選項,通過此選項可在GDB環(huán)境下啟動node:16$rosrun--prefix'gdb-exrun--args'my_packagemy_node?NXROBO2022調(diào)用GDB調(diào)試器通過roslaunch啟動GDBroslaunch文件中的標(biāo)簽可通過launch-prefix屬性以調(diào)試器環(huán)境運行node,如:launch-prefix="xterm-egdb--args"launch-prefix="gdb-exrun--args"launch-prefix="valgrind"GDB掛接已運行進(jìn)程用gdbPID(PID為程序進(jìn)程)格式掛接正在運行的程序。先用gdbprogram
關(guān)聯(lián)上源代碼,并進(jìn)入gdb,在gdb中用attach命令來掛接進(jìn)程PID。并用detach來取消掛接的進(jìn)程。17?NXROBO2022GDB常用命令
命令
描述backtrace(bt)
查看各級函數(shù)調(diào)用及參數(shù)
finish
連續(xù)運行到當(dāng)前函數(shù)返回為止,然后停下來等待命令
frame(f)
幀編號
選擇棧幀
info(i)locals
查看當(dāng)前棧幀局部變量的值
list(l)
列出源代碼,接著上次的位置往下列,每次列10行
listrow
根據(jù)行號row列出從第幾行開始的源代碼
listfunc
根據(jù)函數(shù)名func列出某個函數(shù)的源代碼
next(n)
執(zhí)行下一行語句
print(p)
打印表達(dá)式的值,通過表達(dá)式可以修改變量的值或者調(diào)用函數(shù)
quit(q)退出gdb調(diào)試環(huán)境
setvar
修改變量的值
start
開始執(zhí)行程序,停在main函數(shù)第一行語句前面等待命令
step(s)
執(zhí)行下一行語句,如果有函數(shù)調(diào)用則進(jìn)入到函數(shù)中18?NXROBO2022GDB補(bǔ)充說明GDB的具體使用請查閱官網(wǎng):/gdb/download/onlinedocs/二進(jìn)制文件調(diào)試除了GDB,其它工具如性能檢測等功能的工具也同樣可以使用,如Valgrind。另外,如果覺得GDB的不友好顯示是個障礙,可使用集成GDB的圖形化程序如DDD或GDB自帶的gdbtui。19?NXROBO2022ROS系統(tǒng)狀態(tài)檢測有很多時候,ROS系統(tǒng)內(nèi)的node沒有出錯但是沒有按我們預(yù)期來運行,比如有些node似乎沒有接收到TOPIC,有些似乎沒有調(diào)用SERVICE。還有些時候,我們想了解系統(tǒng)內(nèi)各node的狀態(tài)、關(guān)聯(lián)情況和一些實時信息,ROS提供了一套工具來滿足這些需求。這些工具對于大型的ROS系統(tǒng)來說顯得尤其重要。因為大型系統(tǒng)node多,關(guān)聯(lián)復(fù)雜,系統(tǒng)運行狀態(tài)難以預(yù)料,個別node崩潰或功能異常偶有發(fā)生。20?NXROBO2022ROS系統(tǒng)診斷工具roswtfROS還提供了roswtf工具來檢測ROS系統(tǒng)安裝、環(huán)境變量、功能包、roslaunch文件的潛在問題,而且支持插件擴(kuò)展功能。檢查系統(tǒng)安裝及環(huán)境變量問題直接運行roswtf即可。檢查功能包需切換到功能包目錄下運行roswtf。檢查roslaunch文件,命令格式為:
21$roswtfyourfile.launch$roswtf?NXROBO2022roswtf運行22?NXROBO2022roswtf運行23?NXROBO2022roswtf運行24?NXROBO2022roswtf其他狀況說明roswtf工具還支持以下選項:
--all
roswtf將檢查*ROS_PACKAGE_PATH*變量指向路徑中的所有功能包
--no-plugins禁用roswtf插件
--offline只進(jìn)行離線測試
通常情況下,我們所希望獲得的結(jié)果是沒有任何的錯誤和警告,但總是會出現(xiàn)地些警告或錯誤。一般來說警告對系統(tǒng)正常運行是沒有影響的,如出現(xiàn)錯誤信息也并不一定系統(tǒng)出現(xiàn)異常,如果系統(tǒng)異??蓞⒄斟e誤信息來判斷問題所在。25?NXROBO2022圖像可視化工具image_view
單一圖像預(yù)覽工具,使用方法為:
其中/camera為圖像發(fā)布至的TOPIC,實際使用時需要具體對待和更改。rqt_image_view
自由圖像預(yù)覽工具,使用方法為:
可自由選擇圖像TOPIC并顯示圖像。這兩款工具均可以保存預(yù)覽的圖像。rviz工具中也可顯示圖像。26$rosrunimage_viewimage_viewimage:=/camera$rosrunrqt_image_viewrqt_image_view?NXROBO20223D可視化工具在實際的機(jī)器人硬件系統(tǒng)中有很多設(shè)備(例如雙目攝像頭、3D激光雷達(dá)和Kinect傳感器)能夠提供點云格式的3D數(shù)據(jù),實現(xiàn)3D數(shù)據(jù)可視化就顯得非常有意義。ROS系統(tǒng)就提供了這樣的工具rviz(rqt工具中也提供了其插件)。它集成了能夠完成3D數(shù)據(jù)處理的OpenGL接口,能夠?qū)鞲衅鲾?shù)據(jù)在模型化世界(World)中展示,過程是先使用傳感器坐標(biāo)系讀取測量值,再將這些讀數(shù)按照之間的相對位置在正確的位置繪制。27?NXROBO2022初步使用rvizrviz啟動方式:直接啟動
以插件形式通過rqt啟動
或先啟動rqt,再在GUI中手動加載rviz插件28$rviz$rosrunrvizrviz$rosrunrqt_rvizrqt_rviz?NXROBO2022初步使用rviz29?NXROBO2022使用rosbag記錄數(shù)據(jù)通過rosbag工具的record命令執(zhí)行數(shù)據(jù)記錄操作,如:
/camera和/tf兩個Topic使用bz2壓縮算法保存為test.bag文件30$rosbagrecord/camera/tf-j-Otest?NXROBO2022回放消息記錄數(shù)據(jù)回放消息記錄文件,只需要運行roscore,而不需要再運行其他任何節(jié)點。然后,執(zhí)行類似以下命令:
回放的Topic會發(fā)布出來。回放過程中可以使用空格暫?;蚴褂谩癝”鍵步進(jìn),回放結(jié)束會自動停止。
記錄包文件可以像實時會話一樣在ROS中再現(xiàn)情
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 調(diào)光玻璃項目園區(qū)審批申請報告
- 中國電網(wǎng)儲能市場全景評估及發(fā)展趨勢研究預(yù)測報告
- 中國陰極電泳漆部件行業(yè)市場全景評估及投資戰(zhàn)略研究報告
- 監(jiān)控系統(tǒng)節(jié)能評估報告
- 中國相變存儲器市場運營態(tài)勢及發(fā)展前景預(yù)測報告
- 萍鄉(xiāng)市流動攤販管理辦法
- 健康活動安全標(biāo)示課件
- 蚌埠市亞硝酸鹽管理辦法
- 行政執(zhí)法事項清單管理暫行辦法
- 西安市實習(xí)律師管理辦法
- GB 7718-2025食品安全國家標(biāo)準(zhǔn)預(yù)包裝食品標(biāo)簽通則
- GB/T 45403-2025數(shù)字化供應(yīng)鏈成熟度模型
- QGDW11337-2023輸變電工程工程量清單計價規(guī)范
- 生活垃圾焚燒發(fā)電廠自動監(jiān)測設(shè)備運行維護(hù)技術(shù)規(guī)范
- 病區(qū)安全管理工作
- 血管加壓藥物在急診休克中的應(yīng)用專家共識2021解讀課件
- 《超高強(qiáng)度鋼》課件
- 《個人信息保護(hù)法》知識考試題庫150題(含答案)
- 供應(yīng)室職業(yè)暴露與防護(hù)知識
- 高一化學(xué)達(dá)標(biāo)訓(xùn)練:第一單元化石燃料與有機(jī)化合物
- 反食品浪費法培訓(xùn)
評論
0/150
提交評論