栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Ubuntu18.04配置Cube-SLAM

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Ubuntu18.04配置Cube-SLAM

Code:https://github.com/shichaoy/cube_slam

Notes:本文描述笔者再Ubuntu18.04安装Cube-SLAM遇到的相关问题和解决方法。

配置相关问题或者Object SLAM相关科研问题欢迎通过邮件联系笔者交流:lidong8421bcd@gmail.com(基本保证两个工作日内回复邮件)

配置过程 1.环境配置

ROS环境配置:

mkdir -p ~/catkin_ws_Cube-SLAM/src
cd catkin_ws_Cube-SLAM/src/
catkin_init_workspace
cd ..
catkin_make
source devel/setup.sh
catkin_make install
echo "source ~/catkin_ws_Cube-SLAM/devel/setup.bash" >> ~/.bashrc

代码下载:

cd src/
git clone https://github.com/shichaoy/cube_slam.git
2.代码编译

编译依赖项:

cd cube-slam/
sh install_dependenices.sh

编译工作空间:

 cd ../..
 catkin_make -j4

catkin_ws_Cube-SLAM/src/cube_slam/detect_3d_cuboid/src/ 下面文件报错如下:

error: ‘std::vector’ has not been declared
error: expected ‘,’ or ‘...’ before ‘<’ token
error: ‘all_strings’ was not declared in this scope

分析:看github的issue,这个问题是Ubuntu18.04编译经常会出现的问题。

解决方法:

  • 1 :在功能包的CMAKELIST中添加 set(CMAKE_CXX_STANDARD 14),在几个C++文件中添加:#include , error: ‘iota’ is not a member of ‘std’ 报错问题没了

  • 2:在以下几个文件中添加:#include 相关报错问题解决

catkin_ws_Cube-SLAM/src/cube_slam/detect_3d_cuboid/src/box_proposal_detail.cpp
catkin_ws_Cube-SLAM/src/cube_slam/detect_3d_cuboid/src/object_3d_util.cpp
catkin_ws_Cube-SLAM/src/cube_slam/detect_3d_cuboid/src/matrix_utils.cpp
catkin_ws_Cube-SLAM/src/cube_slam/detect_3d_cuboid/include/detect_3d_cuboid/detect_3d_cuboid.h
catkin_ws_Cube-SLAM/src/cube_slam/detect_3d_cuboid/include/detect_3d_cuboid/matrix_utils.h
catkin_ws_Cube-SLAM/src/cube_slam/detect_3d_cuboid/include/detect_3d_cuboid/object_3d_util.h
  • 3 :orb_object_slam下C++文件报错:error: ‘usleep’ was not declared in this scope,经典ORB-SLAM2报错问题

解决方法:在相关报错的文件上加入头文件 #include。

#以下文件要添加#include
catkin_ws_Cube-SLAM/src/cube_slam/orb_object_slam/src/LocalMapping.cc
catkin_ws_Cube-SLAM/src/cube_slam/orb_object_slam/src/LoopClosing.cc
catkin_ws_Cube-SLAM/src/cube_slam/orb_object_slam/src/System.cc
catkin_ws_Cube-SLAM/src/cube_slam/orb_object_slam/src/Viewer.cc

完成之后编译成功。

运行:roslaunch object_slam object_slam_example.launch

demo可以正常跑。

3.数据集下载

这里因为作者使用的数据集有格式要求,暂且使用作者给的两个数据集(作者处理好了相关格式),后续会自己制作数据集测试。 这里作者给了两个数据集,分别对应静态情况和动态情况。

(1)Static datasets

  • 在https://drive.google.com/open?id=1FrBdmYxrrM6XeBe_vIXCuBTfZeCMgApL链接上下载,数据集名字为:Seq_07

(2)Dynamic datasets

  • 在 https://drive.google.com/drive/folders/1T2PmK3Xt5Bq9Z7UhV8FythvramqhOo0a?usp=sharing下载,数据集名字为:0018

这里我将两个数据集解压之后放到该路径下:catkin_ws_Cube-SLAM/src/cube_slam/Datasets

4.设置路径启动代码

(1)跑Static datasets

  • 这里需要先将mono.launch文件中 中的路径修改为自己数据集的路径,我这里修改为:/home/cvpr/catkin_ws_Cube-SLAM/src/cube_slam/Datasets/seq_07-20220720T061819Z-001/seq_07

  • 然后报错如下:

Loading ORB Vocabulary. This could take a while...
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc
[ros_mono-3] process has died [pid 1257, exit code -6, cmd /home/cvpr/catkin_ws_Cube-SLAM/devel/lib/orb_object_slam/ros_mono /home/cvpr/catkin_ws_Cube-SLAM/src/cube_slam/orb_object_slam/Vocabulary/ORBvoc.bin /home/cvpr/catkin_ws_Cube-SLAM/src/cube_slam/orb_object_slam/Examples/Monocular/KITTI04-12_me.yaml /camera/image_raw:=/kitti/left/image_raw __name:=ros_mono __log:=/home/cvpr/.ros/log/48a4443c-07f6-11ed-a895-74ee2aeddddc/ros_mono-3.log].
log file: /home/cvpr/.ros/log/48a4443c-07f6-11ed-a895-74ee2aeddddc/ros_mono-3*.log

这里是词袋文件的问题,即mono.launch中 args="$(find orb_object_slam)/Vocabulary/ORBvoc.bin 并没有找到这个文件;

解决方法:这里 cube_slam/orb_object_slam/Vocabulary 提供了将txt词袋转换为二进制的bin词袋的代码。这里我使用这个代码进行词袋转换有点问题,索性就直接下载了一个二进制词袋:https://github.com/nxyzgf/sgg-dbow2/blob/master/ORBvoc.bin

  • 运行时,仍然报错:Gtk-ERROR **: 04:42:33.691: GTK+ 2.x symbols detected. Using GTK+ 2.x and GTK+ 3 in the same process is not supported;这里这应该是linux系统同时安装了GTK+ 2.x 和 GTK+ 3导致的,参考:https://blog.csdn.net/weixin_39768247/article/details/111855987/,卸载opencv之后又重新装一边,同时将ROS的workspace中的build和devel删除重新编译。

运行:roslaunch orb_object_slam mono.launch 正常。

然后跑ROS的bag数据集:rosbag play left_full_gray.bag

(2)跑Dynamic datasets

  • 先修改mono_dynamic.launch文件:将文件中 改为自己数据集的地址:/home/cvpr/catkin_ws_Cube-SLAM/src/cube_slam/Datasets/0018-20220720T062223Z-001/0018 即可

运行:

roslaunch orb_object_slam mono_dynamic.launch 
rosbag play mono.bag 

效果如下:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1021882.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号