一、初识SLAM——VINSmono在VSCode上调试设置
- 对于ROS的调试,必须安装ROS插件,由Microsoft开发,官方参考链接vscode-ros
- 本文在调试前已经按照教程能完全运行官方示例,参照
1 配置文件
- 使用
code .
打开目录时,xxx_ws目录下已经包含了**.vscode目录,该.vscode目录包含c_cpp_properties.json和settings.json**文件
c_cpp_properties.json
- 该文件主要包括"includePath"头文件目录
settings.json
launch.json
- launch.json在调试单独的C++可执行文件和ROS中的C++可执行文件都是必需的,里面的必填的选项是program,设置可执行文件的路径
- 可通过“preLaunchTask"选项,设置tasks.json文件的路径,达到按F5同时编译和调试的功能
tasks.json
- 可设置该文件自动编译代码生成可执行文件,在里面包含可以是任何需要运行的命令
2 xxx.launch
在本例中编写了一个euroc_union.launch文件,用于把VINSmono示例中要运行的三个窗口写入一个.launch文件中
touch ./src/VINS-Mono/vins_estimator/launch/euroc_union.launch
## 添加下列内容
<launch>
<include file="$(find vins_estimator)/launch/euroc.launch"/>
<include file="$(find vins_estimator)/launch/vins_rviz.launch"/>
<node pkg="rosbag" type="play" name="play" args="/home/mu/Desktop/slamdata/Euroc/MH_01_easy.bag"/>
</launch>
3 流程
3.1 设置BUILD_TYPE
## 1 查看CMakeLists.txt中BUILD_TYPE类型,发现其都为set(CMAKE_BUILD_TYPE "Release"),要设置其为Debug才能进行调试
cd VINSmono_ws
grep -r "CMAKE_BUILD_TYPE" *
## 2 替换为Debug
find . -name "CMakeLists.txt" | xargs sed -i 's/set(CMAKE_BUILD_TYPE "Release")/set(CMAKE_BUILD_TYPE "Debug")/g'
3.2 设置c_cpp_properties.json和settings.json
ctrl+shift+p
打开命令面板,执行“ROS:Update C++ Proterties”,会更新两个文件- c_cpp_properties.json 内容参照c_cpp_properties.json
- settings.json内容参照settings.json
3.3 设置launch.json
-
关闭所有打开的文档——在左侧Run and Debug——create a launch.json file——ROS:Launch[ROS:Attach]——vins_estimator——euroc_union.launch
-
说明:
- 关闭打开的文档是防止vscode误认为你要为.cpp文件创建launch.json
- 关于第四个选项,ROS:Launch是给roslaunch命令来调试,而xxx.launch是为了一次性启动多个节点,所以ROS:Launch用来调试多个节点选择,而ROS:Attach是给rosrun命令来调试P,所以ROS:Attach用来调试一个节点选择
3.4 Debug
-
rqt_graph可以查看节点之间的关系,由此,得知从feature_tracker节点开始
-
在feature_tracker_node.cpp的mian函数里打个断点,F5就可以调试运行了
备忘
VSCODE快捷键
F2
变量统一重命名后,Shift+Enter
预览变量重命名的效果
Ctrl+Enter
在下方一行插入
自定义copy line down为Ctrl+d