一、基礎配置
1.ros 插件安裝
Visual Studio Code Extension for ROS;通過Extensions搜索安裝;
2.c_cpp_properties.json配置
ctrl+shift+p 打開command palette指令面板,找到C/C++:Edit Confiurations(JSON),自動生成c_cpp_properties.json配置文件。
輸出配置、編譯命令文件:
依次執行以下命令,創建並初始化workspace;
mkdir -p ros_ws/src
cd ros_ws/src/
catkin_init_workspace
cd ..
catkin_make
執行:
catkin_make -DCMAKE_EXPORT_COMPILE_COMMANDS=Yes
在ROS工作空間的build文件夾下面,會生成一個compile_commands.json文件;將其路徑增加到c_cpp_properties.json文件中,如下:
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [],
"compilerPath": "/usr/bin/gcc",
"cStandard": "gnu11",
"cppStandard": "c++17",
"intelliSenseMode": "clang-x64",
"compileCommands": "${workspaceFolder}/build/compile_commands.json"//編譯命令文件
}
],
"version": 4
}
這樣就可以找到全部頭文件了,如ros/ros.h,使用代碼智能提示、跳轉等功能。
3.task.json配置
配置完成後,按ctrl+shift+b,可直接關聯、執行catkin_make進行程序構建;
Ctrl+shift+P進入命令模式,鍵入tasks: Configure Task,自動生成task.json文件,對其進行更改,如下:
{
"version": "2.0.0",
"tasks": [
{
//×××××××××× 按以下配置,ctrl+shift+b 會在當前工作空間下執行catkin_make命令 ××××××××//
"label": "catkin_make: build",//代表提示的描述性信息
"type": "shell",//可以選擇shell或者process,如果是shell代碼是在shell裏面運行一個命令,如果是process代表作爲一個進程來運行
"command": "catkin_make",//這個是我們需要運行的命令
"args": [],//如果需要在命令後面加一些後綴,可以寫在這裏,比如-DCATKIN_WHITELIST_PACKAGES=“pac1;pac2”
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"reveal": "always"//可選always或者silence,代表是否輸出信息
},
"problemMatcher": [
"$catkin-gcc"
],
}
]
}
還需要提一下,我們打開vscode一定要在我們的ROS工作空間目錄打開:
code .
因爲這樣你的vscode的Base path就是你打開vscode的位置,在我們執行catkin_make的時候,需要用的這個Base path,必須是我們的ROS工作空間,纔可以正常catkin_make。
4.launch.json配置
用來進行GDB debug;
這裏的配置是對C++程序進行調試。
菜單窗口:Run -> Add Configuration... , 自動生成launch.json文件;對其進行如下配置:
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",//// 配置名稱,在調試配置下拉列表中顯示
"type": "cppdbg",// // 調試器類型 該值自動生成
"request": "launch",//// 調試方式,還可以選擇attach
"program": "${workspaceFolder}/devel/lib/my_second_pkg/hello_world_node_2",//自己給定。要調試的可執行程序(完整路徑,支持相對路徑)
"args": [],// 傳遞給上面程序的參數,沒有參數留空即可
"stopAtEntry": false,// 是否停在程序入口點(停在main函數開始)
"cwd": "${workspaceFolder}",// 調試程序時的工作目錄
"environment": [], //針對調試的程序,要添加到環境中的環境變量. 例如: [ { "name": "squid", "value": "clam" } ]
"externalConsole": false,//如果設置爲true,則爲應用程序啓動外部控制檯。 如果爲false,則不會啓動控制檯,並使用VS Code的內置調試控制檯。
"MIMode": "gdb",//要使用的調試工具
"setupCommands": [
{
"description": "爲 gdb 啓用整齊打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
// {
// "name": "Python: 當前文件",
// "type": "python",
// "request": "launch",
// "program": "${file}",
// "console": "integratedTerminal"
// },
// {
// "name": "ROS: Attach",
// "type": "ros",
// "request": "attach"
// },
]
}
這裏的“program”參數是需要自己給定的,比如我要調試一個ROS節點,那麼就需要找到這個節點生成的可執行文件的路徑,然後添加到“program”參數後面,如果要調試其他節點,還需要手動修改。
程序編譯時要加上debug選項,詳見這裏。
catkin_make -DCMAKE_BUILD_TYPE=Debug
VScode + cmakelist.txt + launch.json通過斷點調試:
cmakelists里加一句
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")
二、相關命令
ctrl+shift+p 打開指令面板,>ros:顯示可調用命令。如下:
參考:
1.ros項目調試:vscode下配置開發ROS項目https://blog.csdn.net/weixin_35695879/article/details/85254422
2.ros項目調試:ROS項目使用GDB調試https://blog.csdn.net/weixin_35695879/article/details/85254399
3.ROS——vscode配置 https://blog.csdn.net/Kalenee/article/details/103828448