VS Code创建、调试ROS项目
一、创建工作空间
首先创建一个cMake工作空间,用到了catkin_make其实就是 cmake … make 两个步骤的缩写。
$ mkdir -p ~/base_try/src
$ cd ~/base_try/
$ catkin_make
注意:每次打开工作空间base_try文件要source一下
cd ~/base_try
source devel/setup.bash
除此之外,启动ROS还需要source一下:
~/.bashrc 配置
接下来需要将当前ROS工程的环境变量配置,输入:
echo "source ~/ros_test/devel/setup.bash" >> ~/.bashrc
之后直接source即可
source ~/.bashrc
至此,已经创建好了工作空间,
二、创建ROS项目
用VSCode打开ros_test文件夹,会标示该文件为catkin_workspace,build、devel、src都在,除此之外,会自动生成vscod文件里面有两个json文件:c_cpp_properties.json和setting.json.
如果不生成文件夹请手动创建
目录结构如下
c_cpp_properties.json
//cpp 调试配置
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**", //头文件位置
"/opt/ros/melodic/include/**" //ros头文件位置
],
"defines": [],
"compilerPath": "/usr/bin/gcc",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "clang-x64",
"compileCommands": "${workspaceFolder}/build/compile_commands.json",
"compilerArgs": [],
"browse": {
"path": [
"${workspaceFolder}/**"
],
"limitSymbolsToIncludedHeaders": true
}
}
],
"version": 4
}
若compileCommands行报错
使用
catkin_make -DCMAKE_EXPORT_COMPILE_COMMANDS=Yes
生成build下面的compile_commands.jason文件
settings.json
{
"python.autoComplete.extraPaths": [
"/home/ubuntu/base_try/devel/lib/python2.7/dist-packages",
"/opt/ros/melodic/lib/python2.7/dist-packages"
]
}
launch.jason
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/src/robot_bringup/src/bringup.cpp",//可执行文件路径
"args": [],
"stopAtEntry": true,
"cwd": "${workspaceFolder}",
"environment": [],
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
//"preLaunchTask": "make build"//最好删了,不然会影响调试,每次调试都直接执行make build
}
]
}
tasks.jason
{
"version": "2.0.0",
"tasks": [
{
"label": "catkin_make", //代表提示的描述性信息
"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": "$msCompile"
},
]
}
三、创建ROS包
右键点击"src"文件夹,右键弹出选项中,点击"Create Catkin Package",输入包的名称bringup_base,按Enter确认,输入包的依赖“std_msgs rospy roscpp”,空格隔开,按Enter确认。
包创建完成
在src文件夹下创建的程序包bringup_baset,包含include、src和CMakeLists.txt、package.xml。
在程序包bring_up/src 目录下创建的cpp还是没有找到头文件
解决办法如下
Cmakelists.txt 配置
配置功能包内的Cmakelists.txt
添加下面n行
# 头文件路径
include_directories(
include
${catkin_INCLUDE_DIRS}
)
# 生成可执行文件
add_executable( bringup_base src/bringup.cpp )
# 链接库
target_link_libraries(bringup_base ${catkin_LIBRARIES})
再编译一次
cd ~/base_try
catkin_make
参考:
https://zhuanlan.zhihu.com/p/150331361