从SLAM到视觉识别、VIO,大牛分享!

INDEMIND双目视觉惯性模组创意征集活动,自启动以来受到了很多用户的积极响应,小D也受到了很多充满脑洞与创意的项目,今天为大家分享一下:

01.双目惯性模组的初探与实践

——来自熊猫飞天的投稿

INDEMIND双目惯性相机具备两个全局曝光的摄像头,图像帧率可以达到200FPS,1K Hz的IMU数据频率,具有硬件同步功能,是做VIO的理想设备。当然,价格也十分亲民。我在自家乡间小路上对模组及其SDK进行了深度、灰度测试,对SDK基础使用教程进行了一些更细致化的补充,同时我也把自己写的ROS节点分享到博客中,方便大家做参考。(我所使用的系统版本是ubuntu1604+ROS-Kinetic版本)。

测试视频链接:测试DEMO

博客原文链接:INDEMIND 双目相机使用教程

02.通过驱动字写数据采集程序

——来自用户椒盐蘑菇的投稿

最近做实验打算用之前购买的INDEMIND双目视觉惯性模组采集一些数据,虽然INDEMIND官方提供数据采集软件,但为了顺便复习一下OpenCV和C++,于是利用官方驱动写了一个简单的小程序。

比较棘手的问题:唯一比较麻烦的问题就是当帧率比较高的时候,数据量会比较大(双目惯性模组最高支持200FPS)。官方驱动的工作模式是,提供实现的回调函数它直接会根据硬件频率进行触发,回调函数必须能够比较快的返回。如果把写入放在回调函数里,会造成回调函数延迟,导致一些数据丢失。

解决办法:把回调函数获得的结果直接存入队列,再开多个写入线程进行写入磁盘操作,可以保证队列不会爆掉,要注意的一些问题就是多线程读写加锁的问题。

单线程回调,多线程写入:

Queue size: 0
Queue size: 0
Queue size: 0
Queue size: 1
Queue size: 0
Queue size: 0
Queue size: 0
Queue size: 0
Queue size: 1
Queue size: 0
Queue size: 0

四线程写入的时候将会达到预期效果。

完整实验代码:前往Git查看

03. INDEMIND双目惯性相机运行MSCFK

——来自知乎用户Sholmes

前段时间,我在苦苦寻找物美价廉的视觉惯性模块用来做VIO,问了一个ETH开发的,价格好几千,还是瑞士法郎,也看了看相对而言比较便宜的,比如Duo Camera等等,由于尺寸太小或者没有硬件同步之类的原因,应用场景都比较局限。

我是从高博的博客开始入门SLAM的。有一天看了高博的文章,是介绍一款双目惯性传感器。这一款不仅相机和IMU的频率足够高,还有我心心念念的硬件同步,而且高博的视频里,INDEMIND自主研发的Vi-SLAM跑的也很丝滑。

根据同类型的传感器价格,我开始以为这款也不便宜。读完高博的文章才发现,折后价格居然还不到千元,于是果断在某宝下单入手一件。

INDEMIND入手之后,我迫不及待的开始了运行VIO的尝试,不过开始的时候并不顺利。起初我没有搞懂INDEMIND自带的标定保存在什么位置。我加了INDEMIND的微信助手,回复说在配置文件里面T_SC。
我找到配置文件,又发现由于一直用的Kalibr做标定,不知道如何使用INDEMIND的标定格式。微信助手也是给我了答复。

在这里插入图片描述

不过之后通过查阅官网文档,我们发现,IMU标定所用的单位和我们通常用的Kalibr不一样。

在这里插入图片描述

所以实验室的小伙伴又改了一下INDEMIND的驱动。我们还用real sense对比了一下,两个传感器用相同方式运动,确认输出无误后,我们也用Kalibr做了标定。

接下来就是运行一个开源的VIO算法,MSCKF

项目地址:前往Git查看

我们先做了室内的测试,前几次效果并不好,因为检测到的特征点太少的缘故。调整了特征点检测的参数,获得了不错的精度。

在这里插入图片描述

测试视频:前往知乎查看

然后是室外测试,和室内一样也是特征点检测的越多精度越高。INDEMIND的相机曝光调整的比较好,所以即使在室外光线比室内强烈的情况下,也能检测到很多的特征点。

在这里插入图片描述

测试视频:前往知乎查看

总的来说INDEMIND比较适合跑VIO,因为具备硬件同步,相机的帧率也很高。相机的曝光调节的也合适,能用来在室外光照比较强的地方采集图像。我后来又参照着官方教程,用INDEMIND跑通了ORB SLAM,还试了一下语义分割,都得到了不错的效果。

在这里插入图片描述

项目地址:前往gitee查看

04.利用开源识别算法进行车牌检测

——来自用户bbadd_的投稿

最近想尝试做一下车牌的识别,正好手上有一个双目视觉模组,就想用这个模组试试车牌识别的效果。上网查了查,查到了ECCV2018的一篇论文,而且有国人用中文车牌数据集CCPD训练模型,效果还可以,就在楼下采集了一组车牌的数据,进行了测试。虽然测试结果一般(训练的比较粗糙),但双目惯性模组的数据采集功能还是值得点赞的!

论文链接:Sergio_Silva_License_Plate_Detection

CCPD训练模型链接:前往Git查看

测试结果如下:

车辆车牌识别Demo

05. 双目惯性模组导航项目分享

——来自用户来自用户Super博

项目简介:

项目需完成工程机械自动导航功能,前期通过GPS控制工程机械自动移动。由于在自动导航过程中的建筑物遮挡,出现GPS信号丢失问题,无法解决,因此引入视觉系统。GPS绝对定位精度高,缺点是易受遮挡丢失信号,视觉导航定位精度虽不如GPS,但能够在复杂的环境下作业。通过组合GPS与视觉系统,完成一套导航系统。(阅读本文需要ros基础)。

车体结构:

采用Indemind摄像头作为视觉数据采集与定位设备,放在车头,配合机动车底盘,控制板通过电子控制系统控制机动车。

在这里插入图片描述

技术简介

基本思想是建图,定位,然后导航的传统思路。采用ROS系统内建的gmapping建图算法,建图结果如图 3,A*与DWA导航算法,计算路径见图 4。

首先,使用INDEMIND摄像头作为视觉避障系统的视觉输入源与定位输入源,读取点云数据与定位数据送到gmapping算法,利用点云数据更新障碍物信息,利用定位数据作为odom话题发布者进行发布,便于更新车体定位。gmapping算法给出map话题。

再运行内置A*与DWA导航算法,订阅map与odom话题进行导航路径计算。ROS系统中配置的tf变换树如图 2,其中的camera_depth_frame为Indemind摄像头。

在这里插入图片描述

· 实验测试:

建图结果如下,可见INDEMIND建图较为精确,可绘制障碍物基本轮廓,提供较为精确基础数据。
在这里插入图片描述

A*与DWA导航算法计算出的路径如图 4,彩色区代表膨胀地图,可见导航算法计算路径已经避开膨胀地图中离障碍物较近区域。

在这里插入图片描述

小车移动后实时计算导航路径。小车依照导航算法路径前行,通过INDEMIND摄像头数据重新进行定位,如图 5,可见计算出的小车的角速度线速度已经发生改变,指示躲避障碍物的路径。

在这里插入图片描述

总结:

INDEMIND摄像头定位精度,视觉精度足够实现预期的视觉避障任务。出现的问题有,轮胎会出现打滑现象,仅仅通过INDEMIND摄像头定位,无法解决,需采用其他方法解决。通过解决打滑问题,能够实现更加精确的视觉导航。

……………………我是一条分割线………………

很开心在短短时间内看到这么多用户反馈。这些用户的真实反馈给了我们很多触动与启发,我们会进行一些综合评估,在现有服务支持的基础上,进行优化。相信过一段时间,大家能有更好的产品体验。

还没有参与活动的小伙伴们要抓紧啦,“创意征集活动”仍在进行中,4月30日前反馈优秀创意即可获得100-500元现金奖励,快行动起来吧~

活动:

同时,随着全国复工复产被按下“快进键”,想必很多小伙伴已经摩拳擦掌,忙着复工复产。在这样的特殊时期,小伙伴们不能放松警惕,解封不解防,个人防护仍然十分重要。

为了解决小伙伴们的后顾之忧,INDEMIND准备了一些健康包,快来领取吧~

活动规则:

4月14日起,购买双目视觉惯性模组可获赠健康包1个
19年至今,购买过双目惯性模组的武汉地区用户,凭借淘宝订单,可免费领取健康包1个。

活动时间:

本活动长期有效,结束日期另行通知。

健康包内容:
在这里插入图片描述

最后,小D祝愿每一位前行者,平安康乐!

猜你喜欢

转载自blog.csdn.net/weixin_43922139/article/details/105556638