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

2023-05-16

用户分享汇总目录

      • 01.双目惯性模组的初探与实践
      • 02.通过驱动字写数据采集程序
      • 03. INDEMIND双目惯性相机运行MSCFK
      • 04.利用开源识别算法进行车牌检测
      • 05. 双目惯性模组导航项目分享
          • 项目简介:
          • 车体结构:
          • 技术简介
          • · 实验测试:
        • 总结:
      • 活动:

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祝愿每一位前行者,平安康乐!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从SLAM到视觉识别、VIO,大牛分享! 的相关文章

  • 进程的结构

    什么是进程 UNIX标准 xff08 特别是IEEE Std 1003 1 2004年版 xff09 把进程定义为 一个其中运行着一个或多个线程的地址空间和这些线程所需要的系统资源 目前 xff0c 可以把进程看作正在运行的程序 像Linu
  • 【代码小坑】梯度回传为0

    记录一下训练过程中遇到的问题 xff0c 由于这个问题我花了很长时间才解决 xff0c 所以值得记录 先给出结论 xff1a tensor转换成numpy后会丢失梯度 xff0c 导致回传出现问题 由于原代码不容易理解 xff0c 简单用个
  • (超详细)零基础如何学习操作系统---操作系统书籍推荐

    直接先给出路线书籍 编码 隐匿在计算机软硬件背后的语言 汇编语言 x86从实模式到保护模式 操作系统导论 操作系统真象还原 查漏补缺 1 编码 隐匿在计算机软硬件背后的语言 对于完全不懂计算机的朋友 xff0c 这本书可以让你对计算机有一个
  • 多种形式ICP问题的ceres实例应用

    一家之言 xff0c 仅作分享 xff0c 如有不合理或需要改进的地方 xff0c 欢迎各位讨论 ICP方法主要解决空间点云3D 3D的运动估计问题 xff0c 已知 xff1a t 1 t 1 t 1 和
  • git配置以及git-cola使用教程

    git安装 打开终端 xff0c 输入sudo apt get install git git配置 配置用户名 git config global user name 34 user name 34 配置邮箱 git config glob
  • C++ 手撸简易服务器

    本文使用上一期写的反射类 xff0c 另外我发现 lt WinSock2 h gt 这个头文件里有RegisterClass 这个结构 xff0c 还有typedef RegisterClass RegisterClassW这句话 这都能重
  • STM32CubeMX实战教程(一)——软件入门

    软件入门 前言新建工程界面简介MCU外设配置时钟树工程设置工具生成代码代码分析main cgpio cstm32f4xx it c 程序下载现象 结语 前言 STM32Cube 是一个全面的软件平台 xff0c 包括了ST产品的每个系列 平
  • STM32F4 | 定时器中断实验

    文章目录 一 STM32F429 通用定时器简介二 硬件设计三 软件设计四 实验现象五 STM32CubeMX 配置定时器更新中断功能 这一章介绍如何使用 STM32F429 的通用定时器 xff0c STM32F429 的定时器功能十分强
  • 相机标定和ORBSLAM2/VINS测试

    目录 一 相机标定1 1 标定目的1 2 常见模型介绍1 2 1 相机模型1 2 2 畸变模型 1 3 双目标定1 3 1 常见标定工具及对应使用场景1 3 2 Kalibr标定1 3 3 opencv双目标定1 3 4 basalt标定
  • matlab安装教程

    MATLAB xff08 矩阵实验室 xff09 是MATrix LABoratory的缩写 xff0c 是一款由美国The MathWorks公司出品的商业数学软件 MATLAB是一种用于算法开发 数据可视化 数据分析以及数值计算的高级技
  • 软件工程结构化分析

    需求分析的概念 需求分析是软件定义时期的最后一个阶段 xff0c 它的基本任务是准确的回答 系统必须做什么 这个问题 也就是对目标系统提出完整 准确 清晰 具体的要求 在需求分析阶段结束之前 xff0c 系统分析员应该写出软件需求规格说明书
  • 树莓派忘记密码 vnc登陆显示‘No configured security type is supported by 3.3 viewer’的问题解决办法

    树莓派忘记密码以及部署VNC 1 修改密码 需求你的树莓派有屏幕 xff0c 没有屏幕的可以百度其他解决方案了一把键盘 树莓派吃灰了很久 xff0c 最近由于有新的需求 xff0c 就拿出来玩耍一下 首先是第一个问题 xff0c 如何查看i
  • imx6ull 正点原子设备树适配韦东山的开发板 (一)顺利启动,配置led,button

    设备树在公司经常用到 有时候很多驱动编写也就是替换设备树 所以拿韦老师的板子练手设备树 这次尝试直接拿正点的设备书改成韦老师的板子能用 对比 正点原子的设备树结构图 韦东山的设备树结构图 从因为蓝色的是开发板厂商对开发板自己的优化 所以我们
  • 一文了解目标检测边界框概率分布

    一文了解目标检测边界框概率分布 概率建模 众所周知 xff0c CNN的有监督学习通常是建立在给定训练数据集之上的 xff0c 数据集的标签 也称为GT xff0c 决定了人类期望模型学习的样子 它通过损失函数 优化器等与CNN模型相连 因
  • Kalibr安装教程

    系统 xff1a Ubuntu18 04 首先 xff0c 需要安装好gcc g 43 43 cmake ros xff0c 如果没有 xff0c 可使用如下命令一键安装 sudo apt get install gcc g 43 span
  • 程序员:每一份不忘初心的情怀, 都是对技术的追求

    1 真正的情怀 xff0c 是从不矫情 这几年 情怀 大约快成了贬义 创业讲情怀 xff0c 产品讲情怀 xff0c 好像没点情怀都不好意思出门见人 我们曾经充满热情 xff0c 是一位开源软件倡导者 xff0c 我们崇尚全栈工程师才有未来
  • HTML代码简写方法

    原文链接 xff1a HTML代码简写方法 大写的E代表一个HTML标签 1 E 代表HTML标签 2 E id 代表id属性 3 E class 代表class属性 4 E attr 61 foo 代表某一个特定属性 5 E foo 代表
  • Git远程分支

    远程分支 远程分支是位于远程仓库的分支 xff0c 我们通常会用远程分支来更新本地分支 xff0c 然后在本地进行修改 xff0c 最后将修改的结果同步到远程分支上 除此之外 xff0c 我们还需要搞清楚远程跟踪分支和跟踪分支的概念 远程跟
  • STM32F4 | PWM输出实验

    文章目录 一 PWM 简介二 硬件设计三 软件设计四 实验现象五 STM32CubeMX 配置定时器 PWM 输出功能 上一章 xff0c 我们介绍了 STM32F429 的通用定时器 TIM3 xff0c 用该定时器的中断来控制 DS1
  • 基于大疆RM3508电机的串级PID(角度环+速度环)

    1 前言 最近参加ROBOCON xff0c 我负责编写传球机器人 xff0c 由于传球机构需要一个电机转固定角度来带动球 xff0c 所以便用大疆3508电机通过串级PID来实现 xff0c 不得不说3508电机还是真的强 xff0c 先

随机推荐

  • ROS三种通信方式之服务通信

    一 服务通信的理论模型 服务通信也是ROS中一种极其常用的通信模式 xff0c 服务通信是基于请求响应模式的 xff0c 是一种应答机制 也即 一个节点A向另一个节点B发送请求 xff0c B接收处理请求并产生响应结果返回给A 就像是服务器
  • 滑模控制理论(SMC)

    滑模控制理论 Sliding Mode Control SMC 滑膜控制理论是一种建立在现代控制理论基础上的控制理论 xff0c 其核心为李雅普诺夫函数 xff0c 滑膜控制的核心是建立一个滑模面 xff0c 将被控系统拉倒滑模面上来 xf
  • ROS OpenRAVE 常用逆解库 ikfast (应用于UR机械臂)

    ArmKine cpp include 34 armKine h 34 include lt math h gt include lt stdio h gt include lt corecrt math defines h gt defi
  • Fast and High Quality Image Denoising via Malleable Convolution阅读笔记

    论文 xff1a Fast and High Quality Image Denoising via Malleable Convolution arXiv xff1a https arxiv org abs 2201 00392 Abst
  • 浅谈java继承机制——通过super调用父类方法

    最近在看代码的时候遇到一个天坑 xff0c 由于习惯性思维 xff0c 可能大部分人都会掉近这个坑 xff0c 所以拿出来记录一下 子类使用super调用的父类方法里 xff0c 再调用父类的方法 先来看一段代码 xff08 该段代码只是作
  • ORB_SLAM2运行KITTI数据集

    在前文我们已经安装运行了ORB SLAM2 xff0c 下载和编译 xff08 包括报错 xff09 在文章 xff1a ORB SLAM2下载编译及运行EuRoC数据集 浅梦语11的博客 CSDN博客 euroc数据集下载 并且我们使用运
  • 嵌入式学习札记(基于STM32L431) 一、ARM Cortex-M4微处理器

    ARM Cortex M4微处理器 写在前面ARM Cortex M4微处理器简介ARM Cortex M4微处理器内部结构概要位数总线结构中断控制存储器保护低功耗内部寄存器 寻址方式与机器码获取方法指令保留字简表与寻址方式指令保留字简表寻
  • 嵌入式 Linux平台 C程序 交叉编译技术

    嵌入式Linux平台C程序交叉编译技术 一 实验目的和任务 本实验要求复习和掌握Linux平台的C程序开发过程 本实验要求掌握嵌入式开发板的操作方法 本实验要求掌握Linux平台交叉编译方法和程序运行方法 二 实验设备介绍 B703实验室是
  • MapReduce编程综合应用

    MapReduce编程综合应用 实验环境 VMware虚拟机 xff08 CentOS 7系统 xff09 Hadoop 数据 现有一份汽车销售记录 xff0c 销售记录 包括时间 地点 邮政编码 车辆类型等信息 xff0c 每条记录信息包
  • MySQL报错1055 - Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated 解决方法

    1 问题复现 xff1a 今天在进行数据迁移时 xff0c 使用Navicat连接数据库进行连接时 xff0c 由于 SQL语句中使用了 group by分组函数 xff0c 结果报了如下错误 xff1a 2 产生原因 产生原因说是 xff
  • deepin linux 安装配置

    开启root权限 span class token function sudo span span class token function su span root 开启root权限 linux安装curl span class toke
  • 解决Ubuntu1804安装后不能使用root用户远程登录

    解决Ubuntu1804安装后不能使用root用户远程登录 root用户密码正确无法远程 解决方法 1 为root用户设置密码 span class token function sudo span span class token fun
  • git 删除本地/远程分支

    1 删除本地分支 git branch d 本地分支名A 注意 xff1a 需要切换到其他分支下才能删除 xff0c 处于分支A的时候 xff0c 无法删除分支A 切换分支git checkout 本地分支名B 如果本地分支A下有未合并的更
  • RTD\RTK\PPK\PPP\DGPS\地基增强系统\星基增强系统

    xff08 一 xff09 RTD xff08 Real Time Differential xff09 xff1a 实时动态码相位差分技术 RTD计算的是伪距 xff0c 根据基准站已知坐标和各卫星的坐标 xff0c 求出每颗卫星每一时刻
  • NVIDIA JETSON TX2 介绍及上电、刷机全纪录

    一 TX2相关 1 1 图片 1 2 TX2介绍 xff1a NVIDIA Jetson TX2 嵌入式领域的AI超级电脑 它是一台基于NVIDIA Pascal 架构的AI单模块超级计算机 它性能强大 xff0c 外形小巧 xff0c 节
  • 小白控制算法之自抗扰调参经验总结

    最近做的项目用到了自抗扰 xff0c 尝试联系一些相关领域的老师 xff0c 无奈似乎有所保留 xff0c 只得自己从头研究起 讲道理 xff0c 无论是复杂的系统 xff0c 还是超过9个参数的调节 xff0c 整个调程序和调参的过程都不
  • DS001-测试冒泡排序的运行时间

    本程序演示如何测试一段程序的运行时间 以冒泡排序算法为例 include 34 time h 34 与时间相关的函数 include 34 stdlib h 34 rand 函数在此库中 include 34 stdio h 34 输入输出
  • 嵌入式开发,裸机开发,中断,按键控制蜂鸣器。

    0 前言 最近想体验一下面试 xff0c 真正收到公司通知又有点无从下手 xff0c 没有做准备 但是反手一想 xff0c 既然是想体验 xff0c 锻炼而已 xff0c 干就完了 推荐一首歌 Timber MattyBRaps xff0c
  • 到底什么是MCU、MPU、CPU,和芯片是什么关系?区别又是什么?

    目录 0 前言 1 芯片 2 CPU 3 MPU 4 MCU 5 总结 0 前言 更新的是有点慢 xff0c 从这周开始吧 xff0c 应该会快一点 推荐一首歌 你到底有没有爱过我 蓝波 xff0c 额 xff0c 怎么说呢 xff0c 大
  • 从SLAM到视觉识别、VIO,大牛分享!

    用户分享汇总目录 01 双目惯性模组的初探与实践02 通过驱动字写数据采集程序03 INDEMIND双目惯性相机运行MSCFK04 利用开源识别算法进行车牌检测05 双目惯性模组导航项目分享项目简介 xff1a 车体结构 xff1a 技术简