INDEMIND 相机具备两个全局曝光的相机,广角相机,水平视野120度,垂直75度。图像帧率在640x400分辨率可以达到200HZ,在1280x800分辨率下最高达到50Hz。1KHZ的IMU(IMU型号为ICM-20602,性能和MPU 6050差不多)[3]数据频率,具有硬件同步功能。相机基线为12cm,估计深度范围大约在0.1-10m,且自带深度估计功能,输出深度图像为640x400,25Hz。是做VIO的理想设备,最主要的是价格便宜。由于官网上的教程写的比较简略(可以说很简略),尤其是针对ROS环境下的教程,对于我们这小白有些不友好,直接按照官网上的步骤根本无法实现相机数据读取并发布到制定的topic上,因此做了一下笔记,备以后查阅, 同时把我自己写的ROS节点分享到博客中,方便大家做参考。(我所使用的系统版本是ubuntu1604+ROS-Kinetic版本)
更新日志:
——2020-2- 8 修复了深度数据的发布 /indemind/depth/point_cloud
——2020-2-7 添加了camera_info 话题的发布
——2020-2-5 在官方的基础上修改发布了ROS节点驱动,可成功读取左右目图像
1 相机驱动安装
1.1 安装驱动
首先在github上下载SDK包:
git clone https://github.com/INDEMIND/SDK-Linux.git
其次安装相机需要的依赖包
a)安装cmake
sudo apt-get install cmake
b)安装google-glog + gflags
sudo apt-get install libgoogle-glog-dev
c)安装BLAS & LAPACK
sudo apt-get install libatlas-base-dev
d)安装SuiteSparse and CXSparse
sudo apt-get install libsuitesparse-dev
1.2 测试demo运行
cd 到 SDK-Linux-master/demo 目录下,创建一个名为build的文件夹
cd demo
mkdir build
cd build
cmake ..
make
然后,cd 到 SDK-Linux-master/lib/1604 目录下,修改 TestIndem 和 TestIndem.sh 运行权限
sudo chmod 777 TestIndem
sudo chmod 777 TestIndem.sh
运行测试代码
sudo ./TestIndem.sh
这样就可以看到效果了,如果显示了以下效果,证明你已经成功安装了驱动。
在启动的时候相机静止情况下,可以看到相机的内参等信息
这个demo自带有一个SLAM库,可运行该双目范例,场地是在老家外面的公路上面,感觉相机当前提供的SDK中深度灰度的效果很不错,但是位姿估计的还不够鲁棒,最终起点和终点没有重合,旋转的时候会有偏差。下面是测试效果:
indemind相机自带SLAM demo测试
1.3 ROS驱动节点
官方提供的ROS节点的教程[1]位于此处,直接按照教程运行会出现较多的错误。这里我就不按照官方的步骤进行操作了,我直接用我修改后的ROS节点进行操作说明(代码链接)[2]
1)将github上的代码下载下来,放置到你的ROS工作空间中,然后进行编译,
cd catkin_ws
source devel/setup.bash
catkin_make
2)编译成功以后拷贝文件 libslam.so 、headset.yaml 和 libusbdriver.so (这三个文件在ROS包的lib目录下面-- indemind_stereo/lib)到目录 "~/catkin_ws/devel/lib/indemind_stereo" 下面 (目前我只想到了使用这种方法来添加文件过去,不知道能不能通过修改CMakeList.txt的方式自动安装文件过去,如果哪位大大知道烦请指导一下)
3)进入超级用户权限,启动节点(必须要在超级用户权限下面启动ROS节点,相机必须插在USB3.0端口上)
sudo -s
cd catkin_ws
source devel/setup.bash
roslaunch indemind_stereo stereo.launch
这时候你可以看到RVIZ中显示了左右目的图像,用rostopic list 可以看到这个节点发布的topic, /indemind/image_left 和 /indemind/image_right 分别表示左右目的图像, /indemind/imu 为IMU的数据
注意: 如果出现找不到图像的情况 "wait for driver data… " 请检查是否复制so文件到指定目录
1.4 补充
把ROS包的lib目录下面的 plugin 文件夹 拷贝到目录 "~/catkin_ws/devel/lib/indemind_stereo" 下面,然后重新启动节点既可以看到输出的深度图。
正常启动节点以后,相机窗口会打印相机的内参信息:
process[indemind_stereo-2]: started with pid [26882]
process[rviz_crp_CW65S_26832_4059430998044856652-3]: started with pid [26892]
LOGGER NOT INITIALIZED:
indem Initialized
[ INFO] [1605967958.880527541]: rviz version 1.12.17
[ INFO] [1605967958.880573845]: compiled against Qt version 5.5.1
[ INFO] [1605967958.880585222]: compiled against OGRE version 1.9.0 (Ghadamon)
[ INFO] [1605967959.067269946]: Stereo is NOT SUPPORTED
[ INFO] [1605967959.067354629]: OpenGl version: 3 (GLSL 1.3).
inter 1280 x 800 50
Depth Map Rl: [0.9999468202909845, 0.004237980777570155, 0.00940192048883879;
-0.00419529121634752, 0.9999808228342324, -0.004555600441385612;
-0.009421046733751923, 0.004515914381436129, 0.9999454237085841]
Depth Map Rr: [0.9999856095480451, 0.004935222214725916, -0.002103396899311279;
-0.004925630787109004, 0.9999775584232028, 0.004541014349145254;
0.00212576061066152, -0.004530588445371675, 0.9999874773766743]
Depth Map Pl: [259.260186463805, 0, 320, 0;
0, 259.260186463805, 200, 0;
0, 0, 0.5, 0]
Depth Map Pr: [259.260186463805, 0, 320, -31.19475936625814;
0, 259.260186463805, 200, 0;
0, 0, 0.5, 0]
Depth Map Kl: [488.335520201932, 0, 644.3476027581887;
0, 488.3430086589082, 401.5618057327606;
0, 0, 1]
Depth Map Kr: [490.4500687573191, 0, 649.1039034943349;
0, 489.9890729396078, 429.6801479646812;
0, 0, 1]
Depth Map Dl: [0.5834340940842503;
0.1245197933017208;
-0.4565233849354812;
0.1816492118854002]
Depth Map Dr: [0.583457588278543;
0.1315478467092585;
-0.4524812420832134;
0.1782880238248311]
Depth Map remap left size: [1280 x 800]
Depth Map remap right size: [1280 x 800]
ACC:
-0.013417 0.999837 0.006401 0.005721
-0.004035 -0.005522 0.998306 -0.000569
0.023327 -0.005194 0.001377 0.996259
Gyr:
-0.168017 0.998976 0.006354 0.006414
0.776015 -0.005418 0.997364 -0.001102
-0.383112 -0.002108 0.002337 0.994709
Dl:
0.583434
0.12452
-0.456523
0.181649
Dr:
0.583458
0.131548
-0.452481
0.178288
Kl:
488.336 0 644.348
0 488.343 401.562
0 0 1
Kr:
490.45 0 649.104
0 489.989 429.68
0 0 1
Pl:
518.52 0 645.25 0
0 518.52 416.353 0
0 0 1 0
Pr:
518.52 0 645.25 -62.3895
0 518.52 416.353 0
0 0 1 0
Rl:
0.999947 0.00423798 0.00940192
-0.00419529 0.999981 -0.0045556
-0.00942105 0.00451591 0.999945
Rr:
0.999986 0.00493522 -0.0021034
-0.00492563 0.999978 0.00454101
0.00212576 -0.00453059 0.999987
TSCl:
-0.999785 0.003551 -0.020456 0.059987
-0.003618 -0.999988 0.003234 -4.68542e-06
-0.020444 0.003307 0.999786 -0.002
0 0 0 1
TSCr:
-0.999957 0.00295349 -0.00888089 -0.0600273
-0.0029024 -0.999979 -0.00577235 -8.90404e-05
-0.00889748 -0.00574664 0.999944 -0.002
0 0 0 1
Baseline: 0.12 m
AMax: 176
SigmaAC: 0.009
SigmaBa: 0.001
GMax: 30
SigmaAwC: 4e-05
SigmaBg: 0.1
SigmaGC: 0.12
SigmaGwC: 4e-05
参考链接:
[1] 官方教程 https://indemind-sdk.readthedocs.io/zh_CN/latest/src/sdk/ros%20SDK%20anzhuang.html
[2] ROS 节点修改 https://gitee.com/cenruping/indemind_stereo.git
[3] SLAM硬件体验-INDEMIND双目IMU相机: https://zhuanlan.zhihu.com/p/69479261