准备工作及软件版本说明

注意:如果要使用USB摄像头运行ORB-SLAM2,不能使用虚拟机,否则会出现摄像头打开一片绿屏或者黑屏的现象。

操作系统 :Ubuntu 16.04

ROS版本 :kinetic

eigen库版本 :3.2.10

注意: eigen库如果用3.3.4的话 编译ORB-SLAM2时候会出现错误或者警告。

OpenCV版本:opencv3.4.1

USB摄像头:640*480,30帧

安装ROS

打开”Ubuntu Software Center“,把鼠标移到左上角的“Ubuntu Software Center”名字上,点击出现的“Edit ”,在下拉菜单里点击”Software Sources“。确保你的”restricted”, “universe,” 和 “multiverse.”前是打上勾的。就像这样:

设置ROS软件源

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

设置密钥

sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 0xB01FA116

安装ROS kinetic

sudo apt-get update

sudo apt-get upgrade

sudo apt-get install ros-kinetic-desktop-full

安装完成后,可以用下面的命令来查看可使用的包:

apt-cache search ros-kinetic

初始化ROS

sudo rosdep init

rosdep update

然后初始化环境变量(非常重要):

echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc

source ~/.bashrc

安装ROS Python插件

sudo apt-get install python-rosinstall

测试ROS(如果显示 started core service [/rosout] 则说明ROS安装成功)

roscore

安装ORB-SLAM2

创建ROS工程

使用ROS创建workspace

mkdir -p ~/catkin_ws/src

cd ~/catkin_ws/

catkin_make

mkdir ORB-SLAM2

添加环境变量

echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc

source ~/.bashrc

安装必备软件

安装git cmake

sudo apt-get install git cmake

安装一些库

sudo apt-get install libblas-dev liblapack-dev

安装Pangolin

sudo apt-get install libglew-dev

sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev

sudo apt-get install libpython2.7-dev

sudo apt-get install build-essential

cd ~/catkin_ws/ORB-SLAM2

git clone https://github.com/stevenlovegrove/Pangolin.git

cd Pangolin

编译安装Pangolin

mkdir build

cd build

cmake -DCPP11_NO_BOOST=1 ..

make

安装OpenCV依赖

sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

下载OpenCV并解压到Ubuntu,然后进入OpenCV文件夹进行编译安装

mkdir release

cd release

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..

make

sudo make install

安装eigen库(注意 请下载3.2.10版本,如果用3.3.x版本可能会造成ORB-SLAM2编译失败,因为eigen3.3.4版本修改了文件目录结构)

下载Eigen,进入到在解压后的Eigen文件夹(例如eigen-eigen-07105f7124f9)下

mkdir build

cd build

cmake ..

make

sudo make install

下载ORB_SLAM2:

编译安装

cd ORB_SLAM2

chmod +x build.sh

vim build.sh

把build.sh的make -j改成make(这是为了防止多线程编译出错,对于build_ros.sh文件也是同理,下面就不说了)

运行build.sh

./build.sh

注意坑1:如果在编译构建的过程中出现error:usleep()函数未定义的错误,要到报错误的代码文件里面加上(或者在头文件加也行):

#include

#include

#include

修改环境变量(user就是用户的名字)

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/(user)/catkin_ws/ORB-SLAM2/Examples/ROS

这个时候 打开~/.bashrc文件 最末端的时候应该是这个样子:

编译安装ROS版本的ORB-SLAM2

cd ORB_SLAM2

chmod +x build_ros.sh

./build_ros.sh

注意坑2:如果在编译构建的过程中出现关于boost库的错误,要到/Examples/ROS/ORB-SLAM2/CMakeLists.txt文件下修改 加上 -lboost_system

set(LIBS

${OpenCV_LIBS}

${EIGEN3_LIBS}

${Pangolin_LIBRARIES}

${PROJECT_SOURCE_DIR}/../../../Thirdparty/DBoW2/lib/libDBoW2.so

${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o/lib/libg2o.so

${PROJECT_SOURCE_DIR}/../../../lib/libORB_SLAM2.so

#加上这一句

-lboost_system

)

ORB-SLAM2测试数据集

(1)下载测试数据集

Download a sequence from http://vision.in.tum.de/data/datasets/rgbd-dataset/download and uncompress it.

(2)执行命令:

Execute the following command. Change TUMX.yaml to TUM1.yaml,TUM2.yaml or TUM3.yaml for freiburg1, freiburg2 and freiburg3 sequences respectively. Change PATH_TO_SEQUENCE_FOLDERto the uncompressed sequence folder.

./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUMX.yaml PATH_TO_SEQUENCE_FOLDER

在ROS中使用usb摄像头跑ORB SLAM2

由于使用USB摄像头作为图像输入,需要将图像信息作为topic发送出去,ROS官网提供了usb_cam的package代码,从github上下usb_cam的代码,下载链接:https://github.com/bosch-ros-pkg/usb_cam

安装ROS usb_cam源码

cd catkin_ws/src

git clone https://github.com/bosch-ros-pkg/usb_cam.git

cd ..

catkin_make

编译usb_cam

mkdir build

cd build

cmake ..

make

测试一下usb摄像头

首先开个新的终端,运行roscore(如果显示命令没有找到就说明的你没有source source /opt/ros/indigo/setup.bash)

在运行该节点之前,需要先配置一下节点参数,打开src/usb_cam-develop/launch文件中的的launch文件,我这里只需要该设备号即可,笔记本电脑的video0一般是网络摄像头,插入usb摄像头一般是video1,若想看usb摄像头是哪个端口号,可cd到根目录中的dev文件夹下查看。

ls /dev/video*

cd /home/pan/catkin_ws/src/usb_cam

cd launch

gedit usb_cam-test.launch

将其中的内容替换成(其中/dev/videoX要对应为usb摄像头)

开三个终端,依次分别运行

roscore

roslaunch usb_cam usb_cam-test.launch

rosrun ORB_SLAM2 Mono /home/(user)/catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/(user)/catkin_ws/src/ORB_SLAM2/Examples/Monocular/MyCam.yaml

运行时,首先是建图

为了图像清晰,设置只选前两项。建图时尽量获得更多的特征点。

初始化

建图

建图

觉得生成地图OK之后,可以开启定位模式(把localization勾上)

定位

定位

大功告成。

python调用usb摄像头黑屏_ORB-SLAM2编译安装和USB摄像头例程运行相关推荐

  1. 【摄像头黑屏怎么办?】

    网络的高速发展,让人们拥有了更多的互联沟通方式.越来越多的用户,开始在日常生活中,使用电脑与互联网,与远方的亲朋好友,进行面对面的沟通,即使远在天涯,也如近在咫尺. 想要进行网络视频聊天,一只网络摄像 ...

  2. u盘安装centos8黑屏_u盘centos7 安装 黑屏苹果电脑怎么安装win7系统还原

    3.然后进入资料备份界面,通过勾选可以选择对"我的文档"."收藏夹"."桌面文件"进行备份,备份资料会保存到自动生成的"XBGho ...

  3. 在解决计算机主机,开机之后显示器黑屏无信号输入,但电脑主机一直在运行的解决方法...

    我们在使用电脑的过程中,难免会出现硬件或者系统.软件的故障,而近期有一个网友称自己的电脑出现了一个故障,那就是开机之后显示器黑屏无信号输入,但电脑主机一直在运行,其实出现了这个故障,原因众多,我们需要 ...

  4. python打开摄像头黑屏怎么办_临时解决pygame启动时黑屏问题

    直接上代码: import pygame import sys pygame.init() screen = pygame.display.set_mode((10,10),0) screen = p ...

  5. python打开摄像头黑屏怎么办_python识别视频黑屏或者低清晰度

    第一步:获取视频第一帧图片 第二步:进行识别 import os import numpy as np import cv2 as cv from skimage import filters, io ...

  6. iphone6 计算机无法检测到照相机,苹果iPhone XR摄像头黑屏不能照相是什么原因?...

    今天接到客户电话,说自己买了没多久的xr出现问题了,不能照相,后置摄像头照相用不了,点不开了,只有前置摄像头可以用,手电筒也打不开这是为什么?其实,摄像头故障是手机使用问题中比较常见的.今天,海口苹果 ...

  7. 腾讯会议摄像头黑屏如何解决?

    在使用腾讯会议摄像头的时候,发现打开是黑屏,这是怎么回事?检查摄像头是正常的,隐私权限也正常,那可能是相机驱动和腾讯会议的适配问题,也可能是其它原因. 方法一: 1.打开[设备管理器] > [图 ...

  8. 腾讯会议摄像头黑屏怎么回事?

    腾讯会议是现下很多企业.学校都在使用的一款线上会议软件,但是有用户打开腾讯会议摄像头后发现黑屏了,这是怎么回事?检查过摄像头是正常的,隐私权限也是正常的,那是哪里出现了问题呢?下面就来看看小编的解答. ...

  9. Python调用OpenCV接口播放本地视频文件、本地和网络摄像头

    1 前言 上篇文章介绍了在WIN10系统上, C++调用OpenCV接口,播放本地视频文件.本地和网络摄像头视频.本篇我们来看一下,Python如何调用OpenCV接口,做同样的事情. 序号 视频来源 ...

最新文章

  1. 单例模式(全局地提供了一个类的唯一对象,该类的对象只创建一次,避免了创建类对象的开销)
  2. altium designer显示Analyzing GND,变得很卡
  3. windows家庭版 启用组策略
  4. Groovy开发语言
  5. 合振动的初相位推导_基于振动信号的机械设备故障诊断(一)
  6. matlab-线性代数 判断 det 矩阵是否可逆
  7. Windows 配置Java环境变量
  8. win7计算机打开显卡设置在哪,Win7显卡设置在哪里 win7系统如何设置显卡
  9. 任正非与美国思想家的咖啡对话全文
  10. 四级英语作文:拯救动物
  11. 复式记账法-银行业务
  12. 【电力负荷预测】基于matlab BP神经网络电力负荷预测【含Matlab源码 278期】
  13. 英语日常短语积累(6)-银行考试真题
  14. ARKit如何将太阳系装进iPhone
  15. 一个完全平方数是指一个数乘以自己,例:625=25^2; 特殊的完全平方数是指不仅是完全平方数而且平方后的数中有两个数字是相同的,例: 100=10^2; 144=12^2;
  16. linux查看脚本运行进度,实用小脚本: 查看 MLDonkey 下载进度
  17. 奥塔在线:MySql数据库定时备份脚本
  18. H5 VUE实现手机签名功能
  19. matlab命令行窗口显示长度设置_由于运算出来的数据比较多,在命令窗口里显示不全,matlab怎么设置才能在命令窗口中显示全部运算结果...
  20. Github上有趣的100个python项目

热门文章

  1. 开机启动简易收集面板并最小化
  2. Myeclipse学习总结(17)——Java主流IDE优缺点分析
  3. MyBatis学习总结(11)——MyBatis动态Sql语句
  4. Java基础学习总结(39)——Log4j 1使用教程
  5. oracle 调用main方法,main方法中调用spring注入bean
  6. swift 拖动按钮_Swift 简单控件示例:滑块(UISlider)
  7. Linux一个cpu有多少个vector,C++中vector容器大小增长规律浅析
  8. oracle date 隐式转换,PL/SQL中的数据类型隐式转换规则
  9. Wget 命令用法详解
  10. PostgreSQL 10 自定义并行计算聚合函数的原理与实践