当前位置:   article > 正文

ubutun SLAM2笔记本前置摄像头跑通实时3D点云重建_orb-slam2 笔记本摄像头实时场景重构

orb-slam2 笔记本摄像头实时场景重构

声明

本篇博客属于原创,从0到1完整搭建了SLAM2的运行环境和相关测试,遇到的诸多问题请参照参考教程提供的博客地址去解决。制作不易,历经坎坷,虽说是作业,还请看官一键三联!!!多多支持。转载,二次创作,请附上本篇地址

参考教程

  1. 设备运行环境:linux操作系统,实现方式将普通windows系统更换为双系统。
    参考自B站博主机器人工匠阿杰的代表作: Windows 和 Ubuntu 双系统从安装到卸载
  2. 软件环境生态以及使用演示:ORBSLAM2
    参考自B站up主计算机视觉life 的视频讲解: ORBSLAM2原理代码详解-1简介安装运行
  3. openCV环境模块安装:opencv-3.4 建议在gitee上搜索对应仓库,zip拉下来解压即可使用。
    参考自CSDN:
    Ubuntu下OpenCV的安装与初步运用
    OpenCV中文官方文档
    (2条消息) Ubuntu18.04下OpenCV3.4.11的安装及使用示例_可乐有点好喝的博客-CSDN博客_ubuntu1804安装opencv3
    下载仓库 · Gitee 极速下载/opencv - Gitee.com
  4. ROS环境 ** ubuntu18.04安装ROS Melodic(最详细配置**
  5. ROS下摄像头标定参考: ** Ubuntu18.04下USB摄像头运行和标定**

我的配置安装流程总结

这是最终版本
安装顺序:

  • ubutun
  • c++ make cmake
  • g2o DBoW2
  • Eigen3 v0.5版
  • Pangolin
  • SLAM2
  • usb_cam
  • camera_calibration

数据集测试(从各个模块到整体)

Eigen3模块

openCV模块(三个测试用例具体可以观看 ubuntu环境下安装opencv教程及测试

  1. 图片处理加一个灰度值。
#include <opencv3/highgui.hpp>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
        CvPoint center;
    double scale = -3;

        IplImage* image = cvLoadImage("lena.jpg");
        argc == 2? cvLoadImage(argv[1]) : 0;

        cvShowImage("Image", image);


        if (!image) return -1;  center = cvPoint(image->width / 2, image->height / 2);
        for (int i = 0;i<image->height;i++)
                for (int j = 0;j<image->width;j++) {
                        double dx = (double)(j - center.x) / center.x;
                        double dy = (double)(i - center.y) / center.y;
                        double weight = exp((dx*dx + dy*dy)*scale);
                        uchar* ptr = &CV_IMAGE_ELEM(image, uchar, i, j * 3);
						 ptr[0] = cvRound(ptr[0] * weight);
                        ptr[1] = cvRound(ptr[1] * weight);
                        ptr[2] = cvRound(ptr[2] * weight);
                }

        Mat src;Mat dst;
        src = cvarrToMat(image);
        cv::imwrite("test.png", src);

    cvNamedWindow("test",1);    imshow("test", src);
         cvWaitKey();
         return 0;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

在这里插入图片描述
在这里插入图片描述

Pangolin模块

安装过后,对官方提供的用例进行编译链接 执行可执行程序 HelloPangolin
文件结构如下:
在这里插入图片描述

cd Pangolin/examples/HelloPangolin
cmake .
make
./HelloPangolin
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

ROS模块 ROS教程(一): Ubuntu ROS安装详细教程(全过程)+测试程序

为了测试一下我们的ROS是否安装成功,这里我们来测试一个例程——小海龟仿真器
打开一个新的终端(ctrl+alt+T),启动ROS Master。

roscore
  • 1

再打开一个新的终端(ctrl+alt+T),启动小海龟仿真器。

rosrun turtlesim turtlesim_node
  • 1

再打开一个新的终端(ctrl+alt+T),启动小海龟控制节点。

 rosrun turtlesim turtle_teleop_key
  • 1

在这里插入图片描述

结果分析

数据集测试命令 在ORBSLAM2下终端输入命令

./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml /home/chen/catkin_ws/src/ORB_SLAM2/Downloads/rgbd_dataset_freiburg1_xyz
  • 1

在这里插入图片描述

SLAM2 跑数据集

没有对笔记本摄像头进行位置标定前使用前置摄像头实时三维点云重建

//开启电脑的摄像头  主要启动文件是 usb_cam-test.launch,修改对应参数就可以实现摄像头的切换

//用于解决出现not usb_cam的错误
source ~/catkin_ws/devel/setup.bash
//开启摄像头
roslaunch usb_cam usb_cam-test.launch
//开始slam2进行重建
rosrun ORB_SLAM2 Mono ~/catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt ~/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/Asus.yaml
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在这里插入图片描述

SLAM2 笔记本前置摄像头实时三维重建(未标定位置)

摄像头位置标定 详细博客可以参照下面两篇
Ubuntu18.04下USB摄像头运行和标定
摄像头标定跑通ORB_SLAM2

在这里插入图片描述在这里插入图片描述
只说重点: 完成x y 的进度条之后,才可以进一步save 保存 commit提交。对于输出的压缩包内容和地址,则是需要注意的地方。标定结果保存在/tmp/calibrationdata.tar.gz这个压缩包,这个地方去文件-》其他位置-》计算机-》tmp文件夹下面。内容是多张图片和标记位置信息的txt格式文件和yaml格式文件。

将ost.yaml文件复制到ORB_SLAM2/Examples/Monocular文件下,将其中的参数改为ORB_SLAM2/Examples/Monocular/TUM1.yaml文件的格式。

SLAM2摄像头位置标定(花絮)

使用标定后的文件来实时输入图像信息,重建

rosrun ORB_SLAM2 Mono ~/catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/chen/catkin_ws/src/ORB_SLAM2/Examples/Monocular/myUsbTUM.yaml 
  • 1

在这里插入图片描述

SLAM2 笔记本前置摄像头实时三维重建(标定位置)

心得体会

计算机视觉是实现人工智能必不可少的一步,都说眼睛是心灵的窗户,是感知世界的第一道程序。同时,对于人工智能也是如此。通过摄像头将二维的图片结合上我们的算法,使得我们能够予以二维世界升级为三维世界的必要元素——时间。在一个虚拟的世界中构建出一比一还原的3D点云,计算机的核心大脑根据这个三维的世界作出对应的处理,amazing!
算法是最最最核心的,也是最难攻破的。作为一个计算机专业的学生,既对这个领域怀有强烈的好奇心,也对前人做出的贡献由衷敬佩。同时,作为CV通识教育课程,我的收获满满,熟悉Linux的操作方法,拥有两台电脑,问题解决的途径等等等。仅在此作为纪念。

相关资源地址包括(18.04系统 ROS OpenCV 测试数据集等)

https://pan.baidu.com/s/1zH-pn4x5bbArxb89hgXNPA 提取码: 8l25

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/122810
推荐阅读
相关标签
  

闽ICP备14008679号