Ubuntu 16.04+ROS+ORB-SLAM2配置以及相关问题
最近尝试在ubuntu 16.04下配置ORB-SLAM2,现将相关过程以及遇到的问题进行记录,给大家做个参考。
网上有很多ubuntu 14.04下配置ORB-SLAM的文章,和我们这个会有区别,需要针对自己的系统版本及需修等选择。
配置过程主要参考了以下几个网页:
https://github.com/raulmur/ORB_SLAM2(ORB-SLAM2源码)
http://blog.csdn.net/u79501/article/details/68942174(安装ORB-SLAM2)
http://www.liuxiao.org/2016/03/ros-orb-slam2-%E5%AE%89%E8%A3%85%E8%B0%83%E8%AF%95/(安装ORB-SLAM2)
http://www.liuxiao.org/2016/07/ubuntu-orb-slam2-%E5%9C%A8-ros-%E4%B8%8A%E7%BC%96%E8%AF%91%E8%B0%83%E8%AF%95/(ROS+ORB-SLAM2)
http://blog.csdn.net/u010128736/article/details/52808650(参考安装Eigen)
这几个网页都介绍了ORB-SLAM的安装过程,在表述上有些不同,我进行一下整理(以github上的步骤为主)
1、依赖安装
C++11或C++0x编译器
这个不用管,能编译C++的编译器基本都满足这个要求。
Pangolin
用来可视化及用户交互,参考 https://github.com/stevenlovegrove/Pangolin 进行安装。
OpenCV
用来处理图像和特征,至少 需要2.4.3版本的,我在ubuntu14.04+ros-indigo+opencv2.4.10和ubuntu16.04+ros-kinectic+opencv3.2上配置成功过。
Eigen3
安装g2o需要配置(见下一条),至少要3.1.0版本
下载Eigen( http://eigen.tuxfamily.org ),进入到在解压后的Eigen文件夹(例如eigen-eigen-5a0156e40feb)下
mkdir build
cd build
cmake ..
make
sudo make install
DBoW2 和 g2o (在Thirdparty文件夹里)
ORB-SLAM2用修改版的DBoW2来执行位置识别,用g2o进行非线性优化,这两个修改后的库都在已经在下载的文件夹里了,我们不用进行操作。
ROS(可选)
如果只是运行网上提供的数据就不需要安装,要用自己的摄像头就要安装ROS,详细安装教程网上有很多,可以直接参考github上的ROS教程(14.04安装indigo版,16.04安装kinetic版)
2、编译ORB-SLAM2
下载源码:
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
执行:
cd ORB_SLAM2
chmod +x build.sh
./build.sh
这样就编译完成了,可以运行网上的数据集了:
例如:TUM dataset: http://vision.in.tum.de/data/datasets/rgbd-dataset/download
运行下面的代码:
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUMX.yaml PATH_TO_SEQUENCE_FOLDER
Change TUMX.yaml
to TUM1.yaml,TUM2.yaml or TUM3.yaml for freiburg1, freiburg2 and freiburg3 sequences respectively. Change PATH_TO_SEQUENCE_FOLDER
to the uncompressed sequence folder.
如果要用自己的摄像头运行,需要安装ROS,配置环境变量的过程遇到了一些问题,这里具体讲讲
安装好ROS后,需要将ROS的PACKAGE加入到环境变量中:
首先打开.bashrc文件:
sudo gedit ~/.bashrc
在文件最后加入下面的语句:
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/wys/ORBSLAM/ORB_SLAM2/Examples/ROS
然后执行
source ~/.bashrc
使其生效
Linux系统每打开一个终端都会执行一次.bashrc,这样就将ROS的PACKAGE路径加入到环境变量中了。
然后在ORB_SLAM2文件夹下执行:
chmod +x build_ros.sh
./build_ros.sh
就编译好了,也可以用如下语句编译:
mkdir build
cd build
cmake .. -DROS_BUILD_TYPE=Release
make -j
3、运行ROS+ORB_SLAM2
1)安装usb_cam驱动
ROS中安装USB Camera驱动,参考:http://www.liuxiao.org/2015/10/ros-%E5%AE%89%E8%A3%85-usb-camera-%E9%A9%B1%E5%8A%A8%E5%B9%B6%E8%B0%83%E7%94%A8/
该程序建议安装在catkin_ws/src文件夹中,catkin_ws文件夹在安装ROS时可建立,用来测试(详见:http://blog.csdn.net/u79501/article/details/68942174)
在调用摄像头时使用了rosrun、roscd等命令,如果出现了这些命令无效或是不存在等错误,那就是环境变量设置不正确,引用:
“
有关ROS工作空间
一般我们都会创建一个ROS的工作空间:catkin_ws(把它放在home下就行了)
创建完之后记得把catkin_ws的setup.sh添加到.bashrc后面。
一般创建ROS的package都是在catkin_ws/src下面,比如后面要讲的usb_cam,就把它直接安装到catkin_ws/src就行了。
ORB_SLAM2也可以安装到catkin_ws/src下,这样你就不用把ORB_SLAM2添加到ROS的环境变量中去了。
当然,你也可以把ORB_SLAM2安装到其他地方,不过你要记得把ORB_SLAM2的setup.sh路径添加到.bashrc后面哦。
”( http://blog.csdn.net/u79501/article/details/68942174)
最终.bashrc最后的环境变量应该有下面四个:
source /opt/ros/kinetic/setup.bash
source /home/wys/ORBSLAM/ORB_SLAM2/Examples/ROS/ORB_SLAM2/build/devel/setup.bash
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:/home/wys/ORBSLAM/ORB_SLAM2/Examples/ROS
source ~/catkin_ws/devel/setup.bash
修改完后记得 source ~/.bashrc 使能。
重新打开一个终端,在ORB_SLAM2 根目录打开 usb_cam 节点:
sourceExamples/ROS/usb_cam/devel/setup.bash
roslaunchusb_camusb_cam.launch
另外,usb_cam.launch文件里面的内容如下(与usb_cam自带的usb_cam-test.launch不同,加入了两个remap,将usb_cam映射到camera):如果此前正确设置了环境变量,则第一行代码不需要。
<launch>
<nodename="usb_cam"pkg="usb_cam"type="usb_cam_node"output="screen" >
<paramname="video_device"value="/dev/video0" />
<paramname="image_width"value="640" />
<paramname="image_height"value="480" />
<paramname="pixel_format"value="yuyv" />
<paramname="camera_frame_id"value="usb_cam" />
<paramname="io_method"value="mmap"/>
<remapfrom="/usb_cam/image_raw"to="/camera/image_raw"/>
</node>
<nodename="image_view"pkg="image_view"type="image_view"respawn="false"output="screen">
<remapfrom="image"to="/camera/image_raw"/>
<paramname="autosize"value="true" />
</node>
</launch>
或者:
“
把ros_mono_ar.cc (在~/ORBSLAM/ORB_SLAM2/Examples/ROS/ORB_SLAM2/src)中的
ros::Subscriber sub = nodeHandler.subscribe("/camera/image_raw", 1, &ImageGrabber::GrabImage,&igb);
改为:
ros::Subscriber sub = nodeHandler.subscribe("/usb_cam/image_raw", 1, &ImageGrabber::GrabImage,&igb);
(看到没有,路径变了哟。因为我们的图片都是从/usb_cam/image_raw发送过来的)
然后再把Example编译一下~
”
2)运行
a. 在一个终端输入:
roscore(启动ROS核)
b. 在第二个终端输入:
roslaunch usb_cam usb_cam.launch(打开usb摄像头)
c. 在第三个终端输入:
rosrun ORB_SLAM2 MonoAR /home/wys/ORBSLAM/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/wys/ORBSLAM/ORB_SLAM2/Examples/Monocular/TUM1.yaml
(路径按照自己的写哦,TUM1.yaml是参数设置文件,主要是相机的内参,这个得自己标定。如果懒得标定,直接用TUM1.yaml吧,凑合着用吧)
结果如下:
Ubuntu 16.04+ROS+ORB-SLAM2配置以及相关问题相关推荐
- ubuntu 16.04 ROS + kinect v2 安装
参考: ubuntu 16.04 ROS + kinect v2 driver安装方法:安装驱动时遇到的问题及解决方法(1) 以下为参考链接部分内容以及我安装过程中的操作 安装libfreenect2 ...
- ubuntu 16.04 tightvncserver VNC 安装配置,安装xrdp,x11vnc、Ubuntu 18.04
ubuntu 安装 VNC 1,ubuntu 安装 VNC 2,VNC配置 3,macOS VNC Viewer 安装 4,安装xrdp 5,macOS 使用Microsoft Remote Desk ...
- Ubuntu 16.04 amd64 bond mode6 配置
1.简介 本文 旨在 介绍 在 Ubuntu 16.04 环境下 配置 bond mode6 1.1 操作 系统 ## 本文 测试 使用的是 Ubuntu 16.04 的操作系统 # lsb_rele ...
- ubuntu 16.04下安装pytorch配置caffe2(cuda 9.0+cudnn 7.6)
caffe2已经合并进啦pytorch里面,所以我们可以通过安装pytorch完成对caffe2的配置,相较于安装caffe2源码的方式,操作上更为简单. 操作系统: Ubuntu 16.04.5 L ...
- 树莓派3b+安装ubuntu 16.04+ROS kinetic过程详解及踩坑总结
本人手上有一块树莓派3b+和一个32G内存卡. 想着在上面安装一个ubuntu系统学习ros用. 硬件准备清单: 1.树莓派 2.SD卡及读卡器. 3.屏幕和hdmi连接线. 4.键盘鼠标. 然后了解 ...
- Ubuntu 16.04 LTS 双网卡配置
需求 电脑双网卡,需要实现一个静态IP分配(产品测试用),另外一个DHCP(上网查资料) 实现 打开终端,输入的ifconfig,如下图所示,我的两个网卡叫enp3s0和enp4s0. ifconfi ...
- linux下opengl开发环境,Ubuntu 16.04 OpenGL 开发环境配置指南
在 Visual Studio Code 中撰写一段测试程序 // test.c /* light.c 此程序利用GLUT绘制一个OpenGL窗口,并显示一个加以光照的球. */ /* 由于头文件gl ...
- 在Ubuntu 16.04上安装和配置VNC
目录 1.VNC客户端配置 2.VNC服务端配置 2.1 本机远程连接服务器 2.2 更新依赖包 2.3 安装Xfce桌面环境 2.4 安装tightvncserver 3.客户端VNC连接服务端 4 ...
- 如何在Ubuntu 16.04上安装和配置GitLab
https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-gitlab-on-ubuntu-16-04 ...
最新文章
- linux java jdk_神级程序员教你如何10分钟在Linux上安装java的JDK?
- 如何查看阵列卡的队列深度
- matlab配对交易回测,精品案例 | 经典投资策略之配对交易策略
- 华为上半年手机销量_上半年国内智能手机销量下滑24.7%;华为MatePad 10.8或搭载麒麟990;三星将研发PC芯片;AMD股价超英特尔...
- 云+网+端 技术架构
- python整人程序_python—做一个恶搞程序
- oracle服务器重启后监听启动
- Leetcode--494. 目标和
- 一篇文章看懂Java并发和线程安全
- Spring-data-redis操作redis知识总结
- Atitit 文件系统概论 艾提拉著 目录 1. NTFS系统	1 1.1. NTFS文件系统概述	1 1.2. 1.1 文件系统简介 1.2 NTFS文件系统	1 1.3. 第2章
- 【主动轮廓模型(二)】《GVF Snake》算法原理与OpenCV实现
- 智慧旅游信步而来 互联网安防助力景区智能化
- python中的折线图、散点图、直方图绘制和图像参数设置
- #SATA# SATA 实际管脚接线图
- python 3.x语句print_Python 3.x语句print(1,2,3,sep=’.’)
- jenkins+Warnings Next Generation Plugin构建代码自动化检测
- C语言邮箱名字用什么存储,用c++定义一个描述学生通讯录的类数据成员包括姓名学校电话号码和邮箱...
- 灵活替换、无惧缺芯,ARM工控板中的模块化设计
- 价值规律的作用是什么