IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> ubuntu18.04 用LSD-SLAM跑通rgbd数据集以及地图重用 -> 正文阅读

[人工智能]ubuntu18.04 用LSD-SLAM跑通rgbd数据集以及地图重用

一、lsd-slam依赖的库

需要库eigen3.2.5、opencv3.2.0、ros-melodic(注意对版本要求高),需要严格对应版本否则可能出现问题。

1、ros-melodic版本安装这个请参照官网

http://wiki.ros.org/melodic/Installation/Ubuntu

2、eigen3.2.5(多版本切换)

由于ubuntu18.04的eigen版本为3.3.4,此版本eigen版本编译lsd-slam运行rosrun lsd_slam_core live_slam image:=/image_raw camera_info:=/camera_info时候出现错误:

double free or corruption(out)

Aborted(core dumped)

所以我们需要对eigen进行多版本安装去eigen官网下载eigen3.2.5源码

cd /usr/include
sudo mkdir eigen325

解压eigen3.2.5到主目录

cd ~/eigen-3.2.5
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr/include/eigen325 .. //安装到usr/include/eigen325
make
sudo make install

然后我们需要对eigen版本进行切换,切换为eigen-3.2.5

cd /usr/include
sudo mkdir eigen334
sudo mv eigen3 eigen334
sudo mv /usr/include/eigen325/eigen3 /usr/include

3、源码安装opencv3.2.0

LSD SLAM需要的opencv是使用GTK而不是用QT的,所以一开始cmake的时候,需要把GTK打开而关闭QT。

进入到opencv文件夹
mkdir build
cd build
cmake-gui

进入到如下页面:

?

?如果需要设置opencv安装路径的可以参照上述eigen安装过程,修改参数-DCMAKE_INSTALL_PREFIX=/usr/local/opencv320

然后Configure、Generate

make -j6
sudo make install

二、lsd-slam安装

1、 安装lsd-slam所需依赖

sudo apt-get install ros-melodic-libg2o ros-melodic-cv-bridge liblapack-dev libblas-dev freeglut3-dev libsuitesparse-dev libx11-dev
sudo apt install libqglviewer-dev-qt4
cd /usr/lib/x86_64-linux-gnu
sudo ln -s libQGLViewer-qt4.so libQGLViewer.so

2、编译源码

ubuntu18.04下用catkin_make编译的lsd-slam版本参考博主大佬改得版本

https://github.com/Rick0514/Ubuntu18.04-LSD-SLAM

mkdir -p ~/ros_lsd/src
cd ~/ros_lsd/src
git clone https://github.com/Rick0514/Ubuntu18.04-LSD-SLAM.git lsd_slam
cd ../
catkin_make

?3、测试

1)

跑lsd-slam自带的数据集https://vision.in.tum.de/research/vslam/lsdslam?s%5B%5D=%2Alsd%2A&s%5B%5D=%2Aroom%2A

roscore
echo "source ~/ros_lsd/devel/setup.bash" >> ~/.bashrc
rosrun lsd_slam_viewer viewer
rosrun lsd_slam_core live_slam image:=/image_raw camera_info:=/camera_info
rosbag play ~/LSD_room.bag

?2)

跑TUM数据集rgbd_dataset_freiburg3_long_office_household。(跑fx1类型数据集会出现问题)

cd到数据集文件夹

touch calib.cfg
gedit calib.cfg

添加以下内容到文件中

0.820315 1.09375 0.49921875 0.498958333 0
640 480
none
640 480

?运行数据集

roscore
rosrun lsd_slam_viewer viewer
rosrun lsd_slam_core dataset _files:/home/x1/Data/rgbd_dataset_freiburg3_long_office_household/rgb _hz:30 _calib:=/home/x1/Data/rgbd_dataset_freiburg3_long_office_household/calib.cfg

运行bag数据集

roscore
rosrun lsd_slam_viewer viewer
rosrun lsd_slam_core live_slam image:=/camera/rgb/image_color  _/calib:=/home/x1/Data/rgbd_dataset_freiburg3_long_office_household/calib.cfg

效果图:

三、地图保存

鼠标点击PointCloud Viewer窗口,在想要保存的地图时间点长按p键就会保存地图到lsd_slam_viewer文件夹中的.ply文件夹

如果想要利用.ply文件,按需要将文件转为相应类型的文件,本人转的是.pcd文件

创建个文件夹ply2pcd,在文件夹里如下操作:

如下代码,创建文件main.cpp,内容如下:

#include <pcl/io/pcd_io.h>
#include <pcl/io/ply_io.h>
#include <pcl/point_types.h>

using namespace pcl;
using namespace pcl::io;

int main (int argc, char** argv)
{
    pcl::PLYReader reader;
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);
    reader.read<pcl::PointXYZ>("/home/x1/orbslam2saved_map/pc.ply", *cloud);
    pcl::io::savePCDFile("/home/x1/orbslam2saved_map/pointcloud.pcd", *cloud );

    return 0;
}

创建CMakeLists.txt文件

cmake_minimum_required(VERSION 2.8)
project(ply2pcd)

set(CMAKE_CXX_STANDARD 11)
find_package(PCL 1.8 REQUIRED)

include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})


add_executable(ply2pcd main.cpp)
target_link_libraries(ply2pcd ${PCL_LIBRARIES})

对代码进行编译(代码需要安装pcl库):

mkdir build
cd build
cmake ..
make -j4

进入build文件夹,在此文件夹中打开终端:

./ply2pcd


?

?运行bug解决方法:

1、当运行之后发现画面不显示点云

解决方法:

弹出的DebugWindow DEPTH窗口不能正常显示。

解决方法一:将lsd_slam/lsd_slam_core/src/util/settings.cpp的第38行更改为:bool displayDepthMap = false;//true

此时DebugWindow DEPTH窗口不再显示。

解决方法二:修改lsd_slam/lsd_slam_core/src/IOWrapper/OpenCV/ImageDisplay_OpenCV.cpp:在line 73增加

cv::imshow(displayQueue.back().name, displayQueue.back().img);
cv::waitKey();
displayQueue.pop_back();

2、

what(): basic_string::substr: __pos (which is 140) > this->size() (which is 67)错误解决方法

更换上述数据集或者更换相机参数

参考链接:https://blog.csdn.net/gy_Rick/article/details/118916996

参考链接: https://github.com/qixuxiang/ply2pcd

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-25 12:12:14  更:2021-08-25 12:14:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 18:44:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码