记录下使用ceres遇到的问题
环境配置
使用docker来配置了下, ceres的依赖还是很简单的, 下面的配置不仅支持ceres编译, 同时也兼容slambook2,
# sudo docker build -f Dockerfile.txt -t slambook2 .
FROM nvidia/cudagl:11.2.1-devel-ubuntu18.04
# RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A4B469963BF863CC
RUN echo "\
deb http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse\n\
deb http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse\n\
deb http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse\n\
deb http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse\n\
deb http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse\n\
" > /etc/apt/sources.list
RUN apt-get update -y
RUN apt-get install -y cmake git libgtk2.0-dev \
libgtk-3-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev python-dev python-numpy \
libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev wget gdb vim zip \
libglu1-mesa-dev freeglut3-dev mesa-common-dev libgl1-mesa-dev libglew-dev \
# google-glog + gflags
libgoogle-glog-dev libgflags-dev \
# Use ATLAS for BLAS & LAPACK
libatlas-base-dev \
libeigen3-dev \
libsuitesparse-dev
# install ceres
COPY 3rdparty/ceres-solver /tmp/ceres-solver
RUN cd /tmp/ceres-solver && mkdir build && cd build && cmake .. && make -j3 install && rm -rf /tmp/ceres-solver
# instal Pangolin
COPY 3rdparty/Pangolin /tmp/Pangolin
RUN cd /tmp/Pangolin && mkdir build && cd build && cmake .. -DBUILD_PANGOLIN_PYTHON=OFF \
&& make -j3 install \
&& cd / && rm -rf /tmp/Pangolin
# install g2o
COPY 3rdparty/g2o /tmp/g2o
RUN cd /tmp/g2o && mkdir build && cd build && cmake .. && make -j3 install && rm -rf /tmp/g2o
# install opencv
RUN cd /tmp/ && git clone https://gitee.com/mirrors/opencv.git && cd opencv && git checkout 3.4 && mkdir build \
&& cd build && cmake -D CMAKE_BUILD_TYPE=RELEASE -D WITH_CUDA=OFF -D WITH_OPENGL=OFF .. \
&& make -j3 install \
&& rm -rf /tmp/opencv && ldconfig
# install DBoW3
COPY 3rdparty/DBoW3 /tmp/DBoW3
RUN cd /tmp/DBoW3 && mkdir build && cd build && cmake .. && make -j3 install && rm -rf /tmp/DBoW3
COPY 3rdparty/Sophus /tmp/Sophus
RUN cd /tmp/Sophus && mkdir build && cd build && cmake .. && make -j3 install && rm -rf /tmp/Sophus
启动镜像:
docker run --gpus all -it --rm\
-v /tmp/.X11-unix:/tmp/.X11-unix:rw \
-u $(id -u):$(id -g) \
-e DISPLAY=$DISPLAY \
-v ${PWD}:${PWD} \
-v ${HOME}:${HOME} \
-w ${PWD} \
--name slambook2 \
slambook2
- 如果要测试slambook2的代码, 直接cd到对应目录build就行.这里我们仅测试ceres.
cd 3rdparty/ceres
mkdir build && cd build && cmake .. && make -j
- pose_graph_3d
先要下载测试数据集,下载链接,选择sphere-a,
cd build/bin
./pose_graph_3d --input /home/lyy/Downloads/sphere_bignoise_vertex3.g2o
运行结束后生成两个文件poses_optimized.txt poses_original.txt
, 使用python脚本来可视化:
python examples/slam/pose_graph_3d/plot_results.py --optimized_poses ./poses_optimized.txt --initial_poses ./poses_original.txt
bundle_adjuster
数据下载链接选择ladybug就行.
解压后
./bundle_adjuster --input /home/lyy/486G/dataset/ceres_dataset/data