这篇博客主要要参考了“XTDrone 视觉SLAM环境配置”,原作者提供的教程前面关于依赖的都没介绍,也可能是在ORBSLAM2编译依赖这里详细介绍了,但是全英文对我来说太有挑战了,我就没认真看
本教程以ORBSLAM2为例。ORBSLAM3已经在XTDrone上测试过,编译和使用方法与ORBSLAM3高度类似,大家如果有需要,可以根据此教程同理使用ORBSLAM3。
安装各种依赖
sudo apt install -y libgl1-mesa-dev
sudo apt install -y libglew-dev
sudo apt install -y cmake
sudo apt install -y libpython2.7-dev
sudo apt install -y python-pip
sudo python -mpip install numpy pyopengl Pillow pybind11
sudo apt install -y pkg-config
sudo apt install -y libegl1-mesa-dev libwayland-dev libxkbcommon-dev wayland-protocols
sudo apt install -y ffmpeg libavcodec-dev libavutil-dev libavformat-dev libswscale-dev libavdevice-dev
sudo apt install -y libdc1394-22-dev libraw1394-dev
sudo apt install -y libjpeg-dev libpng-dev libtiff5-dev libopenexr-dev
# 1)安装 GLEW:
sudo apt-get install -y libglew-dev
# 2)安装 libuvc:
git clone https://github.com/ktossell/libuvc
cd libuvc
mkdir build
cd build
cmake ..
make && sudo make install
提前解决 libuvc.so.0问题
sudo /sbin/ldconfig -v
安装0.5版本的pangolin
先下载并解压缩到ubuntu的用户目录:
https://github.com/stevenlovegrove/Pangolin/releases/tag/v0.5
再进行安装
这里我是解压到主目录下
cd Pangolin-0.5 #这里要根据文件夹的名称修改
mkdir build
cd build
cmake ..
make -j8
sudo make install
ORBSLAM2编译(这里开始就和原作者的流程一样了)
注意该ORBSLAM2是在原版本基础上略做修改,其虽然支持ROS,但不是标准的ROS架构,因此不能采用catkin build编译
cp -r ~/XTDrone/sensing/slam/vslam/ORB_SLAM2/ ~/catkin_ws/src/
mkdir ~/catkin_ws/scripts/
cp ~/catkin_ws/src/ORB_SLAM2/xtdrone* ~/catkin_ws/scripts/
cd ~/catkin_ws/src/ORB_SLAM2
chmod +x build.sh
./build.sh
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/catkin_ws/src/ORB_SLAM2/Examples/ROS #将这句放到~/.bashrc中,以后使用更方便
chmod +x build_ros.sh
./build_ros.sh
代码里已经给大家提供了仿真使用的相机的标定文件,大家不用自己计算;想深入研究ORBSLAM2的标定文件,可以参考这个链接
由于Noetic自带的OpenCV版本是4.2.0,在编译时需要先修改CMakeList.txt (这一部分因为之前我在没安装依赖之前就该了,后面安装依赖之后没报错,不知道不改是不是也行)
find_package(OpenCV 4.2 QUIET)
if(NOT OpenCV_FOUND)
find_package(OpenCV 2.4.3 QUIET)
if(NOT OpenCV_FOUND)
message(FATAL_ERROR "OpenCV > 2.4.3 not found.")
endif()
endif()
编译过程中还会出现如下错误,添加对应头文件:(这个错误我也没遇到)
error: ‘CV_RGB2GRAY’ was not declared in this scope
#include <opencv2/imgproc.hpp>
其余报错同理。
启动仿真
启动PX4仿真,以下以室内场景一为例,其余场景同理
cd PX4_Firmware
roslaunch px4 indoor1.launch
在另一个终端启动ORBSLAM2,一开始需要等一会儿,它在载入词袋
cd ~/catkin_ws/scripts/
sh xtdrone_run_stereo.sh
·默认xtdrone_run_stereo.sh脚本是用于iris_0的,如果是给别的vehicle提供,需要修改该脚本,将iris_0换为其他vehicle
现在视觉定位信息就通过mavros发到PX4,查看/iris_0/mavros/local_position/pose可以看到有正确的数据
在另一个终端启动,
cd ~/XTDrone/communication
python multirotor_communication.py iris 0
建立通信后,启动键盘控制,即可飞行
cd ~/XTDrone/control/keyboard
python multirotor_keyboard_control.py iris 1 vel
视觉SLAM