实验室做视觉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