在MCU上面运行SLAM-SCI

2024-08-21 18:16:47 浏览数 (2)

就一个月以前看的,感觉很有意思,今天不骑车了。

Crazy的无人机的(无刷版) 东芝的一个并口摄像头 STMF4来处理数据,用了ARM-DSP。

处理使用两个 STM32F4 微控制器进行,一个在飞控上,一个在摄像头组件上。视觉处理在摄像头微控制器上进行;状态估计和控制在自动驾驶仪上进行。使用RF在机外进行记录。

默认 Crazyflie 固件用作自动驾驶仪。使用默认扩展卡尔曼滤波器进行状态估计。自定义板载应用程序通过 UART 链路与摄像头通信,并将位置设定点和测量更新发送到自动驾驶仪的控制器和估算器。

图像处理从相机帧的预处理开始。原始图像以 128 像素 x 96 像素的分辨率捕获。

自定义自动曝光程序调整快门时间,使地平线的平均亮度保持在固定值(255 中的 80),同时忽略图像的其余部分(包括镜头装置)。

然后将图像重新投影到分辨率为 128 像素 x 16 像素的圆柱坐标系中。使用查找表和最近邻采样来提高计算效率。通过偏移采样角度,圆柱图像与无人机的北估计值对齐。实施了俯仰角和滚转角的反旋转,但没有使用,因为实验期间的角度仍然足够小。

然后将图像转换为灰度并垂直平均以产生一维周期信号。我们使用 ARM CMSIS DSP 库中的快速傅里叶变换将此信号转换为频域。为了提高内存效率,直流 (DC) 和高频分量被删除。其余的复数系数被量化为 8 位有符号整数对,每个频率的缩放比例固定,以覆盖大部分 8 位范围。

哈哈,牛逼

对于搜索算法,使用了方位距离搜索网格,因为文章中没有描述确切的网格。对于 MFDID,将基于牛顿的校正的使用作为参数搜索的一部分,但发现在这个主要由方形开放房间组成的数据集中差别不大。

Stürzl 和 Mallot提出的基于傅里叶的归位算法也在实验硬件上实现。

严格来说不是SLAM,但是也满足了,只是可以给更多的定位,资源节省是因为没有维护很大的表,而是使用了频域以及对比之类的做法。

算法在此

受昆虫启发的方法,通过利用视觉导航和里程计来实现资源受限的微型无人机的视觉导航。无人机能够在室内环境中以最小的内存需求长距离跟踪路线。

其实也没有大家想得那么牛逼,一个MCU就可以导航,是可以做一个固定的轨迹,不过这个算法值得学习。

首先是一种路线跟踪方法,其中机器人的轨迹被存储为一组高度压缩的全景图像,以及用里程计测量的空间关系。

在回程过程中,机器人使用里程计和视觉归位相结合的方式返回存储的位置,视觉归位可防止里程计漂移的累积。

所提策略的主要进步在于,通过尽可能地将压缩图像间隔开来,以在里程计精度允许的范围内最小化存储的压缩图像数量。为了证明该策略适用于小型系统,在一架重量为 56 克的微型无人机上实施了该策略。该无人机可以成功跟踪长达 100 米的路线,轨迹每米消耗不到 20 个字节。

幸运的是,大自然是解决导航问题的灵感来源。蚂蚁和蜜蜂等昆虫虽然脑容量很小,但可以导航很长的距离。例如,沙漠蚂蚁Cataglyphis ( 18 ) 可以长途觅食,然后直接走回巢穴,行程长度可达 1 公里。为了将类似的算法引入我们的机器人,我们必须首先了解昆虫导航的工作原理。

生物学家对昆虫导航的研究已有一个多世纪,并揭示了其两个核心要素。第一个要素是路径整合,它在机器人技术中有一个对应物,称为“里程计”,即整合行进距离和方向以估计一个人的位置。

例如,蚂蚁通过计算它们走过的步数来确定它们行进的距离。此外,它们整合腹侧光流,追踪地面从它们身边移动的速度。方向是相对于太阳和相应的天空偏振来测量的。利用这些测量值,蚂蚁可以保持对它们相对于巢穴的位置的估计。

尽管路径积分可以提供位置估计,但它有一个主要缺点:由于它积分了测量误差,因此容易发生漂移。

为了解决这个问题,大自然使用了第二种机制:视觉记忆。在这里,环境本身形成了定位或导航的额外线索。与工作最相关的模型是快照模型,由 Cartwright 和 Collet 提出,用于描述蜜蜂的归巢行为。在该模型中,作者假设蜜蜂会记住在目标位置看到的视野内地标的存在和位置。然后,为了返回,它们会试图移动,使视野内的地标移回它们记忆的位置。

89年?妈耶

大概就是这样,以前图也蛮好看

视觉归巢只在目标周围的一小块区域内有效,这被称为捕获区。要导航更长的距离,一种简单的方法是按顺序向附近的目标归巢。只要机器人在下一个快照的捕获区内,这种方法就会成功。然而,捕获区的大小往往有限。因此,快照需要间隔很近,这意味着需要存储大量快照来记住更长的路线。

根据快照的表示形式(范围从全分辨率图像到更压缩的表示形式,这仍然需要比微型机器人平台(如本研究中使用的 56 克无人机)更多的内存。

为了减少内存需求,人们从两个方面提出了进一步的建议。第一是减少快照的内存消耗。许多论文已经将图像缩减为一行像素,其中特征的横向流动足以进行视觉归巢。

然而,Stürzl 和 Mallot 更进一步,将这条线转换成频域并只记住最低频率分量,从而进一步显著减小了快照的大小。第二个方向是增加快照之间的间距。

在 Denuelle 和 Srinivasan的研究中,提出了一项改进,其中使用归巢矢量作为相对于快照的位置估计。只要矢量足够精确,无人机就可以向下一个集水区导航一段距离。结果,快照之间的重叠减少了,但并未消除。Vardy的模拟研究将里程计与视觉归巢相结合。当里程计和视觉归巢估计的快照方向开始出现分歧时,就会拍摄新的快照。但是,由于这种情况发生在集水区的边缘,这种方法仍然会导致后续快照的集水区之间出现相当大的重叠。在这项工作中,我们提出了一种方法来大幅增加快照之间的距离,并将其与内存高效的归巢算法相结合。

为了将视觉导航引入微型机器人,提出了一种内存效率极高的视觉路线跟踪策略。建议通过更好地利用视觉导航和里程计的组合来穿越更长的距离。在这个框架中,假设机器人首先执行朝任务目标的出站飞行,然后返回起始位置。

原则上,出站飞行可以在任何控制下执行,包括手动控制。因为重点是回站飞行期间的路线跟踪,所以假设出站飞行不会发生碰撞,并且环境是静态的,因此路线上没有障碍物。

无人机

摄像头

( A ) 实验平台:一架重量为 56 克的微型 Crazyflie 无刷无人机。

( B ) 原始且未包装的全向摄像头图像。

( C ) 路线跟踪策略。在出站轨迹期间(可在任意控制下执行),机器人会定期拍摄 (ii) 周围环境的快照。要反向跟踪相同的路线,机器人首先使用里程计 (iii) 朝下一个快照的位置移动。为了成功,无人机必须最终进入此快照的收集区域 (iv)。

因此,快照之间的距离必须与预期的里程计漂移和收集区域大小成比例。在完成里程计移动后,机器人使用视觉归位 (v) 来收敛到快照位置,从而取消产生的里程计漂移。重复这些步骤,直到机器人回到其预定位置。

在回程飞行中,大部分距离都是使用里程计覆盖的,但如果不进行任何校正,里程计漂移最终会变得太大。为了纠正这种漂移,让机器人使用视觉归位来定期返回环境中的已知位置(快照位置)。

在归位期间,它仅将其全向图像与当前活动快照进行比较。归位后,机器人处于已知位置并可以重置其姿势估计,从而消除任何产生的里程计漂移。重置后,机器人可以开始新的里程计和视觉归位航程,其中初始误差仅由上次快照时的归位不准确性组成。

所提出的策略非常节省内存,因为快照之间的间隔尽可能大。具体来说,提出快照之间的距离最终受里程计的精度限制,只要无人机能够可靠地进入下一个收集区域,该策略就会成功。在合理的里程计精度下,这个距离可以远远大于需要连续快照的重叠收集区域时的距离。

这里有略过。。。自己补。

在本文中,选择专注于基于矢量的方法。理由如下:首先,基于转向的方法要求其参考图像之间的间距要小。

(根据一个论文的结果)图像之间的距离必须小于到环境中主要特征的距离;该文中使用的距离为 35 厘米。希望使用里程计实现更大的间距。其次,目标是让机器人尽可能靠近快照,理想情况下是在快照上方。

因此,无法保证快照在使用里程计行进后会在机器人前面;它很可能在机器人后面或侧面。最后认为矢量是表达像无人机这样的完整系统的运动的更自然的方式。

对归巢算法进行分类的第二个维度是快照的表示方式。我们考虑了用于视觉归巢的两大类快照表示:基于地标的方法和整体表示。基于地标的方法将快照表示为点地标的集合,每个地标都有自己的方位。因此,在基于地标的视觉归巢中,环境中的点从当前图像到目标图像进行跟踪。从这两幅图像之间的点对应关系中,可以得出指向目标的归巢向量,例如,使用视觉伺服(42-44 )。为了描述和跟踪地标,使用了计算机视觉中的关键点检测器和描述符。示例包括计算成本高昂的尺度不变特征变换(45 )特征和效率高得多的二元稳健不变可扩展关键点(46)。此外,需要存储朝向每个地标的方位。总而言之,这仍然会导致相当大的内存消耗,尤其是在需要记住大量快照时。为了减少内存消耗,可以在多个快照之间共享描述符,如 Stelzer等人所演示的那样(47)。但是,快照的大小仍然在数百字节或更大的数量级上。

另一个极端是整体方法。与基于地标的算法不同,这些方法对整个图像进行操作。它们不是匹配地标的方位,而是匹配整个当前图像和目标图像,例如,用平方差和来匹配。这导致了图像差异函数 (IDF),当当前视图和目标视图重合时,该函数应为零,并且随着目标位置附近的距离而平滑增加。

通过找到 IDF 减小的方向,可以执行归位。检测并跟踪 IDF 梯度的一种选择是进行物理运动。以这种方式找到梯度可能很耗时。因此,提出了一种替代方法,通过扭曲图像来模拟小动作。

使用这种方法,作者对多个潜在运动进行了强力搜索,并选择了最佳匹配。因此,在此将该方法称为“搜索”。作为一种计算效率更高的替代方案,Möller等建议仅预测两个垂直运动,并利用它们来估计 IDF 的梯度。通过遵循梯度,机器人最终将达到 IDF 的(局部)最小值。

在后来的工作中,他们还包括了二阶梯度。他们将自己的方法称为“MFDID”。存储整个图像在内存效率方面并不理想;它比大多数基于地标的方法更差。第一个改进是快照图像可以垂直平均,因为仅横向流就足以找到归航矢量。

除此之外,Stürzl 和 Mallot 表明,这些一维快照可以大幅压缩,同时保持归航性能。这种压缩是通过首先将快照转换为频域,然后仅保留最低频率分量来实现的,其中大部分功率存在于自然图像中。

作者表明,仅使用较低的五个分量仍然可以归航。通过适当的舍入,这样的快照可以以每张 10 个字节的最小空间存储。

图显示了原始全景图像及其使用高度压缩的傅里叶表示的重建。可以观察到,这种方法(称之为“傅里叶”)可以捕捉环境中的粗略垂直结构。由于这些图像最终可以比基于地标的导航的方位描述符对压缩得更好,因此将在本文的其余部分重点介绍整体算法。(但我不一定全写,你要自己看)

这个图不错,别错过

为了评估属于快照的收集区域的大小,生成了所有归位矢量(左),预测了机器人轨迹(中),并收集了所有终点误差较小的起点(右;误差用颜色表示)。

这是对上面策略的评价

这些就没有意思了,需要看它的引文了

代码语言:javascript复制
https://webvpn.xjtu.edu.cn/https/77726476706e69737468656265737421e7e056d234336155700b8ce2974724/doi/10.1126/scirobotics.adk0310?wrdrecordvisit=1724156517000
代码语言:javascript复制
https://webvpn.xjtu.edu.cn/https/77726476706e69737468656265737421e7e056d234336155700b8ce2974724/action/downloadSupplement?doi=10.1126/scirobotics.adk0310&file=scirobotics.adk0310_sm.pdf

0 人点赞