声明
本篇博客属于原创,从0到1完整搭建了SLAM2的运行环境和相关测试,遇到的诸多问题请参照参考教程提供的博客地址去解决。制作不易,历经坎坷,虽说是作业,还请看官一键三联!!!多多支持。转载,二次创作,请附上本篇地址!
参考教程
- 设备运行环境:linux操作系统,实现方式将普通windows系统更换为双系统。
参考自B站博主机器人工匠阿杰的代表作: Windows 和 Ubuntu 双系统从安装到卸载 - 软件环境生态以及使用演示:ORBSLAM2
参考自B站up主计算机视觉life 的视频讲解: ORBSLAM2原理代码详解-1简介安装运行 - openCV环境模块安装:opencv-3.4 建议在gitee上搜索对应仓库,zip拉下来解压即可使用。
参考自CSDN:
Ubuntu下OpenCV的安装与初步运用
OpenCV中文官方文档
(2条消息) Ubuntu18.04下OpenCV3.4.11的安装及使用示例_可乐有点好喝的博客-CSDN博客_ubuntu1804安装opencv3
下载仓库 · Gitee 极速下载/opencv - Gitee.com - ROS环境 ** ubuntu18.04安装ROS Melodic(最详细配置**
- ROS下摄像头标定参考: ** Ubuntu18.04下USB摄像头运行和标定**
- 错误解决参考:找不到Eigen ORB-SLAM2配置过程与/usr/bin/ld: 找不到 -lEigen3::Eigen的解决方法
- 错误解决参考:需要下载特定的Pangolin v0.5版本 下载仓库 · kiltto/Pangolin - Gitee.com
- 错误解决参考:编译ORB_SLAM2时发生usleep错误的解决:Ubuntu18下ORB_SLAM2的安装与配置详细解决请看第五点,ORBSLAM2的编译。
- 错误解决参考:打开电脑自带的摄像头usb_cam Ubuntu16.04使用usb_cam调用USB摄像头
- 简单数据集测试:Ubuntu18.04下 ORB_SLAM2的安装与配置
- 实时输入测试:ROS下实时运行ORB-SLAM2
我的配置安装流程总结
安装顺序:
- ubutun
- c++ make cmake
- g2o DBoW2
- Eigen3 v0.5版
- Pangolin
- SLAM2
- usb_cam
- camera_calibration
数据集测试(从各个模块到整体)
Eigen3模块
openCV模块(三个测试用例具体可以观看 ubuntu环境下安装opencv教程及测试)
- 图片处理加一个灰度值。
#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;
}
Pangolin模块
安装过后,对官方提供的用例进行编译链接 执行可执行程序 HelloPangolin
文件结构如下:
cd Pangolin/examples/HelloPangolin
cmake .
make
./HelloPangolin
ROS模块 ROS教程(一): Ubuntu ROS安装详细教程(全过程)+测试程序
为了测试一下我们的ROS是否安装成功,这里我们来测试一个例程——小海龟仿真器。
打开一个新的终端(ctrl+alt+T),启动ROS Master。
roscore
再打开一个新的终端(ctrl+alt+T),启动小海龟仿真器。
rosrun turtlesim turtlesim_node
再打开一个新的终端(ctrl+alt+T),启动小海龟控制节点。
rosrun turtlesim turtle_teleop_key
结果分析
数据集测试命令 在ORBSLAM2下终端输入命令
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml /home/chen/catkin_ws/src/ORB_SLAM2/Downloads/rgbd_dataset_freiburg1_xyz
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
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
SLAM2 笔记本前置摄像头实时三维重建(标定位置)
心得体会
计算机视觉是实现人工智能必不可少的一步,都说眼睛是心灵的窗户,是感知世界的第一道程序。同时,对于人工智能也是如此。通过摄像头将二维的图片结合上我们的算法,使得我们能够予以二维世界升级为三维世界的必要元素——时间。在一个虚拟的世界中构建出一比一还原的3D点云,计算机的核心大脑根据这个三维的世界作出对应的处理,amazing!
算法是最最最核心的,也是最难攻破的。作为一个计算机专业的学生,既对这个领域怀有强烈的好奇心,也对前人做出的贡献由衷敬佩。同时,作为CV通识教育课程,我的收获满满,熟悉Linux的操作方法,拥有两台电脑,问题解决的途径等等等。仅在此作为纪念。
相关资源地址包括(18.04系统 ROS OpenCV 测试数据集等)
https://pan.baidu.com/s/1zH-pn4x5bbArxb89hgXNPA 提取码: 8l25