如何把ethz-asl/rovio项目跑起来

1 项目地址

ethz-asl/rovio是什么项目就不多介绍了。
https://github.com/ethz-asl/rovio

2 环境要求

安装好ROS的环境,具体就不再这里展开,具体查看ros官网wiki。
我这里Ubuntu的版本是20.04,bash用的是zsh

3 代码依赖

image.png
使用ros编译的基本规范,src目录下分别下载这2个项目,也就是
image.png
https://github.com/ethz-asl/kindr)
当然别忘了在rovio的项目下,执行git submodule update --init --recursive,拉取lightweight_filtering项目。

4 如何编译

如果使用catkin_make编译,会遇到下面即将提到的第一个问题。
强烈建议使用catkin build rovio --cmake-args -DCMAKE_BUILD_TYPE=Release进行编译。

一定要加上--cmake-args -DCMAKE_BUILD_TYPE=Release参数选项,表示以release的方式编译代码,程序的执行效率更高,否则运行会出现明显的卡顿。

第一个问题&fix

使用catkin_make编译,错误提示如下。
image.png
解决方法,使用catkin_make_isolated,其原因是kindr这个项目并不是用catkin的方式管理的,而是用cmake的方式。

第二个错误&fix

提示未定义变量。
image.png
原因是作者开发时,使用的OpenCV是V2版本,现在我们的环境,OpenCV用的V4版本,其中有些变量已经不兼容了,所以需要根据OpenCV的版本更改变量的名称。
按照下面的方法修改2个文件,我是参考这个修改的:https://github.com/ethz-asl/rovio/pull/252

--- a/include/rovio/ImgUpdate.hpp
+++ b/include/rovio/ImgUpdate.hpp
@@ -586,8 +586,12 @@ ImgOutlierDetection<typename FILTERSTATE::mtState>,false>{
void commonPreProcess(mtFilterState& filterState, const mtMeas& meas){
assert(filterState.t_ == meas.aux().imgTime_);
for(int i=0;i<mtState::nCam_;i++){
-      if(doFrameVisualisation_){
+      if (doFrameVisualisation_) {
+#if (CV_MAJOR_VERSION <= 3)
cvtColor(meas.aux().pyr_[i].imgs_[0], filterState.img_[i], CV_GRAY2RGB);
+#else
+        cvtColor(meas.aux().pyr_[i].imgs_[0], filterState.img_[i], cv::COLOR_GRAY2RGB);
+#endif
}
}

image.png

--- a/include/rovio/featureTracker.hpp
+++ b/include/rovio/featureTracker.hpp
@@ -125,7 +125,11 @@ class FeatureTrackerNode{
     pyr_.computeFromImage(img_,true);
 
     // Drawing
+#if (CV_MAJOR_VERSION <= 3)
     cvtColor(img_, draw_image_, CV_GRAY2RGB);
+#else
+    cvtColor(img_, draw_image_, cv::COLOR_GRAY2RGB);
+#endif

image.png

5 下载数据集

下载地址:
http://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets
Snipaste_2023-04-13_17-26-50.png
我选择是第一个。如果使用浏览器下载比较慢,可以使用BitComet等类似的软件,速度会快不少。
数据集我放在workspace的datasets目录下,如下图所示,
image.png

**(非常重要)**在数据所在的目录下,手动新建一个rovio的文件夹。
后续程序运行,会在这个目录报错log,如果没有找到这个文件夹,程序会报错。

6 运行

第一步:修改launch文件

修改rovio/launch/rovio_rosbag_node.launch文件,指定上文中数据集所存放的路径。
image.png

第二步:加载launch文件

首先 source devel/setup.zsh或者source devel_isolated/setup.zsh
然后执行,roslaunch rovio rovio_rosbag_node.launch

image.png
到此为止,恭喜,程序可以顺利运行了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值