前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一篇文章读懂myAGV如何建图导航

一篇文章读懂myAGV如何建图导航

原创
作者头像
大象机器人
发布2022-09-23 17:38:05
5140
发布2022-09-23 17:38:05
举报
文章被收录于专栏:移动机器人移动机器人

myAGV 大象首款移动机器人,采用竞赛级麦克纳姆轮,全包裹金属车架;ROS开发平台内置两种slam算法,满足建图、导航方向的学习;提供丰富的扩展接口,可搭载my系列机械臂,实现移动抓取,完成更多应用。

1、工业级高品质外观

1.1麦克纳姆轮:

麦克纳姆轮的搭载,能够让myAGV进行全向运动,可以实现横向运动,做到原地转圈运动,向目的地前进的时候能够省去很多不必要的路径。

1.2可拆卸

带有金属框架的全包裹式设计使 myAGV 更加紧凑和坚固。内置树莓派4B和分体式结构,能够自主拆卸,能在外形/主板上自行设计创作出属于自己独一无二的小车

2、强大建图导航功能

2.1实时建图

目前myAGV使用中需要进行SLAM建图,因为移动机器人想要实现自主行走,核心在于实现自主定位导航,在自主定位导航技术中会涉及到定位、建图、路径规划等问题,而地图构建的好坏将直接影响myAGV的行走路径。 myAGV想要到达某个目的地,需要和人类绘制地图一样,描述环境、认识环境的过程主要就是依靠地图。下面对myAGV小车使用的两种建图算法进行介绍。

2.1.1 gmapping算法

GMapping是一种高效的粒子滤波器,是一个基于2D激光雷达使用RBPF(Rao-Blackwellized Particle Filters)算法完成二维栅格地图构建的SLAM算法。Gmapping可以实时构建室内地图,在构建小场景地图所需的计算量较小且精度较高。

操作:

先将小车放置在需要建图环境中的一个合适起始点位上,因为开启launch文件将会开启小车的IMU传感器及odom里程计,人为的移动小车将造成小车建图失真。

先打开SLAM扫描文件,

运行命令:

cd myagv_ros

source ./devel/setup.bash

roslaunch myagv_odometry myagv_active.launch

然后打开gmapping建图文件,操控小车在所需要的空间里行走一圈,

运行命令

roslaunch myagv_navigation myagv_slam_laser.launch

看到图像中建立出所需要的空间的时候就可以保存地图了

运行命令保存建出的地图:

rosrun map_server map_saver

2.1.2cartographer算法

cartographer是一套基于图优化的SLAM算法。

cartographer算法主要运用了Submap这一概念,每当或得一次laser scan的数据后,便与当前最近建立的Submap去进行匹配,使这一帧的laser scan数据插入到Submap上最优的位置。在不断插入新数据帧的同时该Submap也得到了更新。一定量的数据组合成为一个Submap,当不再有新的scan插入到Submap时,就认为这个submap已经创建完成,接着会去创建下一个submap,具体过程如下图。

图来自csdn

所有创建完成的submap以及当前的laser scan都会用作回环检测的scan matching。如果当前的scan和所有已创建完成的submap在距离上足够近,则进行回环检测。完成回环检测后完成建图。

(Submap :子图,将一小块区域雷达扫描的范围(scan)形成一张子图)

cartographer算法建图的过程跟gmapping算法建图的过程一样,先是打开雷达,再开启cartographer算法文件,去操控小车在所要建立的区域中行走,完成建图。

很多人可能都会有疑惑,建图明明一种算法就好了,为什么要介绍两种建图的算法呢?

我们来比较一下两种算法就能解决这个疑惑了。

Gmapping可以实时构建室内地图,在构建小场景地图所需的计算量较小且精度较高。 而相比Cartographer在构建小场景地图时,Gmapping不需要太多的粒子并且没有回环检测,因此计算量小于Cartographer,而精度并没有差太多。在构建小场景地图的时候,gmapping和cartographer相比,前者不仅速度快也能够建造高精度的地图,而在地图的扩大gmapping需要的粒子数量多了容易把内存撑爆。而后者恰好可以解决地图扩大的问题,建图的效果还能够非常好(上图处在同一地形的建图)。

2.2地图导航

上一步在我们建好的地图中,我们可以让小车在地图里自动导航到某一个目的地。这都源于ROS的navigation功能包。

navigation中的move_base:

图来自csdn

global planner:

根据给定的目标位置进行总体路径的规划.

在ROS的导航中,首先会通过全局路径规划,计算出机器人到目标位置的全局路线。这一功能是navfn这个包实现的。navfn通过Dijkstra最优路径的算法,计算costmap上的最小花费路径,作为机器人的全局路线。

local planner:

据附近的障碍物进行躲避路线规划。

本地的实时规划是利用base_local_planner包实现的。该包使用Trajectory Rollout 和Dynamic Window approaches算法计算机器人每个周期内应该行驶的速度和角度(dx,dy,dtheta velocities)。

base_local_planner这个包通过地图数据,通过算法搜索到达目标的多条路经,利用一些评价标准(是否会撞击障碍物,所需要的时间等等)选取最优的路径,并且计算所需要的实时速度和角度。

接下来介绍一下我们复现的过程:

一开始我们得确定myagv的位置,用到了ros中的acml去定位。(在地图中确定myagv所在的位置)

( 白色:myAGV ;红色点点:小车现在位置扫描出的激光点云蓝色:是激光雷达局部地图膨胀生成的膨胀地图 ;绿色:是姿态数组 手动定位的时候绿色会进行收敛 直至团状 )

原地转几圈完成定位后就可以开始进行自动导航了

当我们点击“2D Nav Goal”,再点击地图上我们想要到达的点位,小车便会向着目标点位出发,同时还可以在rviz中看到起点到目标点位间有一条小车的规划路径,小车会沿着路线运动到目标点位。

2.3 PS2手柄控制

作为一个移动机器人怎能没有手柄控制呢!

我们开发了ps2手柄控制myAGV,这样myAGV就可以自由的运动,实现更多的可能

下面是我们手柄控制的时序图提供一点思路给大家,能够手柄上做更多的开发。

最后,如果你拥有这样一辆小车你会做些什么?在它分体式结构可拆卸的小车,你能够给它改装成什么样子的AGV,是给他的车上加上一些武器去作为一辆战斗车,还是改装成搭载各种各样的机器充满未来感?

感谢你们的观看,如果有什么好的意见请留言!

上面就是我们对小车的初步介绍,后续会介绍myAGV搭载我们my系列的机械臂。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、工业级高品质外观
  • 2、强大建图导航功能
相关产品与服务
图数据库 KonisGraph
图数据库 KonisGraph(TencentDB for KonisGraph)是一种云端图数据库服务,基于腾讯在海量图数据上的实践经验,提供一站式海量图数据存储、管理、实时查询、计算、可视化分析能力;KonisGraph 支持属性图模型和 TinkerPop Gremlin 查询语言,能够帮助用户快速完成对图数据的建模、查询和可视化分析。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档