作者 | 陆春晖

责编 | 李雪敬

头图 | CSDN下载自视觉中国

蚂蚁的里程表

最近看了一本很有意思的书,克利福德皮寇弗所著的《数学之书》。其中一篇《蚂蚁的里程表》,讲述蚂蚁惊人的定位导航能力,对机器人及无人车的设计者们有强烈的启示作用。笔者对此十分感兴趣,忍不住对其背后的定位原理进行了进一步研究分析。

文中所述的撒哈拉沙漠蚁,是一种长脚的沙漠蚂蚁,能够在广袤、没有地标指引的沙漠地带寻找食物,并且找到食物后能够采取直线前进的方式直接回到巢穴,不需要一步步回溯原路返回。科学家通过研究发现,蚂蚁可以通过太阳判断巢穴方位,通过步伐的大小和“计算”步数的方式判断距离,从而实现精准定位,准确返回入口直径不到1厘米的巢穴,犹如携带了微型的GPS定位器。

蚂蚁这种神奇的定位能力描述大致如下图所示。蚂蚁从巢穴B点出发,经过不规则漫步路线到达A点,通过太阳方位获取B点相对A点的位置夹角,得到巢穴B的方向;根据自己的步长和步数,进一步计算出从A点到B点的最短直线距离,沿AB间直线返回,精准到达巢穴。

图1 蚂蚁漫步示意图

如果我们自己根据已有的数学知识应该怎么计算这个问题呢?尝试将图1进一步抽象成图2。A点和B点间曲线距离可由蚂蚁“步数”和步伐大小得知,即CurveAB=step_distance*step_counts(step_distance:步伐大小,step_count:步数),A点和B点相对于A点的夹角可以由A点和B点相对于太阳的夹角计算得到,由于蚂蚁在二维平面上活动,为简化计算,将太阳的位置投影到二维平面,得到平面上A点和B点位置夹角θ,,即蚂蚁可以通过太阳位置来获得B点相对A点的方向。然而我们很快发现,即使得到曲线CurveAB和位置夹角θ,也不能直接计算得到AB间的直线距离,至少还需要知道B相对于A的垂直方向投影H。

图2 蚂蚁定位原理二维平面简化图

为了计算投影H,需要将图2进行进一步分解,即将蚂蚁走过的曲线分解成无数个短的直线段Curve’,通过每个线段的相关夹角θ’求每个线段的垂直投影h’,保留h’的方向正负号,通过累加全部h’得到总的垂直投影H,。分解步骤如图3所示。

图3 蚂蚁定位原理分解图

得到H后即可通过公式计算得到AB两点间的直线距离LineAB。

蚂蚁脑海中高度精密的计算机,不但可以实时进行类似以上复杂的位置运算,甚至还可以进一步将沙丘之类的复杂地势进行水平的量化投影,在复杂的沙漠地形中进行精准定位。研究发现,一只蚂蚁甚至可以离巢漫游约50米,直到发现食物为止。这些在蚂蚁身上发现的定位导航的行为模式,就像一台能自动驾驶的汽车,但是却比当前自动驾驶的定位技术要高级的多。

自动驾驶

当前已有的自动驾驶定位技术主要包括三大流派,基于地标定位、基于信号定位和基于惯性导航定位。

基于地标定位是根据视觉或者雷达的定位,与数据库中的数据特征匹配,确定车辆本体的位置和环境,比较典型的例如基于LIDAR点云和高精地图的匹配定位;基于信号定位是采用外界的位置信号,如卫星系统等进行定位,例如Multi GNSS和GPS;基于惯性导航技术是通过航位推导计算车辆当前位置和方向,即在初始位置上累加位移矢量进行计算(参考图3),是一个信息累加的过程,例如惯性传感器。

各流派的定位技术优缺点不同,基于地标的定位坐标系的配准容易产生误差,基于信号的定位容易受到不良环境的影响,而基于惯性导航技术的定位对传感器的性能和可靠性要求很高。因此当前的研究方向是结合各流派的技术进行融合定位,例如GPS+IMU+高精度地图+激光雷达信息融合的定位方法,利用GPS结合IMU判断大概位置,使用高精度地图与激光雷达SLAM云点图像进行坐标系精细配准,这是目前最成熟,准确率最高的方法。

即使如此,自动驾驶的定位技术在精确度和可靠性上仍然不能跟蚂蚁的定位导航能力相提并论。蚂蚁的定位导航能力类似于地标定位、信号定位和惯性导航定位的结合体,却更加精准高效。当前最精确的自动驾驶定位技术仍然允许有10cm的误差,而蚂蚁却可以精确定位到直径不超过1cm的巢穴入口。此外,蚂蚁自身还可以分泌信息素,通过气味的方式协助定位导航。研究蚂蚁的定位导航模式,或许能够帮助科学家研发新的电脑计算法则,促进自动驾驶定位技术的进一步发展。

作者简介:

陆春晖  毕业于南开大学,中国农业银行研发中心高级工程师。

更多阅读推荐

  • 可怕!公司部署了一个东西,悄悄盯着你……

  • 在容器上构建持续部署,这份超详细实践指南不要错过!

  • 从零开始学网络|搞懂OSI参考模型和TCP/IP分层模型,看这篇文章就够了

  • Linus Torvalds 回应,Debian 项目曾讨论永久禁止他出席会议!

  • 字节跳动斩获支付牌照欲建金融帝国,技术实力配得上野心吗?

“蚂蚁漫步”背后的定位原理思考相关推荐

  1. See Conf 悠鹤《蚂蚁庄园背后的技术与思考》笔记

    前言: 运气不佳没有被选中到现场参加第二届 See Conf 蚂蚁金服体验科技大会,全程看的直播,印象最深的分别是上午场楼院长的分享以及下午场悠鹤大佬的分享. 原先只是简单整理一下笔记,在记录过程中, ...

  2. java执行class找不到main函数_你所不知道的HelloWorld背后的执行原理

    专注于Java领域优质技术,欢迎关注 作者:饭谈编程 [今日最佳]对于程序员而言,所谓的二八定律指的是 花百分之八十的时间去学习日常研发中不常见的那百分之二十的原理. 据说阿里某程序员对书法十分感兴趣 ...

  3. 【定位原理揭秘第四期】精准导航领域的定位技术(在高架、隧道、主辅路识别中如何实现)

    2013年9月,国家导航与位置服务科技专项总体专家组发布了<室内外高精度定位导航白皮书>,其中介绍到,2012年12月,我国宣布北斗导航系统正式提供区域定位导航服务,定位精度为10米,成为 ...

  4. 人工智能-阿尔法狗背后的简单原理:贝叶斯公式

    版权声明:本文为博主原创文章,未经博主允许不得转载. AlphaGo为代表的人工智能,彻底的战胜了人类的围棋大师,震撼了全世界,那么人工智能的背后,有着怎样的科技在支撑?本文要介绍的就是人工智能背后的 ...

  5. ADAS-GPS定位原理概述

    前言 "GPS传感器在无人机.室外物流车以及诸多机器人应用中经常出现,它们机器人的定位.导航中发挥着重要的作用,而今天的L2-L5级别自动驾驶系统更是离不开它们,今天我们走进它们的世界,探索 ...

  6. 解析深度神经网络背后的数学原理!

    作者 | Piotr Skalski 译者 | 巧克力 编辑 | Jane 出品 | AI科技大本营 [导读]为了更好地理解神经网络的运作,今天只为大家解读神经网络背后的数学原理.而作者写这篇文章的目 ...

  7. 人工神经网络背后的数学原理!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:贾博文,浙江大学,Datawhale原创作者 本文约8000字,建 ...

  8. 梯度下降背后的数学原理几何?

    来自 | 深度学习这件小事   编辑 | Datawhale 对于诸位"机器学习儿"而言,梯度下降这个概念一定不陌生,然而从直观上来看,梯度下降的复杂性无疑也会让人"敬而 ...

  9. 病毒特征码定位原理和首次使用MyCCL

    一 什么是病毒特征码 特征码就是从病毒体内不同位置提取的一系列字节,杀毒软件就是通过这些字节及位置信息来检验某个文件是否病毒.每个杀毒软件公司都有自己的特征码提取方法和提取工具,这也是特别需要技术的地 ...

最新文章

  1. 一包烟钱买到电动剃须刀,小米有品告诉你什么叫性价比
  2. 美国重夺超算“头把交椅”,专家建议中国加快E级超算研制
  3. Spring的静态注入
  4. JDK8新特性之接口默认方法与静态方法
  5. excel表中怎么插入visio_用Excel编制精确甘特图,准确控制任务进展,提高项目管理水平...
  6. Spark之spark shell
  7. 【数据结构与算法】复杂度分析
  8. RocketMQ(十二)消息堆积与消费延迟
  9. 【Python】表格文件处理
  10. 上海美特斯邦威成被执行人 执行标的超79万
  11. 【Java】15分钟快速体验阿里Java诊断工具Arthas
  12. Linux 2.6内核启动传递命令行的过程分析
  13. 斯皮尔 皮尔森 肯德尔_科学网-在SPSS软件相关分析中,pearson(皮尔逊), kendall(肯德尔) 和spearman(斯伯曼/斯皮尔曼)三种相关分析方法有什么异同(转)-刘斌的博文...
  14. web网页设计期末课程大作业~超高仿英雄联盟LOL游戏官网设计与实现(HTML+CSS+JavaScript)
  15. 常用谷歌地址和常用搜索引擎
  16. FPGA 学习笔记(十一) VGA驱动的实现
  17. 【C++错误处理】no matching function for call to transform
  18. IT精英人物——李彦宏
  19. matlab斐波那契数列画图,斐波拉契数列 斐波那契数列 matlab程序
  20. 如何在TIA 博途 WinCC中组态WinCC Runtime Advanced 和 S7 控制器的PROFINET通信连接?

热门文章

  1. leetcode 107 --- 二叉树程序遍历 ii
  2. linux lvm lv扩充--虚拟机,虚拟机新增磁盘后lvm下的lv扩容
  3. mysql获取一个表的数据作为值插入_请问如何在mysql中得到一个即将插入数据表中的那条数据的id值(id自增长)?...
  4. 嵌入式编程要不要学数据结构_少儿编程要不要学?其实国家早就给出了答案……...
  5. c++ 使用nacos_为什么选用Nacos?虎牙直播微服务改造实践
  6. 主成分分析法_探索主成分分析法
  7. AI「抄」代码无罪?GitHub Copilot拿用户的开源代码改一改就去挣钱!
  8. 他患“不死癌症” 坐轮椅考上清华并获特等奖学金
  9. 李开复:听AI大佬吐槽真实的人工智能
  10. (pytorch-深度学习)实现残差网络(ResNet)