vscode 开发ROS相关配置

官网参考:http://wiki.ros.org/IDEs

 

一、基础配置

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

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值