动态SLAM毕设(二)实验

动态SLAM毕设(二) 实验

前言

本科毕设做的是一个基于ORB SLAM2的一个动态去除SLAM,感谢@XindaBack,学长帮了我很多忙。整个过程比较依赖github和百度以及CSDN上的文章,因此也想记录下自己做的东西。本人从纯小白学起,因此很多内容也没有理论支持,如有不对请及时指正,避免误导他人。如果有引用不当的问题也请提醒。

实验平台

实验目标:运行原ORB SLAM2系统以及改进后的系统,对同一个实验室真实环境建图,通过对稠密点云地图的分析对比进而评估改进系统的性能

硬件与软件

  1. ROS平台(Ubuntu16.04为Kinetic)
  2. Kinect V2相机
  3. 相机驱动

安装ROS平台
参考文章
Ubuntu16.04下安装ROS
安装好后,在你的home文件夹下应该有一个catkin_ws的文件夹,之后的驱动就安装在这个空间。
我在安装的时候,遇到了密钥不对的情况。自行百度应该可以解决。

安装Kinect V2相机驱动
参考文章
ubuntu16.04安装 kinectV2 驱动,配置ROS下驱动并测试验证
安装好后,应该有的文件夹:home/catkin_ws/src/iai_kinect2
为了观察运行效果,首先需要打开两个终端,一个输入命令:

roslaunch kinect2_bridge kinect2_bridge.launch

另一个终端用于显示:

rosrun kinect2_viewer kinect2_viewer sd cloud
//命令中的sd、hd、qhd是不同的分辨率 

保存图片序列
这一步的目的是实时拍摄并保存带有时间戳文件及名字的RGB图、深度图序列,因为仅仅保存下来的图片并不能直接用于ORB SLAM2系统输入。
参考文章:
ROS下同时存储Kinect 深度和RGB图
按照文章步骤,在以下文件夹新建cpp程序,名字注意是save_rgbd_from_kinect2.cpp:
在这里插入图片描述
程序内容就是文章中的代码。注意第45-50行需要更改你的路径。我是在src文件夹下建了个叫dataset的文件夹。所以对应的代码更改为

string topic1_name = "/kinect2/qhd/image_color"; //topic 名称
string topic2_name = "/kinect2/qhd/image_depth_rect";

string filename_rgbdata="/home/arm19c/catkin_ws/dataset/rgbdata.txt";
string filename_depthdata="/home/arm19c/catkin_ws/dataset/depthdata.txt";
string save_imagedata = "/home/arm19c/catkin_ws/dataset/";

在这里插入图片描述

最后,在上一个文件夹,也就是kinect_viewer中,CmakeLists.txt文件需要更改:
在最后一行增加内容:

add_executable(save_rgbd_from_kinect2 src/save_rgbd_from_kinect2.cpp)
target_link_libraries(save_rgbd_from_kinect2
	${catkin_LIBRARIES}
	${OpenCV_LIBRARIES}
        ${PCL_LIBRARIES} 
	${kinect2_bridge_LIBRARIES}
)

之后再重新编译一遍整个驱动就好了。

检验效果的话,需要几个步骤:

  1. 首先在dataset文件夹下新建depth和rgb两个空文件夹,用于保存图像。(每次独立运行后,图片并不会覆盖,因为时间戳并不一致。因此每次运行之前需要确保这两个文件夹是空的)
  2. 开终端,运行
roslaunch kinect2_bridge kinect2_bridge.launch
  1. 拷贝associate.py到dataset文件夹
  2. 新开终端,运行
rosrun kinect2_viewer save_rgbd_from_kinect2 hd cloud

我的所有图像都是hd的。运行后,会发现dataset文件夹内自动生成了depthdata.txt和rgbdata.txt两个文件。生成时间戳文件:

python associate.py rgbdata.txt depthdata.txt > associate.txt

至此,你就得到了和标准TUM数据集类似的图像与对应的时间戳文件,不出意外是可以直接用于ORB SLAM2系统输入的。

相机校正

参考文章:
制作棋盘格纸
标定过程
注意打印的时候要选择原尺寸,不能缩放,否则格子大小会有变化。
注意:整个标定程序是包含在驱动程序中的,完全不需要对任何程序进行任何修改!我看到很多文章说因为qhd、hd等的原因需要修改程序。这里注意一下。

注意事项

我用的相机拍摄的帧率特别低,保存图像耗费时间比较长,所以我得移动特别慢。这还不是最重要的。由于存储图像慢,深度图和RGB图的时间戳之间差了有0.3秒?原来比如RGB图和深度图各600张,直接生成时间戳可能只有30几张匹配,因此需要修改对应的associate.py文件:

parser.add_argument('--max_difference', help='maximally allowed time difference for matching entries (default: 0.02)',default=0.3)

调整一下匹配的时间阈值就可以了

最后给一个在百度AI studio安装pytorch和tensorflow的教程:
使用百度AI studio创建pytorch tensorflow gpu环境 最好先看视频

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值