




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(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í)行的情況,可以從以下三個(gè)層面著手,使軟件調(diào)試更加容易:輸出調(diào)試信息動態(tài)調(diào)試ROS組件工具4?NXROBO2022輸出調(diào)試信息在編寫程序時(shí),在恰當(dāng)位置設(shè)置打印輸出調(diào)試信息以顯示程序的運(yùn)行狀態(tài)是非常重要的roscpp:使用rosconsole功能包以ROS_形式的宏提供客戶端的日志記錄API;4種日志記錄方式;5種詳細(xì)級別;支持printf形式及stream形式的格式化輸出
rospy:以log開頭的methods同樣提供4種日志記錄方式及5種詳細(xì)級別的日志記錄。5?NXROBO2022日志記錄方式與級別日志記錄四種方式:stdoutstderrlogfile/rosoutTOPIC6日志記錄五個(gè)級別: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)因?yàn)槿罩居涗浐晔怯蓃oscosole功能包提供的,所以要包含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í)間戳(方括號中的數(shù)值)。時(shí)間戳以公歷時(shí)間計(jì)時(shí),表示自1970年以來的秒和納秒計(jì)數(shù),時(shí)間戳之后是具體的信息。9?NXROBO2022日志記錄方式與級別10?NXROBO2022動態(tài)調(diào)試ROS節(jié)點(diǎn)調(diào)試信息可以大致了解程序的執(zhí)行進(jìn)度及邏輯走向,對于大段計(jì)算算法及bug排除,調(diào)試信息打印顯得有點(diǎn)力不從心,而動態(tài)調(diào)試則高效得多,獲取程序的實(shí)時(shí)信息更為直接。對于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)試,須做以下工作:編譯時(shí)一定要加上選項(xiàng)"-g",這樣編譯出的可執(zhí)行代碼中才包含調(diào)試信息,否則GDB無法關(guān)聯(lián)源碼。編譯時(shí)不能使用-O2選項(xiàng)對可執(zhí)行文件進(jìn)行優(yōu)化,否則可能在調(diào)試過程中出現(xiàn)不可預(yù)知的錯(cuò)誤或問題。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")因?yàn)镃Make中有一個(gè)變量
CMAKE_BUILD_TYPE,可以的取值是
Debug、Release、RelWithDebInfo
和
MinSizeRel。當(dāng)這個(gè)變量值為
Debug
的時(shí)候,CMake會使用變量
CMAKE_CXX_FLAGS_DEBUG
和
CMAKE_C_FLAGS_DEBUG
中的字符串作為編譯選項(xiàng)生成Makefile;除此之外,還要保證GDB能找到源碼文件,-g選項(xiàng)的作用是在可執(zhí)行文件中加入源代碼的關(guān)聯(lián)信息,因?yàn)椴⒉皇前颜麄€(gè)源文件嵌入到可執(zhí)行文件中,GDB會在編譯目錄和當(dāng)前目錄搜索源碼。13?NXROBO2022調(diào)用GDB調(diào)試器直接啟動GDB通過rosrun啟動GDB通過roslaunch啟動GDBGDB掛接已運(yùn)行進(jìn)程14?NXROBO2022調(diào)用GDB調(diào)試器直接啟動GDB
對于不需要參數(shù)設(shè)置和重映像的node運(yùn)行,可以直接運(yùn)行程序,而無需使用標(biāo)準(zhǔn)的rosrun<package><node>的語法。
所以只要保證roscore已經(jīng)啟動,調(diào)試ROS節(jié)點(diǎn)程序如同調(diào)試普通C/C++程序一樣:
15$gdbexecutable?NXROBO2022調(diào)用GDB調(diào)試器通過rosrun啟動GDB從Indigo版本開始,rosrun工具增加了--prefix選項(xiàng),通過此選項(xiàng)可在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)境運(yùn)行node,如:launch-prefix="xterm-egdb--args"launch-prefix="gdb-exrun--args"launch-prefix="valgrind"GDB掛接已運(yùn)行進(jìn)程用gdbPID(PID為程序進(jìn)程)格式掛接正在運(yù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ù)運(yùn)行到當(dāng)前函數(shù)返回為止,然后停下來等待命令
frame(f)
幀編號
選擇棧幀
info(i)locals
查看當(dāng)前棧幀局部變量的值
list(l)
列出源代碼,接著上次的位置往下列,每次列10行
listrow
根據(jù)行號row列出從第幾行開始的源代碼
listfunc
根據(jù)函數(shù)名func列出某個(gè)函數(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的不友好顯示是個(gè)障礙,可使用集成GDB的圖形化程序如DDD或GDB自帶的gdbtui。19?NXROBO2022ROS系統(tǒng)狀態(tài)檢測有很多時(shí)候,ROS系統(tǒng)內(nèi)的node沒有出錯(cuò)但是沒有按我們預(yù)期來運(yùn)行,比如有些node似乎沒有接收到TOPIC,有些似乎沒有調(diào)用SERVICE。還有些時(shí)候,我們想了解系統(tǒng)內(nèi)各node的狀態(tài)、關(guān)聯(lián)情況和一些實(shí)時(shí)信息,ROS提供了一套工具來滿足這些需求。這些工具對于大型的ROS系統(tǒng)來說顯得尤其重要。因?yàn)榇笮拖到y(tǒng)node多,關(guān)聯(lián)復(fù)雜,系統(tǒng)運(yùn)行狀態(tài)難以預(yù)料,個(gè)別node崩潰或功能異常偶有發(fā)生。20?NXROBO2022ROS系統(tǒng)診斷工具roswtfROS還提供了roswtf工具來檢測ROS系統(tǒng)安裝、環(huán)境變量、功能包、roslaunch文件的潛在問題,而且支持插件擴(kuò)展功能。檢查系統(tǒng)安裝及環(huán)境變量問題直接運(yùn)行roswtf即可。檢查功能包需切換到功能包目錄下運(yùn)行roswtf。檢查roslaunch文件,命令格式為:
21$roswtfyourfile.launch$roswtf?NXROBO2022roswtf運(yùn)行22?NXROBO2022roswtf運(yùn)行23?NXROBO2022roswtf運(yùn)行24?NXROBO2022roswtf其他狀況說明roswtf工具還支持以下選項(xiàng):
--all
roswtf將檢查*ROS_PACKAGE_PATH*變量指向路徑中的所有功能包
--no-plugins禁用roswtf插件
--offline只進(jìn)行離線測試
通常情況下,我們所希望獲得的結(jié)果是沒有任何的錯(cuò)誤和警告,但總是會出現(xiàn)地些警告或錯(cuò)誤。一般來說警告對系統(tǒng)正常運(yùn)行是沒有影響的,如出現(xiàn)錯(cuò)誤信息也并不一定系統(tǒng)出現(xiàn)異常,如果系統(tǒng)異??蓞⒄斟e(cuò)誤信息來判斷問題所在。25?NXROBO2022圖像可視化工具image_view
單一圖像預(yù)覽工具,使用方法為:
其中/camera為圖像發(fā)布至的TOPIC,實(shí)際使用時(shí)需要具體對待和更改。rqt_image_view
自由圖像預(yù)覽工具,使用方法為:
可自由選擇圖像TOPIC并顯示圖像。這兩款工具均可以保存預(yù)覽的圖像。rviz工具中也可顯示圖像。26$rosrunimage_viewimage_viewimage:=/camera$rosrunrqt_image_viewrqt_image_view?NXROBO20223D可視化工具在實(shí)際的機(jī)器人硬件系統(tǒng)中有很多設(shè)備(例如雙目攝像頭、3D激光雷達(dá)和Kinect傳感器)能夠提供點(diǎn)云格式的3D數(shù)據(jù),實(shí)現(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兩個(gè)Topic使用bz2壓縮算法保存為test.bag文件30$rosbagrecord/camera/tf-j-Otest?NXROBO2022回放消息記錄數(shù)據(jù)回放消息記錄文件,只需要運(yùn)行roscore,而不需要再運(yùn)行其他任何節(jié)點(diǎn)。然后,執(zhí)行類似以下命令:
回放的Topic會發(fā)布出來?;胤胚^程中可以使用空格暫?;蚴褂谩癝”鍵步進(jìn),回放結(jié)束會自動停止。
記錄包文件可以像實(shí)時(shí)會話一樣在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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025上海市安全員考試題庫及答案
- 2025-2030年中國金鹵燈行業(yè)十三五規(guī)劃與發(fā)展前景分析報(bào)告
- 2025-2030年中國辣椒紅色素市場運(yùn)營狀況及發(fā)展前景預(yù)測報(bào)告
- 2025-2030年中國軟包裝復(fù)合膜行業(yè)運(yùn)行動態(tài)及發(fā)展前景預(yù)測報(bào)告
- 2025-2030年中國超高頻RFID市場發(fā)展現(xiàn)狀規(guī)劃研究報(bào)告
- 2025-2030年中國船用液壓舵機(jī)行業(yè)運(yùn)行狀況及發(fā)展趨勢分析報(bào)告
- 2025-2030年中國聚氯乙烯用阻燃劑行業(yè)運(yùn)行態(tài)勢及投資戰(zhàn)略研究報(bào)告
- 2025-2030年中國納米二氧化鈦市場運(yùn)行現(xiàn)狀及投資發(fā)展前景預(yù)測報(bào)告
- 2025-2030年中國硫酸鎳市場運(yùn)營狀況與發(fā)展?jié)摿Ψ治鰣?bào)告
- 2025-2030年中國男士化妝品市場規(guī)模分析及發(fā)展建議研究報(bào)告
- 2025屆廣東省佛山一中石門中學(xué)高考沖刺押題(最后一卷)數(shù)學(xué)試卷含解析
- 《工程勘察設(shè)計(jì)收費(fèi)標(biāo)準(zhǔn)》(2002年修訂本)
- 《電腦的組成》課件
- 《債權(quán)法教學(xué)》課件
- 太傻天書(完整版)
- SZSD01 0012-2024智能交通大數(shù)據(jù)底座數(shù)據(jù)采集規(guī)范
- 醫(yī)療服務(wù)價(jià)格政策培訓(xùn)
- 經(jīng)典廣告歌曲大全(109首)
- 2024-2025學(xué)年北京市豐臺某中學(xué)九年級(上)開學(xué)數(shù)學(xué)試卷(含答案)
- 環(huán)保儀器培訓(xùn)
- 餐飲服務(wù)電子教案 學(xué)習(xí)任務(wù)4 擺臺技能(2)-中餐宴會擺臺
評論
0/150
提交評論