最近被Ubuntu20.04上安装ROS1并跑通双目ORB_SLAM2搞得头疼,网上的教程很多,但是坑也很多。这里记录下我安装调试成功经验。过程中使用到的所有参考文章写的都很棒,大家有什么问题可以去原文看看,因为有可能我打错一些字,但是自己没发现。
注意:本文重点在于安装好ROS1
、USB_CAM
、ORB_SLAM2
。在最后一步【启动ORB_SLAM2双目测试】中没有提供单目测试的命令,如果有单目测试的需求,可以自行百度查找相关命令。
参考文章总览:
- 鱼香社区-小鱼一键安装系列
- Ubuntu20.04配置ORBSLAM2并运行(保姆级教程)
- Ubuntu20.04安装ROS及实时运行ORB-SLAM2
- ROS调用USB双目摄像头模组
- 关于英伟达jetson nano的搭配双目摄像头跑ORB_SLAM2
第一步-安装ROS1
一条命令解决,安装过程中是有中文提示的,跟随提示自行选择即可(鱼香社区-小鱼一键安装系列):
Ubuntu20.04 需要安装ROS1 Noetic
wget http://fishros.com/install -O fishros && . fishros
ros初始化与更新(同样采用的是鱼香大佬
的脚本):
rosdepc init
rosdepc update
第二步-创建ROS工作空间
cd ~/
mkdir catkin_ws && cd catkin_ws
mkdir src
catkin_make
第三步-安装前置依赖
参考文章:
先下载资源(阿里云盘不限速,注册一下就好):ORB_SLAM2资源.exe
注意:由于阿里云盘不允许分享压缩文件,因此这里采用的分享形式为7Zip
的自释放程序,建议在windows上下载好,然后双击释放其中的文件之后,再将文件全部转移到ubuntu当中。
1-安装Pangolin
cd ~/
sudo apt-get update
sudo apt-get install cmake gcc g++ git
sudo apt-get install libxkbcommon-dev
sudo apt-get install wayland-protocols
sudo apt install libglew-dev
cd Pangolin-0.6
mkdir build
cd build
cmake ..
make -j
sudo make install
2-测试Pangolin(若出现一个彩色方块,则安装成功。)
cd ../
cd examples/HelloPangolin
mkdir build && cd build
cmake ..
make
./HelloPangolin
3-安装opencv3
cd ~/
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
cd opencv-3.4.15
mkdir build
cd build
cmake ..
make -j
sudo make install
4-安装结束后
sudo gedit /etc/ld.so.conf.d/opencv.conf
# 写入并保存
/usr/local/lib
# 退出之后
sudo ldconfig
sudo gedit /etc/bash.bashrc
# 在最后一行写入并保存
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
# 退出之后
source /etc/bash.bashrc
sudo updatedb
5-测试opencv
cd opencv3/samples/cpp/example_cmake
cmake .
make
./opencv_example
第四步-安装ORB_SLAM2
直接从下载好的文件中解压出来放到ubuntu的~/catkin_ws/src/
里面,或者也可以自己克隆:ORB_SLAM2_OPENCV4
注意:上面阿里云盘分享的OEB_SLAM2_OPENCV4
文件是我已经修改好的,编译可以直接通过的。
cd ~/catkin_ws/src/ORB_SLAM2_OPENCV4/
chmod +x build.sh && chmod +x build_ros.sh
cd
sudo vim /opt/ros/melodic/setup.bash
# 添加下面一句
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/nvidia/ORB_SLAM2-master/Examples/ROS
# 退出后输入
source /opt/ros/melodic/setup.bash
bash build.sh
bash build_ros.sh
第五步-安装USB_CAM
参考文章:ROS调用USB双目摄像头模组
sudo apt install ros-noetic-usb-cam*
安装好后,修改自己USB摄像头的分辨率
# 先查看自己的USB摄像头有没有连接上,根据信息填写自己的摄像头路径
ls /dev/video*
# 我的返回信息为:/dev/video0 /dev/video1
sudo gedit /opt/ros/noetic/share/usb_cam/launch/usb_cam-test.launch
# 那么我就修改<param name="video_device" value="/dev/video0">成为我自己的摄像头路径
测试摄像头是否开启
roslaunch usb_cam usb_cam-test.launch
如果你是单目摄像头,那么这里的配置已经结束。
如果你和我一样使用的是双目摄像头,那么上面测试摄像头的终端不要关闭,程序也不要停止,继续往下走。
cd ~/catkin_ws/src
catkin_create_pkg camera_split cv_bridge image_transport roscpp sensor_msgs std_msgs camera_info_manager
将上面解压出来的camera_split.zip
文件,解压替换~/catkin_ws/src/camera_split
文件夹,然后:
cd ~/catkin_ws/
catkin_make
source ./devel/setup.bash
roslaunch camera_split camera_split_no_calibration.launch
就可以看到双目画面已经被分割出左右视野来了。
第六步-启动ORB_SLAM2双目测试
参考文章:关于英伟达jetson nano的搭配双目摄像头跑ORB_SLAM2
关闭之前所有的终端,重新打开三个终端:
第一个:
roslaunch usb_cam usb_cam-test.launch
第二个:
roslaunch camera_split camera_split_no_calibration.launch
第三个:
rosrun ORB_SLAM2 Stereo /home/{your_name}/catkin_ws/src/ORB_SLAM2_OPENCV4/Vocabulary/ORBvoc.txt /home/{your_name}/catkin_ws/src/ORB_SLAM2_OPENCV4/Examples/Stereo/EuRoC.yaml false
至此结束。