前言
之前用
基本介绍
官方教程:
https://code.visualstudio.com/docs
其他:
https://www.jianshu.com/p/11554732b323
https://www.cnblogs.com/shujuan841019/p/5501083.html
插件及小技巧
插件
https://blog.csdn.net/weixin_45601379/article/details/100550421
https://blog.csdn.net/qq_41139830/article/details/85221330
https://www.jianshu.com/p/3eebde5748a6
小技巧
https://www.cnblogs.com/shujuan841019/p/5501083.html
https://www.jianshu.com/p/0cf2130d1b27
vscode安装与ROS插件相关
从官网下载并安装。
https://code.visualstudio.com/
- 中文模式。在vs code左侧选择Extenxions,输入chinese,安装简体中文包。
- ros插件上。我选择了MS的预览版。
网上人很多选了ajshort的版本,但是这个版本已经deprecated. 并且被MS版兼并,虽然MS版还不是很完善。 - c++配置。在Extenxions里面,输入c++,安装c/c++ 及 C++ Intellisense 这两个。
- 配置CMakeLists.txt文件语法高亮。在Extenxions里面,输入txt,安装Txt Syntax。
- 配置msg, srv, action语法高亮。在Extenxions里面,输入msg,安装Msg Language Support。
参考链接:https://blog.csdn.net/MSNH2012/article/details/100512253
创建工作空间及功能包
工作空间
- 如果已经有工作空间,可以通过
打开文件夹 选项进行打开。 - 如果要新建工作空间,可以先
创建文件夹 输入文件夹名称,例如:test,点击确定。 - 然后再创建文件夹
src . - 点击"终端"–>“新建终端”,在终端中输入"catkin_make",系统会自动在test文件夹下创建 “build”, "devel"文件夹和其他配置文件。
在
如果没有生成,重启vscode试试。
或者通过按Ctrl + Shift + P,输入c/c++: edit configurations(JSON), 手动生成.
另外,记得把新建的工作空间source一下。
查看工作空间情况
1 | $ echo $ROS_PACKAGE_PATH |
功能包
也可通过按
注:没有在创建工作空间时的两个.json文件,是无法生成功能包的。可能会没反应或报错如下:
命令"ROS: Create Catkin Package"导致错误 (command ‘ros.createCatkinPackage’……
运行节点
- 启动roscore:通过按
Ctrl + Shift + P ,输入ros:start core 启动roscore。 - 运行节点:通过按
Ctrl + Shift + P ,输入ros:run a rose executable ,依次输入对应的package及节点,参数。或者直接下终端rosrun ………………
断点调试配置
在未配置过调试前,没有
c/c++ gdb启动
先说一下,使用这种调试方法,不需要先运行节点。
该方式会生成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | { "name": "(gdb) 启动", "type": "cppdbg", "request": "launch", "program": "输入程序名称,例如 ${workspaceFolder}/a.out", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "setupCommands": [ { "description": "为 gdb 启用整齐打印", "text": "-enable-pretty-printing", "ignoreFailures": true } ] } |
需要修改其中
1 | "program": "${workspaceFolder}/devel/lib/ros_test/talker" |
需要注意,有些教程用了
另外,这里的
然后:
- 启动roscore:通过按
Ctrl + Shift + P ,输入ros:start core 启动roscore。 - 设置断点,运行调试
- 如果系统像没有断点一样运行,需要配置一下。在
CMakeLists.txt 中,project 后添加参数SET(CMAKE_BUILD_TYPE Debug) ,然后重新catkin_make:
1 2 3 4 | cmake_minimum_required(VERSION 2.8.3) project(ros_test) SET(CMAKE_BUILD_TYPE Debug) |
或者是catkin_make在编译功能包时,添加catkin_make的参数
1 | $ catkin_make -DCMAKE_BUILD_TYPE=Debug |
如果工作空间下由多个功能包,可以在编译时添加
1 | $ catkin_make -DCMAKE_BUILD_TYPE=Debug -DCATKIN_WHITELIST_PACKAGES="package1;package2" |
另外,如果开始断点调试时,出现报错:
poll failed with error Interrupted system call
解决方法是:
打开~/.gdbinit(如果没有这个文件则自己新建一个同名文档),然后添加一下三行即可。
1 2 3 | set target-async 1 set pagination off set non-stop on |
该报错参考链接:
https://blog.csdn.net/ABC_ORANGE/article/details/102665792
ros_attach调试方法
attach调试方法的优势
https://blog.csdn.net/hello_crayon/article/details/40350291
参考链接:
https://blog.csdn.net/Kalenee/article/details/103828448
- 新建configuration设置. 通过添加配置,在.vscode的launch.josn中添加ROS: Attach
- 编译程序(生成类型必须为RelWithDebInfo)。在
CMakeLists.txt 中,project 后添加参数SET(CMAKE_BUILD_TYPE RelWithDebInfo) - 通过按
Ctrl + Shift + P ,输入>ros::run运行节点程序(也可以手动运行,需要加载环境) - 运行ROS:Attach,选择运行程序(选择c++/python,及节点名称)进入断点调试模式。可能有个需要有个确认及授权。
我在这里运行时,还是会出现’poll failed with error Interrupted system call’,但是不影响调试。
另外就是,我这里变量显示的不太正常。但上面那种方式就没问题。
注意,使用这种方法,就不需要
多文件调试ros_launch
参考链接:
https://blog.csdn.net/Kalenee/article/details/103828448
- 创建launch文件,调用调试的节点
- 在.vscode的launch.josn添加ROS: Launch,"target"设置为launch文件的绝对路径。可右键launch文件,获得其文件路径。
- 运行ROS:Launch,选择运行程序进入断点调试模式
另外,查到一个比较官方的方法介绍,有兴趣的可以看一下:
http://www.lib4dev.in/info/MrGnomes/VS_Code_ROS/186882206#3-intellisense
其中还对
.json文件介绍
在我的使用中,一共用到了三个.json文件:
c_cpp_properties.json、setting.json、launch.json
其中,
c_cpp_properties.json 主要是includePath 参数,当有自定义头文件时,需要在其内添加。setting.json 主要是ROS使用python编程,python相关配置,以及其它配置。我这里没有做出改动。launch.json 是在配置调试模式时需要的,C++ 启动 模式下,需要更改program 参数;ros_launch 模式下,需要更改target 参数。- 另外,其他教程中由
task.json ,我这里并未使用。可能是因为我都是手动catkin_make
参考链接:
https://blog.csdn.net/weixin_35695879/article/details/85254422
https://blog.csdn.net/MSNH2012/article/details/100567640
https://blog.csdn.net/ABC_ORANGE/article/details/102665792
https://code.visualstudio.com/docs/cpp/config-linux