操作系统:ubuntu 18.04
源码下载:
git clone https://github.com/gaoxiang12/ORBSLAM2_with_pointcloud_map.git
下载源码后,由于BOW太大,没有在github中,需要做一些准备:
ORB_SLAM2_modified/
ORB_SLAM2_modified/Thirdparty/DBoW2
ORB_SLAM2_modified/Thirdparty/g2o
彩色稠密建图:
- Frame mCurrentFrame;
-
- cv::Mat mImRGB; //new add
-
- cv::Mat mImGray;
- cv::Mat Tracking::GrabImageRGBD(const cv::Mat &imRGB,const cv::Mat &imD, const double ×tamp)
- {
- mImRGB = imRGB; // new add
- mImGray = imRGB;
- ......
- mpPointCloudMapping->insertKeyFrame( pKF, this->mImGray, this->mImDepth );
- //change the mImGray to mImRGB as next row
- mpPointCloudMapping->insertKeyFrame( pKF, this->mImRGB, this->mImDepth );// new
#include
在void PointCloudMapping::viewer()函数中加入保存地图的指令:
- while(1)
- {
- .... // 省略
- for ( size_t i=lastKeyframeSize; i
- {
- PointCloud::Ptr p = generatePointCloud( keyframes[i], colorImgs[i], depthImgs[i] );
- *globalMap += *p;
- }
-
-
- PointCloud::Ptr tmp(new PointCloud());
- voxel.setInputCloud( globalMap );
- voxel.filter( *tmp );
- globalMap->swap( *tmp );
- viewer.showCloud( globalMap );
- cout << "show global map, size=" << globalMap->points.size() << endl;
- lastKeyframeSize = N;
- }
-
- pcl::io::savePCDFileBinary("vslam.pcd", *globalMap); //new add 加在while循环外面
- 修改yaml配置文件,yaml1已经存在,但是yaml2和yaml3没有,不添加,便不会建图
- PointCloudMapping.Resolution: 0.01
- meank: 50
- thresh: 2.0
编译工程
- cd ORB_SLAM2_modified
- ./build.sh
测试运行
和orbslam2一样,同样需要关联文件,将时间戳对齐。
- cd ORB_SLAM2_modified
- ./bin/rgbd_tum ./Vocabulary/ORBvoc.bin Examples/RGB-D/TUM3.yaml ~/Desktop/dataset/TUM/rgbd_dataset_freiburg3_walking_xyz ~/Desktop/dataset/TUM/rgbd_dataset_freiburg3_walking_xyz/associate.txt

代码中将词袋模型转换为二进制.bin文件读入,我的内存为4g,不转换会出现:已杀死的情况,原因是内存爆了,因此要换行为二进制文件读入。
查看生成的.pcd文件
- sudo apt get install pcl tools
- pcl_viewer vslam.pcd
问题:三色格子
建图中,会出现红绿黑三色,不要着急,将鼠标移入,滚动滑轮,缩小,就可以看到建图的结果。
参考:
从零开始Ubuntu16.04+ORBSLAM2+ROS实验实录(五):稠密点云建图_Mr.Winter`的博客-CSDN博客_orbslam稠密建图