前言
随着科技得越来越发达,人工智能,自动驾驶导航等字眼频频出现在我们得眼前。但是目前来说自动驾驶并没有得到很全面得普及,还在进行不断的开发和测试当中。从小就爱好车的我,对这项技术也很是感兴趣。
偶然间在上网的时候买了一台slam小车,能够利用2d激光雷达进行建图,自动导航,动态规避等功能。今天我将我在使用这台slam小车进行动态避障功能的实现记录下来。在进行动态避障用到的算法是dwa和teb算法。
简单介绍一下我用到的机器
myagv slam小车myagv 是 elephant robotics 的一款自动导航智能车辆。 它采用了竞赛级别的麦克纳姆车轮和带有金属框架的全包裹设计。 内置了一些slam算法来满足建图和导航方向的学习。
myagv是以树莓派4b为微型控制板,以ubuntu为开发系统,这也是为什么选择它的原因,树莓派有世界上最大的活跃社区,拥有许多全世界各地的用户案例提供借鉴。
建图/mapping首先我得搭建一个场景,让myagv在我搭建的场景里进行建图,自动导航,动态避障。
这是我简易搭建的一个场景,一些障碍物以及一些遮挡的物品。
现在开始我的建图。没有地图怎么进行导航呢,平时开车导航地图都是已经存在的,所以我要给场景进行建图,用到的gmapping算法。
gmapping:
gmapping是一种用于在机器人上建立环境地图的算法。它是一种基于激光雷达数据的slam(simultaneous localization and mapping)算法,可以在机器人运动时实时地构建环境地图,并同时确定机器人的位置。gmapping算法是ros(robot operating system)机器人操作系统中的一个软件包,可以通过ros的命令行工具或者编程接口来调用和使用它。
这里跟随elephant robotics 的gitbook(有详细的操作方式)来进行操作。
利用激光雷达等传感器收集周围环境信息,然后通过计算机算法将这些信息组合成一幅环境地图。之后我就可以在这张地图上进行导航和动态避障等功能了。
ps:gmapping完成之后记得保存建好的地图。
我在这调用了myagv的一种控制方法,用键盘进行控制myagv去执行建图。
自动导航amcl 定位这里要介绍一个算法acml算法,amcl算法是一种概率机器人定位算法,它基于蒙特卡罗方法(monte carlo method)和贝叶斯滤波(bayesian filtering)理论,通过对机器人搭载的传感器数据进行处理,实时估计机器人在环境中的位置,并不断更新机器人位置的概率分布。
amcl算法通过以下步骤实现机器人的自适应定位:
初始化粒子集合:首先,在机器人初始位置周围生成一组粒子,代表机器人可能的位置。运动模型更新:根据机器人的运动状态和控制信息,更新粒子集合中每个粒子的位置和状态信息。测量模型更新:根据机器人搭载的传感器数据,计算每个粒子的权重(即代表机器人在该粒子位置时传感器数据与实际数据的匹配程度),并通过归一化处理,将权重转化为概率分布。重采样:根据粒子的权重,对粒子集合进行重采样,从而提高定位精度并减少计算复杂度。机器人定位:根据粒子集合的概率分布,确定机器人在环境中的位置,并更新机器人状态估计信息。通过以上步骤的循环迭代,amcl算法可以实时地估计机器人在环境中的位置,并不断更新机器人位置的概率分布。
navigation提供了一套框架,可以让我们灵活的选择global_planner、local_planner来提供路径规划功能,其中global_planner是全局规划器,而local_planner是局部路径规划器,它们之间的有些消息,例如:全局规划的轨迹,就是在框架内部传递,没有topic可以跟踪。总的说,ros的导航模块提供了一套机制,通过选择不同的规划器,可以实现机器人的自主导航。
可以看到除了规划器,导航模块还包括 cost_map ,也就是栅格地图,并且也包括了静态障碍物的信息,也就是说哪些区域可以通过哪些不可以通过。同时动态障碍物信息是通过sensor topics来发布,然后实时更新cost_map来实现动态避障。除了地图,导航模块还需要定位信息,是由amcl模块来提供定位信息,如果想采用其它的定位模块替代,只需要发布相同的topic即可。同时还要提供tf信息,也就是说不同传感器之间的转换关系,这在机器人中非常常见。机器人的位姿信息则由odometry来提供,包括机器人的速度、角度等,提供给局部规划器来规划路径。
如果不太了解,这边推荐去查阅ros官方文档。
我们来一起看看自动导航的效果如何
这是实现了静态的避障,能够简单的实现。但是很多场景都有不确定的因素,比如说突然走出来一个人,这个时候站在面前,如果只依靠静态避障的话,那么它就会直接撞上去,这个时候就需要用到另一种功能,动态避障。
动态避障是指机器人在移动过程中,根据环境变化实时调整路径,避开障碍物的能力。与静态环境下的避障不同,动态避障需要机器人能够实时感知周围环境的变化,并做出相应的调整,以保证机器人的安全移动,从而提高生产效率和安全性。动态避障我这边主要用到的是dwa和teb算法。
总结动态避障的算法需要涉及的知识较多,本篇的文章就记录到这里,后续我会将dwa和teb算法写在另一篇文章中,如果你觉得我写的还不错,或者有啥需要改进的地方请在下方留言。
这里在写一下对myagv的使用下来的感受,首先呢它的外观是很好的,它能够搭载机械臂作为一个复合机器人去实现很多任务。我买他的初衷主要是为了学习slam小车的一些知识,实现自主导航等依靠雷达的功能,它搭载这树莓派4b全球最大的硬件开发社区,有很多的资源提供,这也是选择它的理由。
除此之外,它也不是完美的,它的电池消耗的很快,最长待机时间是2小时,如果使用的频率较高的话,一小时左右就快没电了。这是使用下来我觉得需要提升的地方,后续也继续更新使用myagv的感受。
红帽宣布了其他容器堆栈功能
为什么要给雷达信号加窗?怎么加?
指纹识别市场遭哄抢,国内IC赢得先机
面部识别打卡机气密性防水检测案例
人工智能在军事方面有怎样的应用
myAgv的slam算法学习以及动态避障
自复式过欠压保护器辅助触点闭合故障及排除
Qorvo® 为 1.8 GHz DOCSIS® 4.0 线缆应用带来出众性能
海信手机F30S曝光将搭载虎贲T310芯片和4010mAh大容量电池
双核4G手机 三星Galaxy S III开始量产
智能可穿戴在智慧医疗上有什么应用
最新数据和研究成果显示北京在全球科研城市中继续蝉联第一
关于分辨率的这两个概念,你了解了么
oppor11什么时候上市?oppor11最新消息:oppor11清晰来袭,有哪些拍照大招?
作为全球最大汽车市场的中国,2018年乘用车销量下降了5.8%
深睿医疗CEO乔昕大谈AI发展方向
Wind River VxWorks支援风力发电企业开发新一代控制器系统
直接碳燃料电池的工作原理_直接碳燃料电池的优点
国外发明的机械手臂 让你拥有真正第三只手
华为宣布重大消息 新代鸿蒙5.0系统不再支持安卓