之前用RoboWare Studio
,但是它已经很久没有更新了,官网也没有了。Kinect版本也快不用了,趁这个机会,正好开始用VScode.
官方教程:
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
从官网下载并安装。
https://code.visualstudio.com/
参考链接:https://blog.csdn.net/MSNH2012/article/details/100512253
打开文件夹
选项进行打开。创建文件夹
输入文件夹名称,例如:test,点击确定。src
.在新建工作空间
时,会在test目录下自动生成一个.vscode
文件夹,其内自动有2个.json
文件。c_cpp_properties.json
和setting.json
如果没有生成,重启vscode试试。
或者通过按Ctrl + Shift + P,输入c/c++: edit configurations(JSON), 手动生成.
另外,记得把新建的工作空间source一下。
查看工作空间情况
$ echo $ROS_PACKAGE_PATH
右键
点击"src"文件夹,右键弹出选项中,点击"Create Catkin Package",输入包的名称ros_test,按Enter确认,输入包的依赖“std_msgs roscpp”,空格隔开,按Enter确认。系统自动创建CMakeLists.txt及package.xml文件。
也可通过按Ctrl + Shift + P
,输入ros:Create Catkin Package
配置功能包。
注:没有在创建工作空间时的两个.json文件,是无法生成功能包的。可能会没反应或报错如下:
命令"ROS: Create Catkin Package"导致错误 (command ‘ros.createCatkinPackage’……
Ctrl + Shift + P
,输入ros:start core
启动roscore。Ctrl + Shift + P
,输入ros:run a rose executable
,依次输入对应的package及节点,参数。或者直接下终端rosrun ………………
在未配置过调试前,没有launch.json
文件。通过Ctrl + Shift + D
,下拉添加配置,自动生成该文件。断点调试有如下几种方式,这里主要讲c/c++ gdb启动
:
先说一下,使用这种调试方法,不需要先运行节点。
该方式会生成launch.json
:
{
"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
}
]
}
需要修改其中program
为需要调试的可执行程序。更改为编译后的可执行文件的路径下的文件(需要二进制文件),对应ROS通过catkin_make生产可执行文件的路径通常在 /devel/lib/ 下,后面跟上你设置好的package名和可执行文件名例如:
"program": "${workspaceFolder}/devel/lib/ros_test/talker"
需要注意,有些教程用了${workspaceRoot}/devel/lib/ros_test/talker
, 自己看哪个可行。
另外,这里的"request": "launch"
,系统也提示我可以用"request": "attach"
模式,但是我变成attach后,系统又提示我无法识别了。。
然后:
Ctrl + Shift + P
,输入ros:start core
启动roscore。CMakeLists.txt
中,project
后添加参数SET(CMAKE_BUILD_TYPE Debug)
,然后重新catkin_make:cmake_minimum_required(VERSION 2.8.3)
project(ros_test)
SET(CMAKE_BUILD_TYPE Debug)
或者是catkin_make在编译功能包时,添加catkin_make的参数
$ catkin_make -DCMAKE_BUILD_TYPE=Debug
如果工作空间下由多个功能包,可以在编译时添加-DCATKIN_WHITELIST_PACKAGES
编译指定功能包
$ catkin_make -DCMAKE_BUILD_TYPE=Debug -DCATKIN_WHITELIST_PACKAGES="package1;package2"
另外,如果开始断点调试时,出现报错:
poll failed with error Interrupted system call
解决方法是:
打开~/.gdbinit(如果没有这个文件则自己新建一个同名文档),然后添加一下三行即可。
set target-async 1
set pagination off
set non-stop on
该报错参考链接:
https://blog.csdn.net/ABC_ORANGE/article/details/102665792
attach调试方法的优势
https://blog.csdn.net/hello_crayon/article/details/40350291
参考链接:
https://blog.csdn.net/Kalenee/article/details/103828448
CMakeLists.txt
中,project
后添加参数SET(CMAKE_BUILD_TYPE RelWithDebInfo)
Ctrl + Shift + P
,输入>ros::run运行节点程序(也可以手动运行,需要加载环境)我在这里运行时,还是会出现’poll failed with error Interrupted system call’,但是不影响调试。
另外就是,我这里变量显示的不太正常。但上面那种方式就没问题。
注意,使用这种方法,就不需要launch.json
的配置了。
参考链接:
https://blog.csdn.net/Kalenee/article/details/103828448
另外,查到一个比较官方的方法介绍,有兴趣的可以看一下:
http://www.lib4dev.in/info/MrGnomes/VS_Code_ROS/186882206#3-intellisense
其中还对c_cpp_properties.json
里的includePath
做了介绍。
在我的使用中,一共用到了三个.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