ROS版本OV2Slam运行笔记

ros版ov2slam运行笔记

0.环境搭建

  • (1) 创建Dockerfile文件,内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# 使用 Ubuntu 20.04 ROS 
FROM docker.1ms.run/osrf/ros:noetic-desktop-full

# 设置时区和更新镜像源
RUN apt-get update && apt-get install -y tzdata \
&& ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& dpkg-reconfigure --frontend noninteractive tzdata

# 安装一些基础库
RUN apt-get update && apt-get install -y \
git \
vim \
cmake \
wget \
zip \
libgflags-dev \
libgoogle-glog-dev \
libssl-dev\
build-essential \
libgl1-mesa-dev \
libglew-dev \
libepoxy-dev \
libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev \
libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev libopenexr-dev \
libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev \
libboost-all-dev \
&& apt-get clean

# 创建目录 WORKDIR/code 并在目录下面git clone 代码
RUN mkdir -p /home/catkin_ws/src
RUN cd /home/catkin_ws/src && git clone https://github.com/ov2slam/ov2slam.git


RUN cd /home/ && git clone https://github.com/laurentkneip/opengv && cd opengv && mkdir build && cd build && cmake .. && make -j$(nproc) && make install

# Eigen3 > 3.1.0
RUN apt-get update && apt-get install -y libeigen3-dev

# OpenCV 3.4.0
# 下载 OpenCV 3.4.16
RUN cd /home/ && \
git clone https://github.com/opencv/opencv.git -b 3.4 --depth 1

# 下载 opencv_contrib 3.4.16
RUN cd /home/ && \
git clone https://github.com/opencv/opencv_contrib.git -b 3.4 --depth 1

RUN cd /home/opencv && mkdir build && cd build && \
cmake -D CMAKE_BUILD_TYPE=Release \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=/home/opencv_contrib/modules \
-D BUILD_EXAMPLES=ON \
-D BUILD_opencv_world=ON \
-D WITH_CUDA=OFF \
-D WITH_GTK=ON \
-D WITH_OPENGL=ON \
-D OPENCV_ENABLE_NONFREE=ON .. && \
make -j$(nproc) && \
make install

RUN ldconfig

RUN cd /home/catkin_ws/src/ov2slam && ./build_thirdparty.sh
  • (2) 构造ov2slam镜像
1
>> docker build -t ov2slam:latest .
  • (3) 启动容器
1
>> docker run -itd --name ov2slam ov2slam:latest

1.运行roscore

1
2
3
4
# 1.激活ros环境
>> source /opt/ros/noetic/setup.bash
# 2.运行roscore节点
>> roscore

2.运行ov2slam节点

1
2
3
4
5
6
7
8
# 1.激活ros环境
>> source /opt/ros/noetic/setup.bash
# 2.编译ov2slam节点
>> cd /home/catkin_ws && catkin_make --pkg ov2slam
# 3.激活当前工作空间环境
>> source /home/catkin_ws/devel/setup.bash
# 4.运行ov2slam
>> rosrun ov2slam ov2slam_node /home/catkin_ws/src/ov2slam/parameters_files/accurate/euroc/euroc_mono.yaml

3.运行rosplay节点喂入数据

1
2
3
4
# 1.激活ros环境
>> source /opt/ros/noetic/setup.bash
# 2.把bag放到容器内,执行播放,**话题重映射**!
rosbag play V1_01_easy.bag /cam0/image_raw:=/camera/image_raw
  • /cam0/image_raw:EuRoC bag 原始图像话题
  • /camera/image_raw:OV2SLAM 节点订阅的话题

4.可视化rviz

1
2
3
4
# 1.激活ros环境
>> source /opt/ros/noetic/setup.bash
# 2.运行rviz
>> rviz

rviz中添加下面话题

  • Image:topic /ov2slam/image(带特征点的图像)
  • Pose:topic /ov2slam/camera_pose(相机位姿)
  • Marker:地图 / 特征点可视化

轨迹保存:OV2SLAM 会自动把轨迹写入文件,路径在 yaml 配置里 save_traj: true

参考资料