ORBSLAM2编译依赖(实现视觉SLAM)
参考: ①XTDrone语雀文档
https://www.yuque.com/xtdrone/manual_cn/vslam
②B站Up主冷泉村西的视频
https://www.bilibili.com/video/BV1744y1n7fC?spm_id_from=333.999.0.0
目录
参考
1. XTDrone语雀文档
https://www.yuque.com/xtdrone/manual_cn/vslam快速链接
2. B站Up主冷泉村西的视频
https://www.bilibili.com/video/BV1744y1n7fC?spm_id_from=333.999.0.0快速链接
一、Pangolin
-
下载
https://github.com/stevenlovegrove/Pangolin
不同版本可能有所不同,并且也不知道编译会不会出错,我用的是0.5版本,编译可以实现。
我自己下载的是压缩包,然后放到Ubuntu自己选定的一个路径解包
-
build编译
新建文件夹build,然后在build路径下打开终端,cmake ..
会出现报错
输入
sudo apt-get install libglew-dev glew-utils
然后重新cmake …
cmake ..
然后编译
make -j4
这一步,终端在编译过程中会出现警告表示出现错误,我们翻上去一个一个错误进行更正就ok了,这里的主要错误是某些文件(报错已指出)缺少一个头文件#include<unistd.h>
,添加就可以了。
然后安装
sudo make install
二、OpenCV
ROS有自带的OpenCV3.2
三、Eigen3
- 下载
http://eigen.tuxfamily.org
- 解压并放到自己选的路径
- bulid编译
新建文件夹build,然后在build路径下打开终端,cmake ..
- 安装
sudo make install
四、DBoW2和g2o
不需要另外安装
五、编译ORBSLAM2
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
cd ORB_SLAM2
chmod +x build.sh
./build.sh
如果在上面这一步也出现报错,那么也是同样的问题。找到对应文件加入头文件#include<unistd.h>
六、用TUM运行ORBSLAM2的实例
然后解压到自己选的路径,我放在主文件夹(我自己的电脑/home/vm123/)
- 在终端执行下面的命令
这里需要根据自己具体的路径修改,把TUMX.yaml
改为具体的TUM1.yaml
或TUM2.yaml
或TUM3.yaml
,PATH_TO_SEQUENCE_FOLDER
改为具体路径加rgbd_dataset_freiburg1_xyz
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUMX.yaml PATH_TO_SEQUENCE_FOLDER
下面是一个例子:
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml ~/rgbd_dataset_freiburg1_xyz
执行完以后,它会自动弹出动画进行测试,等到测试完毕它会自动关闭。
七、基于XTDrone文档的ORBSLAM2编译
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
八、运行测试
- 启动仿真
cd PX4_Firmware
roslaunch px4 indoor1.launch
- 启动ORBSLAM2
cd ~/catkin_ws/scripts/
sh xtdrone_run_stereo.sh
- 另一终端
cd ~/XTDrone/communication
python multirotor_communication.py iris 0
- 再另一终端
cd ~/XTDrone/control/keyboard
python multirotor_keyboard_control.py iris 1 vel