当前位置: 首页 > news >正文

机器人规划控制——工程化——心得日记-20240510

近一周一直在调试机器人过迷宫形路线,这种路线特点是障碍物之间距离较小且障碍物也比较多,基本机器人会一直发生干涉检测,请求全局路径,然后再控制机器人前进。

遇到一个特别有趣的问题,当然最后查出来原因也感觉比较纯,就是我们机器人在行进过程中,会当前要走的路径与周围障碍物发生了干涉检测即有碰撞风险,然后会请求全局规划,我们注意到计算的局部目标点一直在远处挪,突然某一贞,生了局部的路线,即全局的路线不是从起点开始的,而是从另外很远的地方开始,但终点是对的,这样全局规划的线是错误的,但是全局规划器返回的状态是success,那局部控制器就跟踪这个有问题的全局线,进而导致机器人撞到障碍物了。

上述是现象的描述,下面是解决问题过程中的尝试:
(1) 阶段一:我一开始怀疑是当前路线和全局路线合并时处理的问题,不认为是potential A规划有问题,然后我在代码中加了potential A生成的全局路径初始2个坐标打印,然后重新复现,采集数据,并分析。注意到确实是全局输出的结果不对,a规划路线的初始位置和当前机器人位置不一致。排除了路线合并时的处理问题。
(2)阶段2:我怀疑是a
算法在计算过程中,由于某种原因,导致了传入的初始位置坐标错误,在在代码中添加相关打印,分析表明,传入的初始位置是正确的。依然尚未解决。
(3)阶段3:在看代码的时候,我注意到,干涉检测成功请求全局规划时,我会先使用局部的膨胀地图(10米✘10米)去用potential a*
规划路径,如果规划失败,我会调用全局膨胀地图(将局部膨胀地图合并到全局膨胀地图上)去规划,问题出现在这个全局膨胀地图和全局膨胀地图上,这是两个栅格地图,他们的原点不一样,但是在计算起点世界系下的坐标时,只考虑了局部膨胀地图,所以导致映射错误,最终计算错误。于是修复此逻辑,重新测试机器人。又注意到,机器人在请求全局规划时,使用局部膨胀地图规划成功了,但依然出现此问题。尚未解决。。。
(4)阶段4:到这里,我基本怀疑potential a算法的代码有问题了,加了很多打印,最后怀疑是回溯获取路线有问题,然后又加了很多打印,又开始实车复现,记录数据,分析数据,最终结果表明,回溯的那块确实有问题,他回溯到了一个很选的点,并不是起点,然后这俩的index索引值一致,导致回溯程序提前结束,其实并没有找到起点。到此我怀疑是这里不该用索引去判断是不是找到了初始点,而是用坐标值去判断是否一致。
朋友们,你是不是以为到此就解决了此bug,请注意,并没有!并没有!
(5)阶段5:我们进一步分析,又发现了一个问题,就是回溯到的那个起点map系下的坐标居然超过了局部膨胀地图的范围,这说明回溯这里越界了,搜索的范围不在局部地图里了。这又是为什么呢?我们又去看下计算的目标点的map系坐标果然超过了局部坐标系的范围。。。。。。。
至此,这个问题分析出来了,就是为全局规划起设定的目标点不在地图的范围,这种情况下使用potential a
去计算就会生成错误的路线。。

哎,想想好蠢啊,范了这么低级错误!

鞠春宇
于沈阳
20240510

http://www.lryc.cn/news/345924.html

相关文章:

  • 2024年成都市标杆场景项目申报条件对象、奖励和认定材料流程
  • 前端Vue uView 组件<u-search> 自定义右侧搜索按钮样式
  • 【Linux网络编程】I/O多路转接之select
  • 三下乡社会实践投稿攻略在这里
  • 银河麒麟桌面版开机后网络无法自动链接 麒麟系统开机没有连接ens33
  • vue+onlyOffice+java : 集成在线编辑word并保存
  • linux上用Jmter进行压测
  • 【Java代码审计】代码审计的方法及常用工具
  • 我国吻合器市场规模不断扩大 国产化率有所增长
  • 深度剖析Comate智能产品:科技巧思,实用至上
  • Centos 7.9 配置VNCServer实现远程vnc连接
  • 设计模式-08 - 模板方法模式 Template Method
  • Android 适配阿拉伯语之vector图标镜像
  • 推荐4个可用的github国内镜像
  • 从项目开始学习Vue——02(若依框架)
  • 使用JavaScript日历小部件和DHTMLX Gantt的应用场景(二)
  • springboot整合redis多数据源(附带RedisUtil)
  • Web实时通信的学习之旅:SSE(Server-Sent Events)的技术详解及简单示例演示
  • Apache Flume事务
  • 根据部门id删除该部门下的员工(事务)
  • Java之String类
  • es终止快照恢复进程的方法
  • ubantu安装rabbbitmq
  • 了解 条码工具 Dynamsoft 在条码读取器中的形态运算
  • NIO和NIO.2对比
  • Google准备好了吗?OpenAI发布ChatGPT驱动搜索引擎|TodayAI
  • 乐观锁、悲观锁、互斥锁、读写锁
  • Gin入门指南:从零开始快速掌握Go Web框架Gin
  • Scala里的class、object、case class、case object 、trait
  • 移动端自动化测试工具 Appium 之 main 启动