实验室做视觉SLAM需要IMU相机,购入INDEMIND双目惯性模组运行多模态融合的感知定位,根据官方例程加以改进,运行实例并记录。IDEMIND这款双目摄像头可以匹配ubuntu18.04和ubuntu16.04两个版本的ubuntu,但是最好使用ubuntu16.04版本。
双目惯性模组 SDK1.4.2 版本改进了不少,官网上关于ROS环境下的教程十分简略,直接按照官网的步骤无法实现相机数据读取并发布到指定的topic上,于是把自己的安装过程记录下来,方便以后查阅。
一、配置版本信息
| 系统 | 版本 |
|---|---|
| Ubuntu | 16.04/18.04 |
| ROS | kinetic |
| Pangolin | 0.5 |
| Eigen | 3.2.92 |
| Opencv | 3.3.1 |
| Boost | 1.81 |
二、安装ROS环境
小鱼老师把国外关于ROS的库放到了自己的服务器上,所以只用向他的服务器发送命令就能快速安装
安装ROS系统配置比较复杂,Ubuntu20.04对应ROS版本为noetic,推荐使用小鱼老师的一键安装、配置ROS的代码
wget http://fishros.com/install -O fishros && bash fishros
kinetic(ROS1)

三、仿真环境搭建
1、家目录下创建工作空间catkin_ws
mkdir catkin_ws
2、进入 catkin_ws文件夹,并在里面建立新的 src 文件夹
cd catkin_ws
mkdir src
3、进入src文件夹,并把当前文件夹初始化为workspace属性的文件夹
cd src
catkin_init_workspace
如果/home/你的用户名/catkin_ws/src文件夹下出现了CMakeLists文件,说明工作空间生成成功。

4、接下来对工作空间进行编译,打开一个新终端,进入catkin_ws文件夹
cd ~/catkin_ws
catkin_make
5、产生install文件夹
catkin_make install

6、设置环境变量,打开一个新终端修改.bashrc
sudo vim ~/.bashrc
在 .bashrc 尾部添加
source ~/catkin_ws/devel/setup.bash

7、刷新环境变量
cd catkin_ws
source ~/.bashrc
四、INDEMIND M1 SDK准备
1、获取代码
git clone https://github.com/indemind/IMSEE-SDK.git
2、准备依赖
cd IMSEE-SDK
make init

3、OpenCV3.4.3编译库
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
git clone https://github.com/opencv/opencv.git
cd opencv/
git checkout tags/3.4.3
mkdir build
cd build/
cmake \
-DCMAKE_BUILD_TYPE=RELEASE \
-DCMAKE_INSTALL_PREFIX=/usr/local \
\
-DWITH_CUDA=OFF \
\
-DBUILD_DOCS=OFF \
-DBUILD_EXAMPLES=OFF \
-DBUILD_TESTS=OFF \
-DBUILD_PERF_TESTS=OFF \
..
make -j4
sudo make install

4、protobuf安装
(1)安装依赖
sudo apt-get install autoconf automake libtool
(2)protobuf编译
git clone https://github.com/google/protobuf.git
cd protobuf
git submodule update --init --recursive
./autogen.sh
./configure
make
make check
sudo make install
sudo ldconfig # refresh shared library cache.
autogen文件连接速度不理想,网盘自取
autogen.sh文件
519w

把protobuf的src目录下的hello.c和Makefile.am文件拷贝到本机protobuf的src目录


protoc --version # 若安装成功,将显示protoc版本

5、MNN安装
git clone https://github.com/alibaba/MNN.git
cd MNN
./schema/generate.sh
mkdir build
cd build
cmake ..

make -j4

sudo make install

安装好OpenCV与MNN后,可以开始编译SDK中的demo了
6、驱动安装
cd /geekfanr/catkin_ws/src/IMSEE-SDK # <IMSEE-SDK> 为安装的SDK具体路径
make init
7、编译样例
cd /geekfanr/catkin_ws/src/IMSEE-SDK # <IMSEE-SDK> 为安装的SDK具体路径
make demo
五、SDK功能展示
cd /home/geekfanr/catkin_ws/src/IMSEE-SDK/demo/output/bin
sudo su
1、通过 SDK 回调获取原始图片并显示
./get_image

2、通过 SDK 回调获取 imu 数据
./get_imu

3、通过 SDK 回调获取矫正后的图片并显示
./get_rectified_img

4、通过 SDK 回调获取视差图并显示
./get_disparity

5、通过 SDK 使能高精度模式并通过回调获取视差图显示
可以根据源码中相应 api 设置高精度或高速深度计算模式,其中默认模式为高速深度计算模式;注意,目前高精度模式只在 x64 ubuntu 起效
./get_disparity_with_high_accuracy

6、通过 SDK 回调获取深度图并显示
./get_depth

7、通过 SDK 回调获取深度图并显示,同时可显示光标所指像素及周围九个像素的深度值

8、通过 SDK 回调获取深度学习物体检测结果
./get_detector
9、通过 SDK 回调获取点云图并显示


本文详细记录了在Ubuntu16.04/18.04系统上,使用INDEMINDM1SDK进行视觉SLAM开发的全过程,包括安装ROS环境,搭建仿真环境,配置OpenCV和相关依赖,以及编译SDK和运行示例程序,展示了从获取原始图像、IMU数据到深度图、点云图和物体检测等功能。
547






