前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >myAgv的slam算法学习以及动态避障

myAgv的slam算法学习以及动态避障

原创
作者头像
大象机器人
发布于 2023-05-25 03:49:05
发布于 2023-05-25 03:49:05
8950
举报
文章被收录于专栏:移动机器人移动机器人

前言

随着科技得越来越发达,人工智能,自动驾驶导航等字眼频频出现在我们得眼前。但是目前来说自动驾驶并没有得到很全面得普及,还在进行不断的开发和测试当中。从小就爱好车的我,对这项技术也很是感兴趣。

偶然间在上网的时候买了一台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算法通过以下步骤实现机器人的自适应定位:

1. 初始化粒子集合:首先,在机器人初始位置周围生成一组粒子,代表机器人可能的位置。

2. 运动模型更新:根据机器人的运动状态和控制信息,更新粒子集合中每个粒子的位置和状态信息。

3. 测量模型更新:根据机器人搭载的传感器数据,计算每个粒子的权重(即代表机器人在该粒子位置时传感器数据与实际数据的匹配程度),并通过归一化处理,将权重转化为概率分布。

4. 重采样:根据粒子的权重,对粒子集合进行重采样,从而提高定位精度并减少计算复杂度。

5. 机器人定位:根据粒子集合的概率分布,确定机器人在环境中的位置,并更新机器人状态估计信息。

通过以上步骤的循环迭代,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的感受。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
myAgv的slam算法学习以及动态避障下篇
在之前的一篇文章中有提到购入了一台myAGV,以树莓派4B为控制核心的移动机器人。上篇文章中向大家介绍了myAGV如何实现建图、导航以及静态避障,但我们深知,这只是机器人自主导航能力的基础。在实际应用场景中,机器人需要面对复杂的动态环境,如人流、障碍物等,如何实现可靠的动态避障,是我们不断探索和挑战的问题。在本文中,我们将分享我们在探索动态避障方面的实践和经验,希望能够为其他创客开发者和机器人爱好者提供一些参考和启发。
大象机器人
2023/07/19
1.1K0
myAgv的slam算法学习以及动态避障下篇
激光slam_高德导航术语理解
注:最近学习ROS的激光导航知识,需要理清ROS的SLAM、环境感知(costmap)、与导航算法。为防止自己忘记,将觉得有价值的内容收集于此。对AGV来说,SLAM是个大大坑,环境感知和局部运动控制也是大坑,学习的过程就是学会怎么从坑里爬出来的过程
全栈程序员站长
2022/09/24
1.3K0
激光slam_高德导航术语理解
【C++】ROS:navigation导航模块学习与算法示例
导航模块是机器人系统中的一个重要组件,用于实现机器人在环境中的自主导航和路径规划。
DevFrank
2024/07/24
8090
SLAM+路径规划:巡检机器人算法设计
标题:Research on SLAM and Path Planning Method of Inspection Robot in Complex Scenarios
一点人工一点智能
2023/08/25
1.9K0
SLAM+路径规划:巡检机器人算法设计
SLAM+路径规划:巡检机器人算法设计
标题:Research on SLAM and Path Planning Method of Inspection Robot in Complex Scenarios
一点人工一点智能
2023/05/30
1.4K0
SLAM+路径规划:巡检机器人算法设计
基于ROS的机器人建图与导航仿真全过程
原文:https://blog.csdn.net/qq_45152498/article/details/124296963
一点人工一点智能
2023/03/02
1.6K0
基于ROS的机器人建图与导航仿真全过程
一篇文章读懂myAGV如何建图导航
myAGV 大象首款移动机器人,采用竞赛级麦克纳姆轮,全包裹金属车架;ROS开发平台内置两种slam算法,满足建图、导航方向的学习;提供丰富的扩展接口,可搭载my系列机械臂,实现移动抓取,完成更多应用。
大象机器人
2022/09/23
6810
激光导航和slam导航区别_激光导航和视觉导航的区别
基本原理 关于机器人运动控制系统架构,在《ros by example》 chapter 7一章第二节中介绍了控制机器人的5个层次,从低到高依次是:motor controllers anddrivers-> ROS base controller ->Frame-Base Motion(move_base)->Frame-Base Motion(gmapping + amcl)->Semantic Goals。总结起来如下图所示:
全栈程序员站长
2022/09/24
2.7K0
激光导航和slam导航区别_激光导航和视觉导航的区别
结合大象机器人六轴协作机械臂myCobot 280 ,解决特定的自动化任务和挑战!(下)
前景提要:我们在上文介绍了使用LIMO cobot 实现一个能够执行复杂任务的复合机器人系统的应用场景的项目,从以下三个方面:概念设计、系统架构以及关键组件。
大象机器人
2024/03/07
5231
结合大象机器人六轴协作机械臂myCobot 280 ,解决特定的自动化任务和挑战!(下)
SLAM | 激光SLAM中开源算法对比
好久没有更新SLAM系列的文章了,前面我们讲到了激光SLAM技术。基于激光雷达的同时定位与地图构建技术(simultaneous localization and mapping, SLAM)以其准确测量障碍点的角度与距离、 无须预先布置场景、可融合多传感器、 在光线较差环境工作、 能够生成便于导航的环境地图等优势,成为目前定位方案中不可或缺的新技术。
AI算法修炼营
2020/05/08
3.6K0
Jetson Nano集成探索大象机器人myAGV上的 SLAM 算法!
大家好,最近新入手了一台myAGV JN这是elephant robotics在myAGV升级后的版本。最近有对SLAM相关知识感兴趣,想深入了解一些关于ROS中SLAM的一些算法和规划,跟据官方提供的gitbook,主要使用到了gmapping算法来建图导航实现功能的。
大象机器人
2024/06/04
2080
Jetson Nano集成探索大象机器人myAGV上的 SLAM 算法!
结合大象机器人六轴协作机械臂myCobot 280 ,解决特定的自动化任务和挑战!(上)
本项目致力于探索和实现一种高度集成的机器人系统,旨在通过结合现代机器人操作系统(ROS)和先进的硬件组件,解决特定的自动化任务和挑战。一部分是基于Jetson Orin主板的LIMO PPRO SLAM雷达小车,它具备自主导航、地图构建和路径规划的能力;另一部分是Mycobot 280 M5机械臂,这是一个具有六自由度、工作半径280mm的紧凑型机械臂,能够进行精确的物品搬运和操作。
大象机器人
2024/03/07
4550
结合大象机器人六轴协作机械臂myCobot 280 ,解决特定的自动化任务和挑战!(上)
激光slam综述_开源算法是什么意思
好久没有更新SLAM系列的文章了,前面我们讲到了激光SLAM技术。基于激光雷达的同时定位与地图构建技术(simultaneous localization and mapping, SLAM)以其准确测量障碍点的角度与距离、 无须预先布置场景、可融合多传感器、 在光线较差环境工作、 能够生成便于导航的环境地图等优势,成为目前定位方案中不可或缺的新技术。
全栈程序员站长
2022/09/24
7410
激光slam综述_开源算法是什么意思
机器人导航报告半成品-60分模板-tianbot mini
机器人发布nav_msgs/Odometry格式的里程计信息,相应的TF变换给导航功能包,然后导航功能包输出geometry_msgs/Twist格式的控制指令,最终通过这些指令控制机器人完成相应的运动。
zhangrelay
2022/10/04
6150
机器人导航报告半成品-60分模板-tianbot mini
【SLAM】激光SLAM简介与常用框架
SLAM(同步定位与地图构建)是一种机器人感知技术,用于在未知环境中同时确定机器人的位置并构建地图。
DevFrank
2024/07/24
1.2K0
slam技术前景_技术市场的概念
大家好,又见面了,我是你们的朋友全栈君。 SLAM技术与市场杂谈 SLAM(simultaneous localization and mapping)全称即时定位与地图构建或并发建图与定位,主要的作用是让机器人在未知的环境中,完成定位(Localization),建图(Mapping)和路径规划(Navigation)。 目前,SLAM技术被广泛运用于机器人、无人机、无人驾驶、AR、VR等领域,依靠传感器可实现机器的自主定位、建图、路径规划等功能。 主流的slam技术应用有两种,分别是激光
全栈程序员站长
2022/11/15
1.4K0
slam技术前景_技术市场的概念
ROS2、slam_toolbox、Navigation2、Gazebo(转)
Slam Toolbox软件包基于LaserScan消息的形式组合来自激光测距仪的信息,并从odom-> base链接中进行了TF转换,从而创建了空间的二维地图。该软件包将允许完全序列化重新加载的SLAM地图的数据和姿态图,用于持续建图、定位,合并或进行其他操作。允许SLAM Toolbox在同步(即,处理所有有效的传感器测量,无论是否滞后)和异步(即,在可能的情况下处理有效的传感器测量)模式下运行。
zhangrelay
2020/03/09
2.7K0
ROS2、slam_toolbox、Navigation2、Gazebo(转)
SLAM
机器人研究的问题包含许许多多的领域,我们常见的几个研究的问题包括:建图(Mapping)、定位(Localization)和路径规划(Path Planning),如果机器人带有机械臂,那么运动规划(Motion Planning)也是重要的一个环节。而同步定位与建图(SLAM)问题位于定位和建图 的交集部分。 SLAM需要机器人在未知的环境中逐步建立起地图,然后根据地区确定自身位置,从而进一步定位。 ROS中SLAM的一些功能包,也就是一些常用的SLAM算法,例如Gmapping、Karto、Hector、Cartographer等算法。我们不会去关注算法背后的数学原理,而是更注重工程实现上的方法,告诉你SLAM算法包是如何工作的,怎样快速的搭建起SLAM算法
小飞侠xp
2019/05/17
2K0
SLAM
Navigation Stack
Navigation Stack是一个ROS的metapackage,里面包含了ROS在路径规划、定位、地图、异常行为恢复等方面的package,其中运行的算法都堪称经典。Navigation Stack的主要作用就是路径规划,通常是输入各传感器的数据,输出速度。一般我们的ROS都预装了Navigation。 Navigation Stack的源代码位于https://github.com/ros-planning/navigation,包括了以下几个package:
小飞侠xp
2019/05/17
1.3K0
ROS联合webots实战案例(五)导航功能包入门2
在前面几章中分别介绍了在webots中如何创建自己的机器人、添加传感器以及使用手柄或键盘驱动它在仿真环境中移动。在本章中,你会学习到ROS系统最强大的特性之一,它能够让你的机器人自主导航和运动。
锡城筱凯
2021/02/07
1.7K0
ROS联合webots实战案例(五)导航功能包入门2
推荐阅读
相关推荐
myAgv的slam算法学习以及动态避障下篇
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档