![《鴻蒙機(jī)器人編程》6-ROS調(diào)試與可視化工具-教案_第1頁](http://file4.renrendoc.com/view15/M00/13/3B/wKhkGWeN_QWAZERmAAIcACOP31k316.jpg)
![《鴻蒙機(jī)器人編程》6-ROS調(diào)試與可視化工具-教案_第2頁](http://file4.renrendoc.com/view15/M00/13/3B/wKhkGWeN_QWAZERmAAIcACOP31k3162.jpg)
![《鴻蒙機(jī)器人編程》6-ROS調(diào)試與可視化工具-教案_第3頁](http://file4.renrendoc.com/view15/M00/13/3B/wKhkGWeN_QWAZERmAAIcACOP31k3163.jpg)
![《鴻蒙機(jī)器人編程》6-ROS調(diào)試與可視化工具-教案_第4頁](http://file4.renrendoc.com/view15/M00/13/3B/wKhkGWeN_QWAZERmAAIcACOP31k3164.jpg)
![《鴻蒙機(jī)器人編程》6-ROS調(diào)試與可視化工具-教案_第5頁](http://file4.renrendoc.com/view15/M00/13/3B/wKhkGWeN_QWAZERmAAIcACOP31k3165.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
ROS調(diào)試與可視化工具ROS程序的調(diào)試為了監(jiān)測ROSnode內(nèi)部代碼執(zhí)行的情況,可以從以下三個(gè)層面著手,使軟件調(diào)試更加容易:輸出調(diào)試信息、動(dòng)態(tài)調(diào)試、ROS組件工具。在編寫程序時(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ì)級別的日志記錄。日志記錄四種方式:Stdout、stderr、logfile、rosout、TOPIC。日志記錄五個(gè)級別:DEBUG(logdebug)、INFO(loginfo)、WARN(logwarn)ERROR(logerr)、FATAL(logfatal)。具體列表如下,左側(cè)為roscpp的日志等級,右側(cè)為rospy的日志等級。不管在終端還是rqt工具中,各級別的日志文字的輸出顏色是不一樣的。DEBUG為綠色,INFO為白色,WARN為黃色,ERROR為紅色,以及FATAL為紫色。所有輸出的調(diào)試信息都附帶其級別和當(dāng)前時(shí)間戳(方括號中的數(shù)值)。時(shí)間戳以公歷時(shí)間計(jì)時(shí),表示自1970年以來的秒和納秒計(jì)數(shù),時(shí)間戳之后是具體的信息。基本信息語句形式為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>。GBD調(diào)試器調(diào)試信息可以大致了解程序的執(zhí)行進(jìn)度及邏輯走向,對于大段計(jì)算算法及bug排除,調(diào)試信息打印顯得有點(diǎn)力不從心。而動(dòng)態(tài)調(diào)試則高效得多,獲取程序的實(shí)時(shí)信息更為直接。對于Linux系統(tǒng)中的可執(zhí)行程序(elf文件),動(dòng)態(tài)調(diào)試一般使用GDB調(diào)試器。為了保證能進(jìn)行源碼級穩(wěn)定的調(diào)試,進(jìn)行GDB調(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ò)誤或問題。對于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會(huì)使用變量
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會(huì)在編譯目錄和當(dāng)前目錄搜索源碼。直接啟動(dòng)GDB:對于不需要參數(shù)設(shè)置和重映像的node運(yùn)行,可以直接運(yùn)行程序,而無需使用標(biāo)準(zhǔn)的rosrun<package><node>的語法。所以只要保證roscore已經(jīng)啟動(dòng),調(diào)試ROS節(jié)點(diǎn)程序如同調(diào)試普通C/C++程序一樣:$gdbexecutable通過rosrun啟動(dòng)GDB:從Indigo版本開始,rosrun工具增加了--prefix選項(xiàng),通過此選項(xiàng)可在GDB環(huán)境下啟動(dòng)node:$rosrun--prefix'gdb-exrun--args'my_packagemy_node通過roslaunch啟動(dòng)GDB:roslaunch文件中的標(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)程。下面是一些GDB常用命令:
命令
描述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ù)中GDB的具體使用請查閱官網(wǎng):/gdb/download/onlinedocs/。二進(jìn)制文件調(diào)試除了GDB,其它工具如性能檢測等功能的工具也同樣可以使用,如Valgrind。另外,如果覺得GDB的不友好顯示是個(gè)障礙,可使用集成GDB的圖形化程序如DDD或GDB自帶的gdbtui。ROS系統(tǒng)診斷工具roswtf有很多時(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ā)生。roswtf工具可以用來檢測ROS系統(tǒng)安裝、環(huán)境變量、功能包、roslaunch文件的潛在問題,而且支持插件擴(kuò)展功能。檢查系統(tǒng)安裝及環(huán)境變量問題直接運(yùn)行roswtf即可。$roswtf檢查功能包需切換到功能包目錄下運(yùn)行roswtf。檢查roslaunch文件,命令格式為:$roswtfyourfile.launch下圖為roswtf運(yùn)行界面:roswtf工具還支持以下選項(xiàng):
--all
roswtf將檢查*ROS_PACKAGE_PATH*變量指向路徑中的所有功能包
--no-plugins禁用roswtf插件
--offline只進(jìn)行離線測試
通常情況下,我們所希望獲得的結(jié)果是沒有任何的錯(cuò)誤和警告,但總是會(huì)出現(xiàn)地些警告或錯(cuò)誤。一般來說警告對系統(tǒng)正常運(yùn)行是沒有影響的,如出現(xiàn)錯(cuò)誤信息也并不一定系統(tǒng)出現(xiàn)異常,如果系統(tǒng)異常可參照錯(cuò)誤信息來判斷問題所在??梢暬ぞ遡mage_view
單一圖像預(yù)覽工具,使用方法為:$rosrunimage_viewimage_viewimage:=/camera其中/camera為圖像發(fā)布至的TOPIC,實(shí)際使用時(shí)需要具體對待和更改。rqt_image_view
自由圖像預(yù)覽工具,使用方法為:$rosrunrqt_image_viewrqt_image_view可自由選擇圖像TOPIC并顯示圖像。這兩款工具均可以保存預(yù)覽的圖像。rviz工具中也可顯示圖像。在實(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ù)按照之間的相對位置在正確的位置繪制。rviz啟動(dòng)方式:直接啟動(dòng)$rviz$rosrunrvizrviz以插件形式通過rqt啟動(dòng)$rosrunrqt_rvizrqt_rviz或先啟動(dòng)rqt,再在GUI中手動(dòng)加載rviz插件。以下是rviz使用界面:數(shù)據(jù)保存與回放工具rosbag我們可以使用rosbag記錄數(shù)據(jù),通過rosbag工具的record命令執(zhí)行數(shù)據(jù)記錄操作。$rosbagrecord/camera/tf-j-Otest/camera和/tf兩個(gè)Topic使
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025版新教材高中物理 第一章 章末總結(jié)說課稿 新人教版必修第一冊
- 2024六年級英語上冊 Module 2 Unit 2 There are lots of beautiful lakes in China說課稿 外研版(三起)
- 14《刷子李》說課稿-2023-2024學(xué)年統(tǒng)編版語文五年級下冊001
- 2023三年級數(shù)學(xué)下冊 五 面積第5課時(shí) 面積單位的換算說課稿 北師大版
- 2023九年級物理下冊 專題六 材料、信息和能源A 材料、信息的傳遞說課稿 (新版)新人教版
- 2024-2025學(xué)年新教材高中政治 第3單元 就業(yè)與創(chuàng)業(yè) 第7課 第2框 心中有數(shù)上職場說課稿 新人教版選擇性必修2001
- 2024新教材高中化學(xué) 第五章 化工生產(chǎn)中的重要非金屬元素 第二節(jié) 第一課時(shí) 氮的氧化物說課稿 新人教版第二冊
- 2023-2024學(xué)年南方版(湖南)(2019)信息技術(shù)五年級下冊 《第三單元 信息的發(fā)布與交流 10 電鴿傳書》說課稿
- 甲氨蝶呤項(xiàng)目融資渠道探索
- 二零二五年度高層建筑消防系統(tǒng)施工及設(shè)備安裝服務(wù)合同3篇
- 2025版茅臺(tái)酒出口業(yè)務(wù)代理及銷售合同模板4篇
- 2025年N1叉車司機(jī)考試試題(附答案)
- 《醫(yī)院財(cái)務(wù)分析報(bào)告》課件
- 2024年考研政治試題及答案
- 2024-2025學(xué)年人教版數(shù)學(xué)六年級上冊 期末綜合卷(含答案)
- 天津市部分區(qū)2023-2024學(xué)年高二上學(xué)期期末考試 物理 含解析
- 2025年初級社會(huì)工作者綜合能力全國考試題庫(含答案)
- vc約起來史上最全180個(gè)知名投資人聯(lián)系方式
- 社會(huì)穩(wěn)定風(fēng)險(xiǎn)評估報(bào)告風(fēng)險(xiǎn)評估參考
- GB/T 14343-2008化學(xué)纖維長絲線密度試驗(yàn)方法
- 制冷操作證培訓(xùn)教材-制冷與空調(diào)設(shè)備運(yùn)行操作作業(yè)培課件
評論
0/150
提交評論