使用Docker配置SVO SLAM1与SVO SLAM2的运行环境

1、ROS docker的获取

sudo docker pull osrf/ros:noetic-desktop-full

2、进入docker

2.1 使docker可以使用宿主机的图形界面(具体可以查看docker使用
xhost +
2.2 运行docker
 sudo docker run -ti -h ubuntu  --hostname ubuntu  -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v /home/xxx/:/share --gpus all  osrf/ros:noetic-desktop-full /bin/bash

3、安装依赖

3.0 boost与eigen
sudo apt-get install libboost-all-dev
apt-get install libeigen3-dev
opencv相关的
3.1 Sophus
	git clone https://github.com/strasdat/Sophus.git
	cd Sophus
	git checkout a621ff
	mkdir build
	cd build
	cmake ..
	make -j4 
	make install
3.2、fast
	git clone https://github.com/uzh-rpg/fast.git
	cd fast
	mkdir build
	cd build
	cmake ..
	make -j4
	make install
3.3、g2o
	wget https://github.com/RainerKuemmerle/g2o/archive/20160424_git.tar.gz -O g2o-20160424_git.tar.gz
	tar xvzf g2o-20160424_git.tar.gz
	cd g2o-20160424_git
	mkdir build
	cd build
	cmake ..
	make -j4
	sudo make install
3.4、rpg_vikit
git clone https://github.com/uzh-rpg/rpg_vikit.git

非ROS编译
cd rpg_vikit/vikit_common
修改CMakeLists.txt中
SET(USE_ROS TRUE) # Set False if you want to build this package without Catkin
变FALSE
mkdir build
cd build
cmake ..
make -j4
make install

4、编译rpg_svo

4.1 、非ROS编译
git clone https://github.com/uzh-rpg/rpg_svo.git
cd rpg_svo/svo/
修改CMakeLists.txt中
SET(USE_ROS TRUE) # Set FALSE if you want to build this package without Catkin
变FALSE
mkdir build
cd build
cmake ..
make -j4
4.2、ROS编译
4.2.1创建ros空间
 mkdir -p  robot_work/src
 cd  robot_work/src
 catkin_init_workspace
 cd .. && catkin_make
 echo "source /share/DockerFile/robot_work/devel/setup.bash"  >> ~/.bashrc
 source ~/.bashrc
4.2.2 下载包

把第三步的依赖包复制到robot_work/src

4.2.3编译
git clone https://github.com/uzh-rpg/rpg_svo.git 到 robot_work/src/
在robot_work目录下执行
catkin_make

5、遇到问题 可参考

5.1
/share/DockerFile/Sophus/sophus/so2.cpp:32:26: error: lvalue required as left operand of assignment
   32 |   unit_complex_.real() = 1.;

解决

修改Sophus/sophus/so2.cpp
把
SO2::SO2()
{
 unit_complex_.real() = 1.;
 unit_complex_.imag() = 0.;
}

变成
SO2::SO2()
{
  unit_complex_.real(1.);
  unit_complex_.imag(0.);
}
5.2
error: ‘CV_RANSAC’ was not declared in this scope

解决

CV_RANSAC ==》cv::RANSAC
5.3
error: ‘CV_INTER_LINEAR’ was not declared in this scope

解决

CV_INTER_LINEAR  修改为 cv::INTER_LINEAR

或者,添加头文件 
#include<opencv2/imgproc/imgproc_c.h>
5.4
 error: ‘CV_GRAY2RGB’ was not declared in this scope

解决

加入
#include <opencv2/imgproc/types_c.h>
5.5
出现 "Invalid argument "/world" passed to canTransform argument source_frame in tf2 frame_ids cannot start with a '/' like: "

解决

修改rpg_vikit 中vikit_ros/src/output_helper.cpp 中的frame_id 去掉斜杠
5.6
undefined reference to `Sophus::SE3::operator*(Eigen::Matrix<double, 3, 1, 0, 3, 1> const&) const'

解决

FIND_PACKAGE(Sophus REQUIRED)

${Sophus_INCLUDE_DIRS}

${Sophus_LIBRARIES}

6、运行

6.1 非ROS运行
export SVO_DATASET_DIR=/share/DockerFile/Datasets/

下载数据集 提取码: d92d

把数据集解压到 Datasets
cd svo/bin

./test_pipeline 
6.2 ROS下运行
6.2.1 使用其他终端进入docker命令
查看容器id(xxxx)
sudo docker ps -a 
使用命令进入docker
sudo docker exec -it xxxx(ID)  /bin/bash
6.2.2 启动roscore

终端1: roscore

终端2: .launch文件启动SVO roslaunch svo_ros test_rig3.launch

终端3: 新建一个窗口启动rviz rosrun rviz rviz -d <PATH TO rpg_svo>/svo_ros/rviz_config.rviz
终端4:播数据提取码: cpd3 rosbag play airground_rig_s3_2013-03-18_21-38-48.bag

7、编译rpg_svo_pro_open

7.0 依赖
sudo apt-get install python3-catkin-tools python3-vcstool python3-osrf-pycommon
# system dep.
sudo apt-get install libglew-dev libopencv-dev libyaml-cpp-dev 
# Ceres dep.
sudo apt-get install libblas-dev liblapack-dev libsuitesparse-dev
7.1创建ros空间
ROS-DISTRO=melodic/noetic
mkdir svo_ws && cd svo_ws
catkin config --init --mkdirs --extend /opt/ros/<ROS-DISTRO> --cmake-args -DCMAKE_BUILD_TYPE=Release -DEIGEN3_INCLUDE_DIR=/usr/include/eigen3
cd src
//此部分可能会出现git权限问题,解决方法是在本机生成ssh密钥并把公钥上传到自己的git中就应该ok
git clone git@github.com:uzh-rpg/rpg_svo_pro_open.git
vcs-import < ./rpg_svo_pro_open/dependencies.yaml
touch minkindr/minkindr_python/CATKIN_IGNORE
cd rpg_svo_pro_open/svo_online_loopclosing/vocabularies && ./download_voc.sh
cd ../../..
7.2 编译
7.2.1 front-end + sliding window back-end + loop closure/pose graph
catkin build
7.2.2 Build with the global map using iSAM2 (all functionalities)
rm rpg_svo_pro_open/svo_global_map/CATKIN_IGNORE
修改 svo_cmake/cmake/Modules/SvoSetup.cmake
SET(USE_GLOBAL_MAP TRUE)
git clone --branch 4.0.3 git@github.com:borglab/gtsam.git
修改
# 1. 修改gtsam/CMakelists.txt: 使用 system Eigen
-option(GTSAM_USE_SYSTEM_EIGEN "Find and use system-installed Eigen. If 'off', use the one bundled with GTSAM" OFF)
+option(GTSAM_USE_SYSTEM_EIGEN "Find and use system-installed Eigen. If 'off', use the one bundled with GTSAM" ON)
# 2. 修改gtsam/cmake/GtsamBuildTypes
把 list_append_cache(GTSAM_COMPILE_OPTIONS_PUBLIC "-march=native")
改为
list_append_cache(GTSAM_COMPILE_OPTIONS_PUBLIC "-mno-avx")

在B站上放了一个实操视频

使用docker运行SVO SLAM的老版本与新版本并成功运行

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用Docker部署ORB-SLAM2的步骤: 1. 安装Docker 如果尚未安装Docker,请按照Docker官方文档中的说明进行安装。 2. 下载ORB-SLAM2源代码 从ORB-SLAM2的GitHub存储库中下载源代码。您可以使用以下命令: ``` git clone https://github.com/raulmur/ORB_SLAM2.git ``` 3. 构建Docker镜像 在ORB-SLAM2源代码目录中,创建一个名为Dockerfile的文件,并将以下内容复制到其中: ``` FROM ubuntu:16.04 RUN apt-get update && \ apt-get install -y \ build-essential \ cmake \ git \ libeigen3-dev \ libglew-dev \ libsuitesparse-dev \ libopencv-dev \ libboost-all-dev \ libvtk6-dev \ libjpeg-dev \ libpng-dev \ libtiff-dev \ libopenexr-dev \ freeglut3-dev \ libxi-dev \ libxmu-dev \ python3-dev \ python3-numpy \ python3-pip \ python3-scipy \ python3-matplotlib \ ipython3 && \ pip3 install --upgrade pip && \ pip3 install jupyter WORKDIR /ORB_SLAM2 COPY . /ORB_SLAM2 RUN chmod +x build.sh && \ ./build.sh CMD ["bash"] ``` 这个Dockerfile使用Ubuntu 16.04作为基础镜像,并安装了ORB-SLAM2所需的所有依赖项。它还将ORB-SLAM2源代码复制到容器中,并运行build.sh脚本来编译ORB-SLAM2。 在ORB-SLAM2源代码目录中,使用以下命令构建Docker镜像: ``` docker build -t orbslam2 . ``` 此命令将使用名为orbslam2的标签构建Docker镜像。该过程可能需要一些时间来完成。 4. 运行ORB-SLAM2 现在,您可以使用以下命令在Docker容器运行ORB-SLAM2: ``` docker run -it --rm --device=/dev/video0 orbslam2 ``` 此命令将启动一个新的Docker容器,并将其与计算机上的摄像头设备(/dev/video0)连接。ORB-SLAM2将在容器运行,并且您将能够在控制台中查看ORB-SLAM2输出。 这是一个简单的例子,您可以按照ORB-SLAM2的文档以及您自己的需要来配置运行它。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值