ros項目調(diào)試:vscode下配置開發(fā)ROS項目的詳細教程
引言
在vscode下面配置用于ROS項目開發(fā)的環(huán)境
包括頭文件目錄的配置,catkin_make命令的配置,GDB debug的配置,以及ROS插件。
vscode頭文件目錄配置安裝“c/c++”插件
到vscode左邊欄的EXTENSIONS中,搜索“C/C++”并安裝
生成c_cpp_properties.json
vscode自身配置文件全部在./.vscode/目錄下
但是,在最開始對自己新建的目錄和文件進行編輯后,文件夾里面是沒有.vscode目錄的
同時,我們的cpp文件代碼中的 #include <> 這句話是有下劃線警示的,提示找不到文件
這時使用鼠標(biāo)懸浮功能,點擊“紅色燈泡”,點擊edit c_cpp_properties.json選項,vscode會自動在配置文件夾中新建.vscode/文件夾,同時在里面初始化了c_cpp_properties.json文件
輸出編譯命令文件
這時,可能還有一些頭文件找不到,比如ros/ros.h,我們還需要配置一些東西。
用命令行編譯我們寫的c++代碼,同時輸出編譯信息文件,這里以ROS為例
catkin_make -DCMAKE_EXPORT_COMPILE_COMMANDS=Yes
這個命令會輸出一個compile_commands.json文件在ROS工作空間的build文件夾下面
然后在c_cpp_properties.json文件添加下面一段話
"compileCommands": "${workspaceFolder}/build/compile_commands.json"
修改后的c_cpp_properties.json文件如下所示:
{ "configurations": [ { "name": "Linux", "includePath": [ "${workspaceFolder}/**" ], "defines": [], "compilerPath": "/usr/bin/gcc", "cStandard": "c11", "cppStandard": "c++17", "intelliSenseMode": "clang-x64", "compileCommands": "${workspaceFolder}/build/compile_commands.json" } ], "version": 4 }
這樣,就基本可以找到全部頭文件了,然后就可以使用代碼提示來碼代碼了。
catkin_make設(shè)置
vscode沒有內(nèi)置make功能,需要借助Task功能進行配置
Ctrl+shift+P進入命令模式,鍵入tasks: Configure Task
此時會在.vscode文件夾下面自動生成task.json文件,如下所示:
{ "version": "2.0.0", "tasks": [ { "label": "catkin_make", //代表提示的描述性信息 "type": "shell", //可以選擇shell或者process,如果是shell代碼是在shell里面運行一個命令,如果是process代表作為一個進程來運行 "command": "catkin_make",//這個是我們需要運行的命令 "args": [],//如果需要在命令后面加一些后綴,可以寫在這里,比如-DCATKIN_WHITELIST_PACKAGES=“pac1;pac2” "group": {"kind":"build","isDefault":true}, "presentation": { "reveal": "always"http://可選always或者silence,代表是否輸出信息 }, "problemMatcher": "$msCompile" }, ] }
其中,這行設(shè)置
"group": {"kind":"build","isDefault":true},
代表將我們定義的這個task添加到build組里面,這樣就可以中Ctrl+Shift+B快捷鍵來找到編譯命令,命令名稱就是在label里面定義的,如果"isDefault":true那么就代表直接執(zhí)行command,如果為false還需要在build下拉里面選一下,我們這里就是label名字:catkin_make
還需要提一下,我們打開vscode一定要在我們的ROS工作空間目錄打開:
code .
因為這樣你的vscode的Base path就是你打開vscode的位置,在我們執(zhí)行catkin_make的時候,需要用的這個Base path,必須是我們的ROS工作空間來可以正常catkin_make
這樣配置好了之后,我們之后再進行編譯ROS工作空間的時候,就可以方便的使用快捷方式
Ctrl+Shift+B
GDB debug的配置
GDB調(diào)試器是調(diào)試C++代碼的神器,ROS項目本質(zhì)上也是一個ROS項目,因此也可以用GDB進行調(diào)試
在vscode里面已經(jīng)繼承了GDB調(diào)試器,我們需要做的就是配置launch.json文件
點擊左側(cè)工具欄”Debug“,點擊”齒輪“按鈕,此時.vscode文件夾下面就會自動生成launch.json文件,如下所示
{ "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", // 配置名稱,將會在調(diào)試配置下拉列表中顯示 "type": "cppdbg", // 調(diào)試器類型 該值自動生成 "request": "launch", // 調(diào)試方式,還可以選擇attach "program": "${workspaceRoot}/devel/lib/waypoint_follower/pure_persuit", //要調(diào)試的程序(完整路徑,支持相對路徑) "args": [], // 傳遞給上面程序的參數(shù),沒有參數(shù)留空即可 "stopAtEntry": false, // 是否停在程序入口點(停在main函數(shù)開始) "cwd": "${workspaceRoot}", // 調(diào)試程序時的工作目錄 "environment": [], //針對調(diào)試的程序,要添加到環(huán)境中的環(huán)境變量. 例如: [ { "name": "squid", "value": "clam" } ] "externalConsole": false, //如果設(shè)置為true,則為應(yīng)用程序啟動外部控制臺。 如果為false,則不會啟動控制臺,并使用VS Code的內(nèi)置調(diào)試控制臺。 "MIMode": "gdb", // VSCode要使用的調(diào)試工具 "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ] } ] }
需要注意的是,這里面的“program”參數(shù)是需要自己給定的,比如我要調(diào)試一個ROS節(jié)點,那么就需要找到這個節(jié)點生成的可執(zhí)行目標(biāo),就是可執(zhí)行的二進制文件,然后添加到“program”參數(shù)后面,如果要調(diào)試其他節(jié)點,那么還需要手動修改這里
除此之外,因為我們不是roslaunch啟動的節(jié)點,還需要一個終端運行roscore,否則會找不到ROS MASTER
"request"參數(shù)里面,gdb在vscode里面提供了launch和attach兩個配置任務(wù)。兩者的區(qū)別是launch實際上是啟動一個node執(zhí)行指定代碼,同時可以在vscode里面打斷點調(diào)試。 attach是執(zhí)行監(jiān)聽的任務(wù)。
使用vscode進行調(diào)試的手段主要包括單步執(zhí)行,觀察跟蹤變量值等等
更多的GDB調(diào)試命令可以在vscode下方的DEBUG_CONSOLE窗口直接輸入GDB命令 但是要注意需要在原來的GDB命令前面家加上一個前綴“-exec”,如下所示:
-exec b main
有關(guān)于常用的GDB命令總結(jié):GDB的使用
還需要注意的是在Watch窗口添加需要Watch的變量時候,變量名稱要寫全局名稱,包括前面的命令空間都要寫上
基于上面的描述,我們就可以開心的debug了
添加ROS插件安裝
打開vscode的快捷輸入窗口(Ctrl+P)
輸入以下命令,即可安裝ROS插件
ext install ajshort.ros
用法
可以在右鍵點擊一個文件夾,然后選擇creat catkin package,創(chuàng)建一個ROS package
還可以按下(Ctrl+Shift+P),輸入
ros::showMasterStatus
這個命令可以顯示出當(dāng)前ROS通信系統(tǒng)的詳細信息,包括當(dāng)前的所有話題,已經(jīng)話題的所有發(fā)布者和訂閱者
基本上這個vscode的ROS插件就這兩個有用
到此這篇關(guān)于ros項目調(diào)試:vscode下配置開發(fā)ROS項目的詳細教程的文章就介紹到這了,更多相關(guān)vscode配置開發(fā)ROS項目內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 解決VScode配置遠程調(diào)試Linux程序的問題
- 如何通過vscode運行調(diào)試javascript代碼
- 基于VSCode調(diào)試網(wǎng)頁JavaScript代碼過程詳解
- VSCode Golang dlv調(diào)試數(shù)據(jù)截斷問題及處理方法
- VScode Remote SSH通過遠程編輯與調(diào)試代碼
- 使用VSCode和VS2017編譯調(diào)試STM32程序的實現(xiàn)
- VsCode搭建Spring Boot項目并進行創(chuàng)建、運行、調(diào)試
- 使用VSCode開發(fā)和調(diào)試.NET Core程序的方法
- VSCode1.4 搭建Golang的開發(fā)調(diào)試環(huán)境(遇到很多問題)
- Vscode Remote Development遠程開發(fā)調(diào)試的實現(xiàn)思路
- VSCode 搭建 Arm 遠程調(diào)試環(huán)境的步驟詳解
- 分享5個實用的vs調(diào)試技巧
相關(guān)文章
C++ inline內(nèi)聯(lián)函數(shù)詳解
這篇文章主要介紹了C++ inline內(nèi)聯(lián)函數(shù)詳解,有感興趣的同學(xué)可以借鑒參考下2021-02-02使用c++調(diào)用windows打印api進行打印的示例代碼
這篇文章主要介紹了使用c++調(diào)用windows打印api進行打印的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06Windows安裝配置C/C++(VS2017)OpenSSL開發(fā)環(huán)境配置教程
這篇文章主要為大家詳細介紹了Windows安裝配置C/C++,OpenSSL開發(fā)環(huán)境配置教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07C語言 數(shù)據(jù)結(jié)構(gòu)與算法之字符串詳解
這篇文章將帶大家深入了解C語言數(shù)據(jù)結(jié)構(gòu)與算法中的字符串,文中主要是介紹了字符串的定義、字符串的比較以及一些串的抽象數(shù)據(jù)類型,感興趣的可以學(xué)習(xí)一下2022-01-01