ORB_SLAM2技术详解(3)PartII--编译并使⽤
ROSORB_SLAM2Package
⽬录
1. 编译ORB_SLAM2 ROS package
1.1系统平台
操作系统 :Ubuntu 16.04
ROS版本 :kinetic
eigen库版本 :3.x.x
OpenCV版本:opencv3.4.7
USB摄像头:640*480,30帧
ceres:
1.2 创建catkin_ws
使⽤ROS创建workspace
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make
mkdir ORB-SLAM2
添加环境变量(修改并按照你的ORB_SLAM2的创建路径配置)
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
1.3 安装相关依赖库
安装git cmake
sudo apt-get install git cmake
安装⼀些库
sudo apt-get install libblas-dev liblapack-dev
安装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 下载并解压到Ubuntu,然后进⼊OpenCV⽂件夹进⾏编译安装
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
make
sudo make install
安装指定版本的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 <unistd.h>
#include <stdio.h>
#include <stdlib.h>
修改环境变量(user就是⽤户的名字)
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/(user)/catkin_ws/ORB-SLAM2/Examples/ROS 这个时候 打开~/.bashrc⽂件 最末端的时候应该是这个样⼦:
检验ROS path是否被识别
理论上,这个应该要work的,不过有可能ros不能识别。如何确认有没有work呢?⽅法是:
echo $ROS_PACKAGE_PATH
  如果终端显⽰了笔者刚刚加⼊的路径,说明ROS路径配置成功了
最后,验证ros是否识别ORB_SLAM2包,
roscd ORB_SLAM2
如果能进⼊这个⽂件夹,说明我们路径设置成功了。ROS配置关,pass。
编译安装ROS版本的ORB-SLAM2
cd ORB_SLAM2
chmod +x build_ros.sh
./build_ros.sh
注意坑2:如果在编译构建的过程中出现关于boost库的错误,要到/Examples/ROS/⽂件下修改 加上 -lboost_system,如果依旧不能解决问题,请重新安oost库。
请参考本⼈另外⼀篇专门踩坑的博客:
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
)
cv_bridge的opencv版本冲突的问题解决
内⼼:Fxxk怎么这么多问题!--->Github ORB_SLAM2 --->issues-->哦,原来不⽌我⼀个⼈啊
2. 使⽤USB
3.0 Camera
2.1 安装ROS usb_cam源码
将usb_cam ⽂件夹放在catkin_ws/src⽬录下,即执⾏以下命令
cd catkin_ws/src
git clone github/bosch-ros-pkg/usb_cam.git
cd ..
catkin_make
2.2 编译usb_cam
cd usb_cam
mkdir build
cd build
cmake ..
make
2.3 测试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 ~/workspace/catkin_ws/src/usb_cam
更改launch⽂件
cd launch
gedit usb_cam-test.launch
2.4 ROS运⾏.launch⽂件
roslaunch usb_cam usb_cam-test.launch
cmake如何使用如果出现image_view报错的情况,安装image_view
sudo apt-get install ros-kinetic-image-view

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。