GVINS网址
安装依赖项
ubuntu-20.04.6
ceres-solver2.0.0(同时系统中安装了ceres-solver2.2.0作为/usr/local/中的默认版本)
想再系统中安装多版本ceres solver参考连接安装多版本ceres solver
编译出现的问题
ceres-solver-2.0.0问题问题展示如下:
针对于ceres solver 2.0.0的版本 需要将对应的gvins中的camakelist文件中的cxx-flag 换成c++14
需要将对应的gvins中的camakelist文件中的cxx-flag 换成c++14
opencv -4.2.0问题问题展示部分如下:
具体的解决方法,参照的博客为:CV部分的解决方法
这里参考的博客含金量都非常高!!!
可作为额外的参考
至此 编译成功
同理,因为VINS-MONO是GVINS的先驱版本,所以,先跑通VINS-MONO,后续只需要在VINS-MONO的依赖基础上添加 gnss_comm即可,这里可以通过:
catkin -DCATKIN_WHITELIST_PACKAGES=“;;;”来选择编译指定的包。
最终实现的VINS-MONO结果如图:
GVINS结果图展示:
如果在clion中实现GVINS的debug,打开工程的时候选择GVINS,前提是:必须要先CATKIN_MAKE后,然后在clion中选择open project 然后
右键选择项目的Reload CMake Project 加载项目的依赖项,
![请添
不然如果将gnss_com同样加载近来的话,会出现很多的报错。
最终的工作空间应该是这样的:
如果有朋友也在用CLIONdebug GVINS的话,可以分享下经验,我遇到了一个问题类似这样问题
不过我的问题是:open函数有关的问题,提示open 打开为空,我排查了一下大致是confige.yaml配置读取参数出现了问题(也就是yaml文件路径错了),我改正的方法是:
- 首先在visensor.f9.launch的文件中关于gvins的节点
看到config_file的路径配置如下,在找到对应的config_path的路径 - 利用clion实现debug,我首先通过getcwd输出了当前的系统运行的工作目录。对应的输出如下:
执行:
输出: - 我的gvins节点设置的arguments是:
- 报出问题后,我选择使用ROS的param参数在readParam中这样实现
最终在clion中成功init begin。
最重要的一步:
如果有CSDN圈内的好友,同样跟我这个小白一样,需要运用IDE去DEBUG项目,同时也需要rosbag play 去不断根据callback的信息去理解代码的逻辑的时候,那么遇到这种case的情况下,你可以继续阅读下面的操作步骤实现step debug。
这里我想点出我的一位良师CSDN导师,老师帮助了我很多,谢谢老师。
这里我debug的是GVINS的项目(所以以GVINS项目为例进行分析:)
项目地址:GVINS
编译器选项:CLION
- 首先ctrl + alt + T打开一个terminal ,然后catkin_make 需要的package文件(如果单独编译包可以选择catkin_make -DCATKIN-WHITE-PACKAGES=" XXX你包的名字". 这样就只编译一个包或者几个包了) 这里我直接通过catkin_make 编译了src下面的所有包
- 通过sorce ./devel/setup.bash激活当前catkin_make workspace工作空间的ROS环境
- 通过官网给的教程
cpproslaunch gvins visensor_f9p.launch
去在第一个终端运行我想要运行的gvins node - 通过再次ctrl + alt + T 打开第二个终端,然后sh /your-path/clion.sh 启动你的clion程序,然后通过选择src下面的gvins项目,右键,然后reload cmake project 来build 你的cmake工程
- 在这里要roscore一下,然后在clion中build完成你的工程后,选择debug的小虫子模式,这样你会发现你的第一个terminal已经出现
说明在clion里面已经成功的实现debug(new node registered with same name)
- 此时在clion中的展示![请添加图片描述](https://i-blog.csdnimg.cn/direct/5c6047e363b64a0bbe965b5eea47688f.png
- 如果想要控制ROSBAG的开启和pause 那么我们只需要通过
rosbag play --clock /your route for bag/
或者rosbag play --rate 0.1 /your bage route/
来控制,pause 按下空格键停止,再次按下空格键开启
也就是:先在terminal终端运行roslaunch gvins visensor_f9p.launch
然后在开一个terminal,source完成之后点击clion的debug小虫子,出现same processing died后,再次运行rviz -d ~/catkin_ws/src/GVINS/config/gvins_rviz_config.rviz
,然后如果存在运行rosbag play后在rviz中不显示,那么我们便可以在rviz中加载config问题解决链接,然后通过rosbag play --pause 或者 --rate 0.001等来控制数据的播放,实现clion debug