一、基础配置
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 + CMakeLists.txt + launch.json通过断点调试:
CMakeLists.txt 里加一句
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