乌班图安装ORB-SLAM2并使用USB摄像头运行
本文详细介绍了乌班图安装ORB-SLAM2的安装和配置,并使用USB摄像头生成特征点云图
目录
1 下载ORB_SLAM2源码
1.1源码下载
2 安装并编译pangolin
2.1 安装依赖项
2.2 从Github下载Pangolin
3 安装并编译Eigen
3.1 使用命令安装
3.2 从源码安装
3.3 编译
4 编译g2o
5 编译DBoW2
6 编译ORB_SLAM
7 使用自己的USB摄像头跑ORB_SLAM
7.1 安装并测试摄像头功能包usb_cam
7.2 将数据接入orb_slam
7.3 启用orb_slam2中的节点
参考链接
1 下载ORB_SLAM2源码
1.1源码下载
https://github.com/raulmur/ORB_SLAM/ 进入官网下载源码
注:这里若使用乌班图下载速度较慢,可以先在windows下载,然后通过filezilla上传到乌班图
1.2 git安装
git clone https://github.com/raulmur/ORB_SLAM2.git
2 安装并编译pangolin
2.1 安装依赖项
sudo apt-get install libglew-devsudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-devsudo apt-get install libpython2.7-dev
2.2 从Github下载Pangolin
git clone https://github.com/stevenlovegrove/Pangolin.git
如果你这里下载好了,那恭喜你,pangolin可以正常编译,但如果你和笔者一样,一直显示仓库连接不上,那么请先在windows打开
https://github.com/stevenlovegrove/Pangolin 注意一定不能直接克隆选择左边的v0.6版本,0.7版本编译会出错,错误信息如下:
pangolin could not be found because dependency eigen3 could not be found
如果你出现了这个错误信息,那么请按照如下步骤操作:
1、检查/usr/local/include,如果有pangolin相关文件,删除它(我遇到的情况是没有的)。
2、删除Pangolin文件,并克隆0.6版本代码。
3、重新编译安装Pangolin即可
如果是在windows下载好了,那打开filezilla,主机名字写sftp://ip ,然后输入乌班图用户名和密码,点击连接即可
连接好了后将文件直接拖拽到目录下,编译安装
cd Pangolin
mkdir build
cd build
cmake ..
make -j
sudo make install
笔者在编译时遇到了需要更高版本的cmake的错误,此时需要先卸载原来的cmake,然后再重装:
1.先卸载:
which cmake
cd /usr/bin/
sudo rm cmake
2.然后下载更高版本cmake,可在cmake官网 Download | CMake 下载,我下载的是cmake-3.12.4.tar.gz
3.编译
cd cmake-3.12.4
./configure
make
sudo make install
cmake --version(需要重新开一个终端)
3 安装并编译Eigen
3.1 使用命令安装
sudo apt-get install libeigen3-dev
3.2 从源码安装
Eigen 进入官网下载
3.3 编译
cd eigen-eigen-5a0156e40feb
mkdir build
Cd build
cmake ..&make
sudo make install
然后运行sudo cp -r /usr/local/include/eigen3 /usr/include
pangolin会在/usr/include 目录下进行搜索,导致pangolin安装失败,上面命令可以解决
搜索不到时,CMakeList里面添加头文件
#include_directories("/usr/include/eigen3")
4 编译g2o
cd catkin_ws/src/ORB_SLAM2/Thirdparty/g2o
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
5 编译DBoW2
cd catkin_ws/src/ORB_SLAM/Thirdparty/DBoW2
mkdir build
cd build
cmake .. -DROS_BUILD_TYPE=Release
make
6 编译ORB_SLAM
cd ORB_SLAM2
chmod +x build.sh
./build.sh
chmod +x build_ros.sh
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/catkin_ws/src/ORB_SLAM2/Examples/ROS
./build_ros.sh
注意:如果你下载的ORB_SLAM2不在catkin_ws/src内,那你需要将整个文件夹全部移入catkin_ws/src内,然后再export
如果以上你没问题了,那么恭喜,你差不多可以使用了,笔者在./build_ros.sh时遇到了如下问题
问题1:
error: ‘usleep’ was not declared in this scope
解决方法:将ORB_SLAM2中的examples和src中所有后缀为.cc的都加上
#include <unistd.h>
问题2:
File "/opt/ros/kinetic/share/ros/core/rosbuild/bin/check_same_directories.py", line 46, in <module>
raise Exception
Exception
CMake Error at /opt/ros/kinetic/share/ros/core/rosbuild/private.cmake:102 (message):
[rosbuild] rospack found package "ORB_SLAM2" at "", but the current
directory is "/home/daiwj5/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2".
You should double-check your ROS_PACKAGE_PATH to ensure that packages are
found in the correct precedence order.
Call Stack (most recent call first):
/opt/ros/kinetic/share/ros/core/rosbuild/public.cmake:177 (_rosbuild_check_package_location)
CMakeLists.txt:4 (rosbuild_init)
-- Configuring incomplete, errors occurred!
See also "/home/daiwj5/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/build/CMakeFiles/CMakeOutput.log".
make: *** No targets specified and no makefile found. Stop.
这个时候需要在~/.bashrc文件末尾添加一行路径,如下(如果放在主目录下的话):
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/catkin_ws/src/ORB_SLAM2/Examples/ROS
保存后运行
source ~/.bashrc
若你还是不能编译,那么往下执行:
sudo rosdep fix-permissions
rosdep update
若你在rosdep update时出现time out的情况时,有个快捷的解决方案是直接用别人编译好的rosdep文件夹。
成功执行./build_ros.sh后,进入ORB_SLAM2/Examples/ROS/ORB_SLAM2内,若出现mono文件,则说明编译orb_slam2成功
7 使用自己的USB摄像头跑ORB_SLAM
7.1 安装并测试摄像头功能包usb_cam
1.插上USB摄像头,检查usb摄像头是否正常连接:
cd /
cd dev
ls
2.下载摄像头功能包
cd ~/catkin_ws/src
git clone https://github.com/bosch-ros-pkg/usb_cam.git
cd~/catkin_ws
catkin_make
3.编译好之后,添加编译好的文件到环境变量:
source devel/setup.bash
4.测试摄像头功能包usb_cam
roscore
roslaunch usb_cam usb_cam-test.launch
7.2 将数据接入orb_slam
cd catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/src
gedit ros_mono.cc
将subscribe的话题subscribe("/camera/image_raw",1)中的/camera/image_raw改为/usb_cam/image_raw
然后重新编译ROS的example
cd build
cmake ..
make
7.3 启用orb_slam2中的节点
rosrun ORB_SLAM2 Mono /home/xx/catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/xx/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/Asus.yaml
此时就可以正常运行了,效果如下:
参考链接
利用外接usb摄像头跑通ORB SLAM2的记录_点滴记录-CSDN博客
安装usb_cam ROS 功能包 - 简书
ORB-slam3 编译出现 Could not find a package configuration file provided by “Pangolin“ with any of the fo_恶搞大王的博客-CSDN博客
Ubuntu20.04安装Pangolin(视觉SLAM十四讲)_小二儿的饲养员的博客-CSDN博客
【003】cmake安装更新(解决cmake报错:CMake 3.8 or higher is required. You are running version 3.5.1)_mengyu_0317的博客-CSDN博客
error: ‘usleep‘ was not declared in this scope解决办法_出门两双鞋的博客-CSDN博客
ORB-SLAM2编译安装_陈建驱的博客-CSDN博客
安装usb_cam ROS 功能包 - 简书
Ubuntu20.04安装Pangolin(视觉SLAM十四讲)_小二儿的饲养员的博客-CSDN博客
乌班图安装ORB-SLAM2并使用USB摄像头运行相关推荐
- 乌班图安装出现无法获取锁解决
乌班图安装出现无法获取前端锁解决 出现原因:更新系统,更新一半后突然断电死机,那么这个锁没有解除,下次安装软件,就会出现"无法获得锁 /var/lib/dpkg/XXX - open&quo ...
- 乌班图安装docker
乌班图安装docker 文章目录 乌班图安装docker 前言 安装 设置仓库 安装 Docker Engine 安装特定版本的 Docker Engine: 测试 配置非 root 用户运行 Doc ...
- 乌班图 安装 nginx rtmp服务器
乌班图 安装 nginx rtmp服务器 安装所需要的库 $sudo apt install build-essential libpcre3 libpcre3-dev libssl-dev zlib ...
- Linux:乌班图安装jdk
乌班图安装jdk: 1.在官网下载对应的jdk版本(注册一个甲骨文账号),链接如下:https://www.oracle.com/java/technologies/javase/upgrade.ht ...
- 乌班图安装python_乌班图中怎么安装python
Ubuntu16.04默认安装了Python2.7和3.5 请注意,系统自带的python千万不能卸载! 输入命令python 按Ctrl+D退出python命令行 输入命令sudo add-apt- ...
- 乌班图安装及环境配置
1.安装ubuntu16.04乌班图操作系统. 将ubuntu-16.04.2-desktop-amd64.iso刻到U盘,通过工具Universal-USB-Installer-1.9.7.8 ...
- 乌班图安装pycharm
首先在jetbrain下载pycharm压缩包 在downloads解压 然后打开终端 进入bin运行pycharm.sh ./pycharm.sh 然后还需要创建桌面快捷方式(乌班图是绿色安装包需要 ...
- 乌班图安装mysql 目录_Ubuntu 安装mysql 自定义数据存储目录
一.安装 apt-get install mysql-server 执行过程如下: root@duke:~# apt-get install mysql-server 正在读取软件包列表... 完成 ...
- 乌班图安装nginx
sudo apt search nginx | grep ^nginx 查询仓库里面是否有nginx 之后详细见:nginx: Linux packages 跟着步骤安装 安装完后输入 sudo sy ...
最新文章
- 20 个 Pandas 数据实战案例,干货多多
- mariadb-10实现半同步复制及SSL安全复制
- soap php 分开类,将请求处理到同一PHP SOAP服务器中的多个类
- ASP.NET 4 和 Visual Studio 2010 Web 开发概述
- Android Shell命令dumpsys
- 单片机位寻址举例_单片机的寻址方式
- linux一些好用的命令和快捷键
- 对一个简单汇编程序分析
- vm客户机隔离不能选_开汽车美容店,这些位置绝对不能选,会让你门可罗雀,生意惨淡...
- 【hackerrank】Week of Code 26
- 在Mac系统下架设WiFi热点,对比Win7
- [cocos2d-x]深入--几个代表性的类
- FileZilla:425 Can't open data connection for transfer of解决办法
- Openssl crl2pkcs7命令
- hdu--1077--Catching Fish
- Blog访问量提升秘笈
- Linux软件包安装之yum的使用
- Python中,如何使用ImageDraw在Image上绘制粗线?
- 微信小程序前端微信支付功能 支付流程
- 计算机视觉研究新方向:自监督表示学习总结(建议收藏)
热门文章
- 实现北京114挂号平台自动挂号功能
- 你知道在Java 中常被提的 SPI 到底是什么吗?
- 【第三步】了解关于CSDN开通VIP后的权益说明
- android4.2.2系统投屏,一学就会!手机投屏电视完整攻略
- Leetcode_Alog.136- Single Number
- 3名中学生脚踹流浪老人还发视频炫耀:没教养的人,有多可怕?
- 计算机软件安装方法,计算机软件安装方法与流程
- 钛媒体对话友盟+朋新宇:数据服务商该如何应对云时代?
- 编写一个android计算器,android编写的计算器,
- vue 电子表格Excel的上传导入、导出下载、读取本地Excel、json转Excel