彩色地图补全计划
被贴吧老哥文字剧透了,还好我什么党都不是,刀不到我,希望能早点在中国上映
点云拼接与三维稠密点云重建
高博的ORBSLAM2_with_pointcloud_map:
github
基于高博的加入回环地图的:
GITHUB
csdn
它们编译存在EIGEN版本不合问题,只要改写cmakelist文件就好,不用卸载重装,详见我的博客。
彩色地图补全计划
现存问题:建立点云地图的点云没有颜色
解决思路:原来代码在
src/pointcloudmapping.cc中的
pcl::PointCloud< PointCloudMapping::PointT >::Ptr PointCloudMapping::generatePointCloud(KeyFrame* kf, cv::Mat& color, cv::Mat& depth)
函数中传递来的是灰度图像信息,自然没有颜色。
因此把带有颜色信息的图片矩阵传递过来就行了
具体操作如下:
include/Tracking.h
class Tracking
{
public:
cv::Mat mlmrgb;//增加此处
}
src/Tracking.cc
cv::Mat Tracking::GrabImageRGBD(const cv::Mat &imRGB,const cv::Mat &imD, const double ×tamp)
{
mlmrgb=imRGB; //增加此处
mImGray = imRGB;
mImDepth = imD;
}
void Tracking::CreateNewKeyFrame()
{
mpLocalMapper->InsertKeyFrame(pKF);
mpLocalMapper->SetNotStop(false);
// insert Key Frame into point cloud viewer
mpPointCloudMapping->insertKeyFrame( pKF, this->mlmrgb, this->mImDepth ); //修改此处
mnLastKeyFrameId = mCurrentFrame.mnId;
mpLastKeyFrame = pKF;
}
保存点云地图补全计划
ORB-SLAM2_RGBD_DENSE_MAP/Examples/RGB-D/rgbd_tum.cc
int main(int argc, char **argv)
{
SLAM.save();
最末处
}
include/pointcloudmapping.h
#include <pcl/io/pcd_io.h>
class PointCloudMapping
{
public:
void save();
}
include/System.h
class System
{
public:
void save();
}
src/pointcloudmapping.cc
void PointCloudMapping::save()
{
pcl::io::savePCDFile( "result.pcd", *globalMap );
cout<<"globalMap save finished"<<endl;
}
src/System.cc
void System::save()
{
mpPointCloudMapping->save();
}
使用pcl_viewer result.pcd 指令查看
使用sudo apt install pcl-tools 安装pcl_viewer
下图为回看结果