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和大模型结合起来。如果你有任何好的建议,随时分享!

审核编辑 黄宇

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

    关注

    210

    文章

    28177

    浏览量

    206295
  • 算法
    +关注

    关注

    23

    文章

    4598

    浏览量

    92613
  • SLA
    SLA
    +关注

    关注

    1

    文章

    54

    浏览量

    18253
  • 人工智能
    +关注

    关注

    1791

    文章

    46813

    浏览量

    237448
收藏 人收藏

    评论

    相关推荐

    使用NVIDIA Jetson打造机器人导盲犬

    Selin Alara Ornek 是一名富有远见的高中生。她使用机器学习和 NVIDIA Jetson边缘 AI 和机器人平台,为视障人士打造了机器人导盲犬。
    的头像 发表于 11-09 13:51 167次阅读

    使用机器学习和NVIDIA Jetson边缘AI和机器人平台打造机器人导盲犬

    Selin Alara Ornek 是一名富有远见的高中生。她使用机器学习和 NVIDIA Jetson 边缘 AI 和机器人平台,为视障人士打造了机器人导盲犬。 该项目名为 I
    的头像 发表于 11-08 10:05 289次阅读

    大象机器人10月大事件回顾

    金秋10月,大象机器人积极参加数个海内外知名行业盛会,向全球机器人爱好者与行业专家展示最新的成果,也收获了一些奖项、报道,通过这些难得的展示机会,大象
    的头像 发表于 10-31 16:43 348次阅读

    算法角度看 SLAM(第 2 部分)

    作者: Aswin S Babu 正如我们在[第 1 部分]中所讨论的,SLAM 是指在无地图区域中估计机器人车辆的位置,同时逐步绘制该区域地图的过程。根据使用的主要技术,SLAM 算法
    的头像 发表于 10-02 16:39 241次阅读
    从<b class='flag-5'>算法</b>角度看 <b class='flag-5'>SLAM</b>(第 2 部分)

    使用myAGVJetson Nano主板和3D摄像头,实现了RTAB-Map的三维建图功能!

    本文将展示如何使用myAGV Jetson Nano移动平台搭载Jetson Nano BO1主板,结合RTAB-Map和3D相机,实现更加
    的头像 发表于 08-28 10:22 406次阅读
    使用<b class='flag-5'>myAGV</b>、<b class='flag-5'>Jetson</b> <b class='flag-5'>Nano</b>主板和3D摄像头,实现了RTAB-Map的三维建图功能!

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

    机器人软件框架一起使用,如ROS已与OpenRAVE、Orocos和Player集成。正是由于这一特点,探索开发ROS系统的人员众多,遍布世界各地,形成一种“百花齐放,家争鸣”局面,促使ROS功能
    发表于 07-09 11:38

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

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

    机器人高效导航定位背后SLAM专用芯片的崛起

    电子发烧友网报道(文/李宁远)对移动机器人来说,导航定位是最基本最核心的功能之一,机器人自主移动能力建立在出色的导航定位基础。目前移动机器人应用得最广泛的导航定位技术无疑是
    的头像 发表于 05-28 00:20 3334次阅读

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

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

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

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

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

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

    使用 NVIDIA Isaac 仿真并定位 Husky 机器人

    如何使用 ROS 2 Husky 官方软件包将该机器人导入 NVIDIA Isaac Sim 并创建仿真。 本 Demo 中的 Husky 机器人配备了 NVIDIA Jetson Orin
    的头像 发表于 12-26 18:05 1232次阅读
    使用 NVIDIA Isaac 仿真并定位 Husky <b class='flag-5'>机器人</b>

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

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

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

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

    大象机器人获出口商品品牌证明书!

    2023年10月30日,大象机器人获 出口商品品牌证明书 标志着我们在全球市场上的品牌实力和产品质量得到了认可。
    的头像 发表于 11-25 09:21 909次阅读
    <b class='flag-5'>大象</b><b class='flag-5'>机器人</b>获出口商品品牌证明书!