时 2023 年 8 月 29 日
安装
前置依赖安装
ROS Noetic
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
sudo apt update
sudo apt install ros-noetic-desktop-full
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc`
sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
sudo apt install python3-rosdep
sudo rosdep init
rosdep update
OpenCV 4.4
若已安装 ROS noetic 则可跳过此步骤,因为 ROS noetic 自带 OpenCV 4.2.0,与 ORB-SLAM3 所要求的 OpenCV 4.4.0 没什么区别,仅需修改 ORB-SLAM3 项目目录下的 CMakeLists.txt 文件即可。
Pangolin 0.5
Pangolin-0.5.zip
官方未对该依赖的版本做出说明,经测试 Pangolin 0.5 版本未见错误。
sudo cp ./Pangolin-0.5 /usr/local/src/
cd /usr/local/src/
sudo unzip Pangolin-0.5
sudo apt-get install libglew-dev
sudo apt-get install cmake
cd Pangolin-0.5
sudo mkdir build
# 执行完下面的 sudo make install 命令后,该依赖将被安装到 /usr/local/Pangolin-0.5
sudo cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local/Pangolin-0.5 ..
sudo make -j7
sudo make install
ORB-SLAM3
- git clone 源码;
git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git
- 修改所需 OpenCV 版本;
find_package(OpenCV 4.4)
if(NOT OpenCV_FOUND)
message(FATAL_ERROR "OpenCV > 4.4 not found.")
endif()
find_package(OpenCV 4)
if(NOT OpenCV_FOUND)
message(FATAL_ERROR "OpenCV > 4 not found.")
endif()
将 ORB-SLAM3/Examples/ROS/CMakeLists.txt 中:
find_package(OpenCV 3.0 QUIET)
find_package(OpenCV 4.0 QUIET)
- 修改 ORB-SLAM3/build.sh(build_ros.sh) 文件,在 make -j 后面加上线程数;
- 编译。
# 非 ROS
./build.sh
# ROS
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/Your/ORB-SLAM3/path/Examples/ROS
./build_ros.sh
编译 ORB-SLAM3 ROS 出现的问题
问题 1:不存在目录 Examples/ROS/ORB_SLAM3
解决:将 Examples_old/ROS 复制到 Examples 目录下
Examples_old 目录下的例子是 v0.4-beta 版本的,v0.1-release 的 Examples 中没有 ROS 目录。
不要忘记修改 ORB_SLAM3/Examples/ROS/ORB_SLAM3/CMakeLists.txt,使其找到 OpenCV 4。
问题 2:找不到头文件 sophus/se3.hpp
解决:在 include_directories 中添加路径
${PROJECT_SOURCE_DIR}/../../../Thirdparty/Sophus
问题:错误转换
解决:不会!修改 ORB_SLAM3/Examples/ROS/ORB_SLAM3/CMakeLists.txt,将下述几行注释掉。
rosbuild_add_executable(MonoAR
src/AR/ros_mono_ar.cc
src/AR/ViewerAR.h
src/AR/ViewerAR.cc
)
target_link_libraries(MonoAR
${LIBS}
)
运行
非 ROS
./Examples/Stereo-Inertial/stereo_inertial_euroc Vocabulary/ORBvoc.txt Examples/Stereo-Inertial/EuRoC.yaml /mnt/wzy/workspace/information/dataset/euroc/zip/MH_01_easy Examples/Stereo-Inertial/EuRoC_TimeStamps/MH01.txt
问题:程序已经运行,却没有可视化界面
解决:修改运行对应的源程序,将下图处 false 改为 true,保存并重新编译即可
运行成功
ROS
- 运行
roscore
; - 运行下述命令:
./Examples/ROS/ORB_SLAM3/Stereo_Inertial Vocabulary/ORBvoc.txt Examples/Stereo-Inertial/EuRoC.yaml false
- play bag:
rosbag play /mnt/wzy/workspace/information/dataset/euroc/bag/MH_01_easy.bag /cam0/image_raw:=/camera/left/image_raw /cam1/image_raw:=/camera/right/image_raw /imu0:=/imu