0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Jetson Nano集成探索大象机器人myAGV上的 SLAM 算法!

大象机器人科技 来源:大象机器人科技 作者:大象机器人科技 2024-06-03 14:13 次阅读

引言
大家好,最近新入手了一台myAGV JN这是elephant robotics在myAGV升级后的版本。最近有对SLAM相关知识感兴趣,想深入了解一些关于ROS中SLAM的一些算法和规划,跟据官方提供的gitbook,主要使用到了gmapping算法来建图导航实现功能的。

本篇得到文章主要探讨如何通过调整gmapping算法和其他软件层面的优化来提升myagv的精度,在不依靠硬件的条件情况下。

产品介绍
myAGV-Jetson Nano
这是第二代的myAGV,第一代的只有raspberry Pi 4B版本,算力方面有所欠缺,在二代的时候推出了一Jetson Nano为主控的版本,能够满足ROS 大部分的需求,Jetson Nano 能够满足大部分的嵌入式机器人的算力需求。

wKgaomZdXaaALxwbAAcctjO7AZQ415.png

对比之前还多了很多的配件,可以搭载3D摄像头做一些视觉的建图,一块显示屏安装在车身上比较方便操作,还有额外的增加了一块储能电池,比之前更耐用了(之前的1h差不多就趴窝了),因为都是看过raspberry 第一版的测评和使用情况,对这个升级版本还是很大的期待的。

搭配了一个雷达,高性能的行星直流无刷电机,保留了竞赛级别的万向轮,在原有的基础上开放了python 的控制接口,适配了图形化编程等软件。最让我心动的是,主控板为此提供了强大的图形处理能力,并且还支持3D建图和导航。

Jetson Nano B01

wKgZomZdXb2AJmXUAAWnVyLB6ZA097.png


NVIDIA Jetson Nano B01是一款小型但强大的嵌入式计算开发板,专为人工智能AI)和机器学习(ML)应用设计。

主要性能:

NVIDIA Maxwell架构的GPU,包含128个CUDA核心。
四核ARM Cortex-A57 CPU,主频为1.43 GHz。
4GB LPDDR4内存,位宽为64位,频率为1600MHz。
基于这些性能Jetson Nano BO1 适用于各种AI和嵌入式应用场景,尤其是机器人方面的自动导航,运动控制,路径规划等等。

gmapping
gmapping是一种SLAM(Simultaneous Localization and Mapping)常用的算法,他使用粒子波率方法在机器人移动的过程中同事构建环境地图并且估计机器人的位置和姿态。

wKgZomZdXc2ALdqqAAGaVE-zrv8720.png

wKgaomRu2JqAZO76ABiL6cYvQBk795.gif

过程
使用的过程

wKgZomZdXeqAdFLhAAKRBiu466A529.png


进入的界面是Ubuntu系统,方便了使用ROS进行操作,具我所了解,主机里原本就已经配置好了一些相关的基础建图信息

wKgZomZdXfiAHCqLAAT9-BvMrLE963.png

对于初次使用类似这种机器人来说非常的友好,提供了一个UI界面哪里不会点哪里。

wKgaomZdXgKANNl5AAc0COYmH0k164.png

一顿鼠标点下来,不用几分钟,就可以打开雷达运行gmapping来进行环境建图了。

wKgaomZdXh2APNO1AAWHwTRUbwU619.png

这个UI界面非常友好,功能相对来说还是比较完善的,但是只基于最基础的建图和导航功能,如果说是要做其他的一些项目开发,就没有太大的用处了,只适用于初学者,想要快速上手。

wKgZomZdXhSAC1dwAAULqQj9xIk889.png

之后就开始可以建图了。用VNC进行远程链接,通过键盘控制myAGV在所要导航的环境中进行建图。

wKgZomZdXh6AM5VXAAo262c-CXw640.png

目前为止,所有的环节都是顺利的,如果不想用UI也可以 自行输入命令行来执行环境建图的功能,以下内容都是大象机器人封装好的功能,以下命令都要在命令行当中运行。

# 启动雷达 roslaunch myagv_odometry myagv_active.launch #运行gmapping建图文件 roslaunch myagv_navigation myagv_slam_laser.launch # 开启键盘控制 roslaunch myagv_teleop myagv_teleop.launch #完成建图步骤之后需要进行保存map rosrun map_server map_saver


在导航的功能包中,更改刚建图的路径。

wKgZomZdXoyAfHGmAAO6tHrTwdM698.png

关闭建图的终端,运行导航的命令。

roslaunch myagv_navigation navigation_active.launch

wKgZomZdXqGAZQu2AAbF14Dk_w4851.png


这个时候,关键点来了,最好吧myagv放置在建图时候小车出发的为止,或者在RViz当中进行更改,确保Myagv在地图中的位置和实际环境中的位置相同才能够保证导航的时候能够正确的前往目的地。

点击顶部工具栏的“2D Pose Estimate” 进行调整,使得Rviz界面的小车和实现的小车可对应上,此时终端会返回小车相对于地图的坐标和航向角。

wKgZomZdXqyAJgizAASLzdNBFj0150.png

甚至还可以进行分布导航,记录下要前往的导航点的参数,xy坐标与航向角yaw,但是在导航的过程中发现了一些问题,很关键原因就是他不是特别的精准,导航10次,10次都会根据原来的路径有一定的偏差。

提出的问题并解决
为什么会出现偏差的问题?是什么原因导致出现偏差?

主要有两方面的原因,1是硬件方面传感器的误差,2是软件方面算法的局限性。

以下是我解决的方法,都是根据ROS官方给出的参数进行调整。

gmapping - ROS Wiki

通过修改雷达的参数,主要有一下几个参数
maxRange和maxUrange
maxRange:设置激光雷达的最大探测距离。确保此值与激光雷达的实际测量范围相匹配。

maxUrange:用于构建地图的最大有效距离。一般比maxRange稍小,设置成实际测量距离的一个合理值。

sigma
表示激光雷达测量的标准差。数值越小,表示测量越精确。

根据激光雷达的实际性能调整该值,以减少测量噪声的影响。

kernelSize
表示扫描匹配的窗口大小。较大的值可以增加匹配的鲁棒性,但也会增加计算量。

调整该参数以平衡计算时间和匹配精度。

lstep和astep
lstep:线性步长,表示在扫描匹配过程中,平移步长的大小。

astep:角度步长,表示在扫描匹配过程中,旋转步长的大小。

减小这些步长可以提高扫描匹配的精度,但也会增加计算负担。

particles
粒子的数量。更多的粒子可以提高定位的准确性和稳定性,但也会增加计算开销。

在计算资源允许的情况下,适当增加粒子数量。

xmin、ymin、xmax、ymax
设置地图的边界,确保这些值能够涵盖机器人运行的整个区域。

适当调整地图边界,可以减少无效区域的计算,提高整体效率。

< launch > < arg name="scan_topic" default="scan" / > < node pkg="gmapping" type="slam_gmapping" name="gmapping" output="screen" clear_params="true" > < param name="base_frame" value="base_footprint"/ > < param name="odom_frame" value="odom"/ > < !--param name="odom_frame" value="odom_combined"/-- > < param name="map_update_interval" value="0.1"/ > < !-- Set maxUrange < actual maximum range of the Laser -- > < param name="maxRange" value="5.0"/ > < param name="maxUrange" value="4.5"/ > < param name="sigma" value="0.05"/ > < param name="kernelSize" value="1"/ > < param name="lstep" value="0.05"/ > < param name="astep" value="0.05"/ > < param name="iterations" value="5"/ > < param name="lsigma" value="0.075"/ > < param name="ogain" value="3.0"/ > < param name="lskip" value="0"/ > < param name="srr" value="0.01"/ > < param name="srt" value="0.02"/ > < param name="str" value="0.01"/ > < param name="stt" value="0.02"/ > < param name="linearUpdate" value="0.5"/ > < param name="angularUpdate" value="0.436"/ > < param name="temporalUpdate" value="-1.0"/ > < param name="resampleThreshold" value="0.5"/ > < param name="particles" value="80"/ > < param name="xmin" value="-1.0"/ > < param name="ymin" value="-1.0"/ > < param name="xmax" value="1.0"/ > < param name="ymax" value="1.0"/ > < param name="delta" value="0.05"/ > < param name="llsamplerange" value="0.01"/ > < param name="llsamplestep" value="0.01"/ > < param name="lasamplerange" value="0.005"/ > < param name="lasamplestep" value="0.005"/ > < remap from="scan" to="$(arg scan_topic)"/ > < /node > < /launch >

调整里程计的参数
里成计模型:

校准里程计模型参数,确保其准确反映机器人的运动特性。
检查并调整轮子的半径、轴距等参数,减少模型误差。
传感器结合:

结合IMU数据,通过扩展卡尔曼滤波器(EKF)等方法进行传感器数据融合,提高定位精度。
确保里程计和IMU数据的时间同步,减少时序误差。
3gmapping算法调整:

粒子滤波误差:Gmapping使用粒子滤波算法,粒子的数目和分布会影响精度。如果粒子数量不足或分布不合理,可能导致误差。
Gmapping算法中的参数(如粒子数、步长、噪声模型等)设置不当,会影响定位和建图的精度。
调节这些参数来提高SLAM算法的精度,在实践当中就可以确保myAGV运行的时候误差不会太大。

需要根据周围的环境,进行大量的调节参数,然后进行测试,才能够确保建图的精准只有在建图精准了,导航也才能够保证精准。

总结
总的来说,我觉得myAGV表现还是挺不错的,无论是性能、使用体验,还是配套资料,都让人觉得友好,对初学者来说很容易上手。目前,我还在不断地使用和熟悉这个产品,之后打算做一些有趣的项目,希望能充分利用Jetson Nano BO1的潜力,把AI和大模型结合起来。如果你有任何好的建议,随时分享!

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器人
    +关注

    关注

    208

    文章

    27397

    浏览量

    202372
  • 算法
    +关注

    关注

    23

    文章

    4478

    浏览量

    91286
  • SLA
    SLA
    +关注

    关注

    1

    文章

    53

    浏览量

    18192
  • 人工智能
    +关注

    关注

    1781

    文章

    44953

    浏览量

    232367
收藏 人收藏

    评论

    相关推荐

    基于FPGA EtherCAT的六自由度机器人视觉伺服控制设计

    机器人视觉伺服中有着广阔的应用,本实验将集成摄像头的 伊瑟特主站应用在自主研发的六自由度串联机器人,将机器人运动学
    发表于 05-29 16:17

    大象机器人完成Pre-B轮融资,致力打造全新机器人生态!

    近日,深圳市大象机器人科技有限公司(以下简称「大象机器人」)近日完成Pre-B轮融资,本轮融资由清辉投资领投、云卓资本跟投,资金将用于人形机器人
    的头像 发表于 05-22 14:46 550次阅读

    技术融合与创新大象机器人水星Mercury X1人形机器人案例研究!

    引言 在科技迅速发展的当下,人形机器人正变得日益重要,其应用范围从工业自动化到服务业不断扩展。本文将通过Mercury X1大象人形机器人的案例,探讨如何利用尖端技术如大型语言模型(LLM)、同时
    的头像 发表于 04-28 14:18 258次阅读
    技术融合与创新<b class='flag-5'>大象</b><b class='flag-5'>机器人</b>水星Mercury X1人形<b class='flag-5'>机器人</b>案例研究!

    什么是SLAMSLAM算法涉及的4要素

    SLAM技术可以应用在无人驾驶汽车、无人机、机器人、虚拟现实等领域中,为这些领域的发展提供了支持。SLAM技术的发展已经逐渐从单纯的定位和地图构建转向了基于场景理解的功能。
    发表于 04-04 11:50 915次阅读

    自动化革命:大象机器人的Mercury A1机械臂

    引言 大象机器人的Mercury系列,是面向工业自动化和智能制造的新型机械臂产品线。这些机械臂不仅在设计上创新,还在材料选择上使用了碳纤维、铝合金和工程塑料等轻质强韧材料,搭载高精度谐波减速器
    的头像 发表于 01-15 14:41 374次阅读
    自动化革命:<b class='flag-5'>大象</b><b class='flag-5'>机器人</b>的Mercury A1机械臂

    LabVIEW的六轴工业机器人运动控制系统

    。 系统研究与算法开发:首先,项目围绕机器人的数学模型,特别是空间位姿描述和D-H模型展开研究。在此基础,开发了机器人的运动学正反解算法
    发表于 12-21 20:03

    ROS让机器人开发更便捷,基于RK3568J+Debian系统发布!

    领域的集大成者,主要应用于机器人控制领域,如AGV工业机器人控制器、智能机械臂控制器、机器人导航系统等。 ROS系统主要特点有哪些 (1) 提供丰富的机器人
    发表于 11-30 16:01

    Banana Pi为何选择rk3588开发与Jetson Nano引脚兼容的嵌入式产品

    Jetson Nano引脚的兼容性。 背景: Jetson Nano是NVIDIA公司推出的一款优秀的嵌入式计算平台,它在机器学习、人工智
    发表于 11-02 12:30

    armsom:为何选择rk3588开发与Jetson Nano引脚兼容的嵌入式产品

    Jetson Nano是NVIDIA公司推出的一款优秀的嵌入式计算平台,它在机器学习、人工智能和计算视觉等领域表现出色。然而,随着技术的不断演进,市场对更多功能和更大灵活性的需求也不断增长。因此
    发表于 10-18 17:35

    教你做个PID控制巡线机器人

    在本项目中,我们将学习如何使用带PID控制器的线跟随机器人使用Arduino Nano来解决迷宫。
    发表于 09-25 06:54

    NVIDIA Jetson还能让AI驱动维修机器人

    这位边缘 AI 领域的“绝地武士”使用 NVIDIA Jetson Orin Nano 开发者套件作为机器人的大脑,让这个身高不到四英尺、眼睛只有一个简单网络摄像头的机器人能够识别物体
    的头像 发表于 08-18 15:37 765次阅读

    浅析基于SLAM机器人自主定位导航

    正如图中所示,机器人自主定位导航技术中包括:定位和地图创建(SLAM)与路径规划和运动控制两个部分,而SLAM本身只是完成机器人的定位和地图创建,二者有所区别。
    发表于 08-03 11:12 813次阅读
    浅析基于<b class='flag-5'>SLAM</b>的<b class='flag-5'>机器人</b>自主定位导航

    myAgvslam算法学习以及动态避障下篇

    引言 在之前的一篇文章中有提到购入了一台myAGV,以树莓派4B为控制核心的移动机器人。上篇文章中向大家介绍了myAGV如何实现建图、导航以及静态避障,但我们深知,这只是机器人自主导航
    的头像 发表于 07-19 16:37 832次阅读
    <b class='flag-5'>myAgv</b>的<b class='flag-5'>slam</b><b class='flag-5'>算法</b>学习以及动态避障下篇

    基于Jetson NANO的助手机器人

    电子发烧友网站提供《基于Jetson NANO的助手机器人.zip》资料免费下载
    发表于 07-06 11:27 0次下载
    基于<b class='flag-5'>Jetson</b> <b class='flag-5'>NANO</b>的助手<b class='flag-5'>机器人</b>

    NVIDIA Jetson Nano上的智能视频分析

    电子发烧友网站提供《NVIDIA Jetson Nano上的智能视频分析.zip》资料免费下载
    发表于 07-06 10:39 0次下载
    NVIDIA <b class='flag-5'>Jetson</b> <b class='flag-5'>Nano</b>上的智能视频分析