一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - C/C++ - ros項(xiàng)目調(diào)試:vscode下配置開(kāi)發(fā)ROS項(xiàng)目的詳細(xì)教程

ros項(xiàng)目調(diào)試:vscode下配置開(kāi)發(fā)ROS項(xiàng)目的詳細(xì)教程

2021-09-22 14:41Coulson的博客 C/C++

這篇文章主要介紹了ros項(xiàng)目調(diào)試:vscode下配置開(kāi)發(fā)ROS項(xiàng)目,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

引言

在vscode下面配置用于ROS項(xiàng)目開(kāi)發(fā)的環(huán)境

包括頭文件目錄的配置,catkin_make命令的配置,GDB debug的配置,以及ROS插件。

vscode頭文件目錄配置安裝“c/c++”插件

到vscode左邊欄的EXTENSIONS中,搜索“C/C++”并安裝

生成c_cpp_properties.json

vscode自身配置文件全部在./.vscode/目錄下

但是,在最開(kāi)始對(duì)自己新建的目錄和文件進(jìn)行編輯后,文件夾里面是沒(méi)有.vscode目錄的

同時(shí),我們的cpp文件代碼中的 #include <> 這句話(huà)是有下劃線(xiàn)警示的,提示找不到文件

這時(shí)使用鼠標(biāo)懸浮功能,點(diǎn)擊“紅色燈泡”,點(diǎn)擊edit c_cpp_properties.json選項(xiàng),vscode會(huì)自動(dòng)在配置文件夾中新建.vscode/文件夾,同時(shí)在里面初始化了c_cpp_properties.json文件

輸出編譯命令文件

這時(shí),可能還有一些頭文件找不到,比如ros/ros.h,我們還需要配置一些東西。

用命令行編譯我們寫(xiě)的c++代碼,同時(shí)輸出編譯信息文件,這里以ROS為例

?
1
catkin_make -DCMAKE_EXPORT_COMPILE_COMMANDS=Yes

這個(gè)命令會(huì)輸出一個(gè)compile_commands.json文件在ROS工作空間的build文件夾下面

然后在c_cpp_properties.json文件添加下面一段話(huà)

?
1
"compileCommands": "${workspaceFolder}/build/compile_commands.json"

修改后的c_cpp_properties.json文件如下所示:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
 "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
}

這樣,就基本可以找到全部頭文件了,然后就可以使用代碼提示來(lái)碼代碼了。

catkin_make設(shè)置

vscode沒(méi)有內(nèi)置make功能,需要借助Task功能進(jìn)行配置

Ctrl+shift+P進(jìn)入命令模式,鍵入tasks: Configure Task

此時(shí)會(huì)在.vscode文件夾下面自動(dòng)生成task.json文件,如下所示:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
 "version": "2.0.0",
 "tasks": [
 {
 "label": "catkin_make", //代表提示的描述性信息
 "type": "shell", //可以選擇shell或者process,如果是shell代碼是在shell里面運(yùn)行一個(gè)命令,如果是process代表作為一個(gè)進(jìn)程來(lái)運(yùn)行
 "command": "catkin_make",//這個(gè)是我們需要運(yùn)行的命令
 "args": [],//如果需要在命令后面加一些后綴,可以寫(xiě)在這里,比如-DCATKIN_WHITELIST_PACKAGES=“pac1;pac2”
 "group": {"kind":"build","isDefault":true},
 "presentation": {
 "reveal": "always"//可選always或者silence,代表是否輸出信息
 },
 "problemMatcher": "$msCompile"
 },
 ]
}

其中,這行設(shè)置

?
1
"group": {"kind":"build","isDefault":true},

代表將我們定義的這個(gè)task添加到build組里面,這樣就可以中Ctrl+Shift+B快捷鍵來(lái)找到編譯命令,命令名稱(chēng)就是在label里面定義的,如果"isDefault":true那么就代表直接執(zhí)行command,如果為false還需要在build下拉里面選一下,我們這里就是label名字:catkin_make

還需要提一下,我們打開(kāi)vscode一定要在我們的ROS工作空間目錄打開(kāi):

code .

因?yàn)檫@樣你的vscode的Base path就是你打開(kāi)vscode的位置,在我們執(zhí)行catkin_make的時(shí)候,需要用的這個(gè)Base path,必須是我們的ROS工作空間來(lái)可以正常catkin_make

這樣配置好了之后,我們之后再進(jìn)行編譯ROS工作空間的時(shí)候,就可以方便的使用快捷方式

Ctrl+Shift+B

GDB debug的配置

GDB調(diào)試器是調(diào)試C++代碼的神器,ROS項(xiàng)目本質(zhì)上也是一個(gè)ROS項(xiàng)目,因此也可以用GDB進(jìn)行調(diào)試

在vscode里面已經(jīng)繼承了GDB調(diào)試器,我們需要做的就是配置launch.json文件

點(diǎn)擊左側(cè)工具欄”Debug“,點(diǎn)擊”齒輪“按鈕,此時(shí).vscode文件夾下面就會(huì)自動(dòng)生成launch.json文件,如下所示

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
 "version": "0.2.0",
 "configurations": [
 {
 "name": "(gdb) Launch", // 配置名稱(chēng),將會(huì)在調(diào)試配置下拉列表中顯示
 "type": "cppdbg", // 調(diào)試器類(lèi)型 該值自動(dòng)生成
 "request": "launch", // 調(diào)試方式,還可以選擇attach
 "program": "${workspaceRoot}/devel/lib/waypoint_follower/pure_persuit", //要調(diào)試的程序(完整路徑,支持相對(duì)路徑)
 "args": [], // 傳遞給上面程序的參數(shù),沒(méi)有參數(shù)留空即可
 "stopAtEntry": false, // 是否停在程序入口點(diǎn)(停在main函數(shù)開(kāi)始)
 "cwd": "${workspaceRoot}", // 調(diào)試程序時(shí)的工作目錄
 "environment": [], //針對(duì)調(diào)試的程序,要添加到環(huán)境中的環(huán)境變量. 例如: [ { "name": "squid", "value": "clam" } ]
 "externalConsole": false, //如果設(shè)置為true,則為應(yīng)用程序啟動(dòng)外部控制臺(tái)。 如果為false,則不會(huì)啟動(dòng)控制臺(tái),并使用VS Code的內(nèi)置調(diào)試控制臺(tái)。
 "MIMode": "gdb", // VSCode要使用的調(diào)試工具
 "setupCommands": [
 {
  "description": "Enable pretty-printing for gdb",
  "text": "-enable-pretty-printing",
  "ignoreFailures": true
 }
 ]
 }
 ]
}

需要注意的是,這里面的“program”參數(shù)是需要自己給定的,比如我要調(diào)試一個(gè)ROS節(jié)點(diǎn),那么就需要找到這個(gè)節(jié)點(diǎn)生成的可執(zhí)行目標(biāo),就是可執(zhí)行的二進(jìn)制文件,然后添加到“program”參數(shù)后面,如果要調(diào)試其他節(jié)點(diǎn),那么還需要手動(dòng)修改這里

除此之外,因?yàn)槲覀儾皇莚oslaunch啟動(dòng)的節(jié)點(diǎn),還需要一個(gè)終端運(yùn)行roscore,否則會(huì)找不到ROS MASTER

"request"參數(shù)里面,gdb在vscode里面提供了launch和attach兩個(gè)配置任務(wù)。兩者的區(qū)別是launch實(shí)際上是啟動(dòng)一個(gè)node執(zhí)行指定代碼,同時(shí)可以在vscode里面打斷點(diǎn)調(diào)試。 attach是執(zhí)行監(jiān)聽(tīng)的任務(wù)。

使用vscode進(jìn)行調(diào)試的手段主要包括單步執(zhí)行,觀察跟蹤變量值等等

更多的GDB調(diào)試命令可以在vscode下方的DEBUG_CONSOLE窗口直接輸入GDB命令 但是要注意需要在原來(lái)的GDB命令前面家加上一個(gè)前綴“-exec”,如下所示:

-exec b main

有關(guān)于常用的GDB命令總結(jié):GDB的使用

還需要注意的是在Watch窗口添加需要Watch的變量時(shí)候,變量名稱(chēng)要寫(xiě)全局名稱(chēng),包括前面的命令空間都要寫(xiě)上

基于上面的描述,我們就可以開(kāi)心的debug了

添加ROS插件安裝

打開(kāi)vscode的快捷輸入窗口(Ctrl+P)

輸入以下命令,即可安裝ROS插件

?
1
ext install ajshort.ros

用法

可以在右鍵點(diǎn)擊一個(gè)文件夾,然后選擇creat catkin package,創(chuàng)建一個(gè)ROS package

還可以按下(Ctrl+Shift+P),輸入

ros::showMasterStatus

這個(gè)命令可以顯示出當(dāng)前ROS通信系統(tǒng)的詳細(xì)信息,包括當(dāng)前的所有話(huà)題,已經(jīng)話(huà)題的所有發(fā)布者和訂閱者

基本上這個(gè)vscode的ROS插件就這兩個(gè)有用

到此這篇關(guān)于ros項(xiàng)目調(diào)試:vscode下配置開(kāi)發(fā)ROS項(xiàng)目的詳細(xì)教程的文章就介紹到這了,更多相關(guān)vscode配置開(kāi)發(fā)ROS項(xiàng)目?jī)?nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://blog.csdn.net/weixin_35695879/article/details/85254422

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美18一19性高清hd4k | 嫩草成人国产精品 | 视频在线观看高清免费 | 日韩无砖专区2020在线 | 亚洲男人天堂a | 日本丰满www色 | 精品性影院一区二区三区内射 | 欧美成人午夜片一一在线观看 | 国产福利一区二区精品视频 | 精品视频久久久久 | 三叶草私人研究所 | 亚洲第成色999久久网站 | 96萝莉 | 精品卡1卡2卡三卡免费网站 | 99色亚洲 | 欧美日韩国产亚洲一区二区三区 | 男人的天堂va | 久久精品国产亚洲AV蜜臀 | 91理论片午午伦夜理片久久 | 免费成年视频 | 国产高清在线观看 | 91污无限制破解安卓2021 | 日韩网站免费 | 日韩免费一级 | 男人午夜免费视频 | 亚洲成色WWW久久网站夜月 | 秋霞黄色 | 日韩欧美一区二区三区 | 亚洲精品私拍国产福利在线 | 美女翘臀内疯狂进出 | 天天综合网天天做天天受 | 亚洲美色综合天天久久综合精品 | 十八女下面流水不遮免费 | 久草在线精彩免费视频 | 午夜福利自怕 | 欧美一级级a在线观看 | 欧美亚洲国产一区二区三区 | 亭亭色| 香蕉免费一区二区三区在线观看 | 国产成人欧美视频在线 | 女同全黄h全肉动漫 |