关于机器人导航的第二次ROS聚会的报告


2019年11月30日,由Sberbank机器人实验室组织的第二届ROS俄国见面会举行了,聚集了200多名ROS开发人员。在本文中,我们从这个MeetUp中有关机器人导航的最有趣的演示中选择了一些。

很快,4月18日,下一次ROS MeetUp将会举行,更加雄心勃勃,更有趣!冠状病毒不允许我们面对面见面,但是没有什么可以阻止我们聚集在线会议!我们邀请所有同事以听众和演讲者的身份在线参加。广播的详细信息将发送给已注册的参与者,注册已经开放,此处链接,免费参加。我们提醒您,您可以在俄罗斯找到志趣相投的ROS开发人员,并在我们的电报频道ROS俄罗斯社区中找到最新的ROS新闻我们已经发布了该计划完整公告以及过去的MeetUp的部分报告,今天我们将分享另外三个有趣的报告。

所以走吧!

“使用ARUCO标记对机器人进行定位”


报告作者:Alexey Budyakov



演示幻灯片

此报告详细检查了导航子系统的重要组成部分之一-通过标记定位。

导言着重介绍了计算机视觉方法的基本原理和概念,这些方法使移动机器人可以在基准标记中导航:旨在识别为参考点的特殊图像。通常,它们自己或在任何可能的背景下都具有高对比度,并且优化了在倾斜和弱光条件下的识别能力。作为标记,您可以使用原始徽标(例如,飞机上的“检查器”),现成的数据编码系统(DataMatrix,QR),但是,在机器人技术中,使用了专门开发的标记系统,通常以黑白图像的形式使用。其中之一是ArUco,它允许您创建具有多个粒度值(从4 * 4到7 * 7)的像素标记,并且与QR码不同,识别需要数十毫秒的时间,因此可以以最小的计算成本来查找和检测标记。该报告研究了从检测图像上的标记到计算机器人相对于标记的位置的方法,并考虑了使用ArUco标记识别模块的优势aruco_marker,是流行的计算机视觉方法OpenCV库的一部分。我们试图以这样一种方式来构建报告,即可以在不深入数学的情况下大致了解标记的导航过程,并且可以从中提取实现用于导航的一种或另一种方法的流行库方法的链接。

“定时橡皮筋道路规划师概述”


报告作者:Ivan Kornev



演示

幻灯片该报告的目的不仅是要介绍本地TimedElasticBand调度程序的原理,而且还要将其与另一个流行的ROS调度程序DynamicWindowApproach进行比较,因为它是MoveBase导航堆栈的一部分,并且被设置为turtlebot3导航堆栈中的默认调度程序。通常,借助此计划程序,新手将首先了解。

报告内容:

  1. MoveBase导航堆栈的简要概述,说明其工作方式。对于以前没有处理过此程序包但想了解它或了解本地调度程序在其中扮演什么角色的人来说,这将很有用。
  2. Dynamic Window Approach ( — DWA). DWA, . . , , . , . , DWA ROS , . - .
  3. TimedElasticBand ( — TEB). . :

    — , ( )
    — , ( , 0 255, , ROS Costmap) 255 ( 255 ) . , , . , , . . TEB , .
  4. . DWA TEB , ROS Wiki.


“Eurobot: ”


: ,



演示幻灯片由Sberbank机器人实验室支持

的俄罗斯副冠军setUp团队讨论了他们自己的导航系统。大篇文章描述了开发过程

机器人在平坦的地面上行驶,大多数障碍都是事先知道的,但是,阴险的对手可以尝试窃取资源(我们有时想吃掉几十个加分点),而我们希望尽快驶向理想的点而不会遇到障碍。从现场的外部摄像机,我们可以获得敌人的位置数据,并知道他现在的位置。但是,仅知道他的位置还不够-您需要能够使用此信息。

今天,我们将尝试从A点驶向B点,而不必沿着睡在地板上的猫的尾巴驶去。特别是,我们将说明如何构建路线并控制机器人的速度,以及如何在计算机上运行所有东西。”

图片

试图一点点流血


解决此问题时,您可以获取专业人士编写的现成材料,这样就不会有下一个“自行车”的折磨和发明。因此,我们尝试使用全轮式平台,尽管出于种种原因,我们尝试使用ROS提供的现成的本地刨床,但出于多种原因,我们认为这是没有希望的。

在标准堆栈的优点中,您可以突出显示文档的可用性以及在论坛上查找信息的能力。您可以在官方网站上阅读更多文档

值得一提的是,ROS软件包最常在两轮平台上进行测试。我们通过增加最大360度的可用旋转角度,优化了用于全孔的系统的组装(此类机器人称为“完整的:在任何时间它都可以沿任何方向移动”)。在我们看来,这是一个肮脏的hack,但是其他选择不是通用的。标准计划程序实在太繁琐,并且有许多我们永远不需要的参数

全球规划师


我们决定从导航包中进行完善的第一件事是基于theta *算法创建__global planner__。简而言之,这是一个修改后的A *像往常一样,已知的地图以栅格方式分为元素(节点)网格;调度程序不断搜索父节点,该父节点可以直接访问。在没有障碍的路上。这使您可以构建方便的路径并进行平滑处理。此外,它们被转移到本地计划者。

图片
A *和theta *的比较

当地规划师


局部调度程序通过梯度下降方法在势场中工作。来自全局计划程序的路径用作输入。另外,在本地计划程序中,还提供用于选择路径构造模式的内部服务。有两种操作模式可用:在地图上使用多次通过沿梯度平移点的模式以及平移模式,在平移模式下直接在两个坐标中计算增量,并且该点移至安全区的边缘。

结果,我们决定根据来自全局规划器的路径,在势场中使用梯度下降'和。事实证明,这是一种轻量级且相对简单的算法,它完全满足我们对接收路径的质量,工作时间和RAM消耗量(在100-150 mb范围内)的要求,这比使用标准程序包的第一次开发迭代所获得的结果要少几倍。

图片
本地规划师路径偏移量示例

轨迹调节器


导航堆栈中的最后但并非最不重要的元素是轨迹调节器。他负责将路径从本地计划程序转换为路径,并为当前步骤提供瞬时速度值。通往新“轨迹”的第一个迭代是用于替换机器人正在移动的矢量的算法。它被分配为具有不同系数的下三个节点的向量之和。第二次迭代是通过构造第5次多项式来编写Minimum Jerk滤波器,其中xy坐标取决于到达每个点的时间。

图片
该图显示了坐标之一与时间的关系图,以及沿该坐标的速度

如果您对开发机器人,机器人模块或软件组件感兴趣,或者想炫耀自己的开发成果或者只是与志趣相投的人聊天,欢迎参加我们于4月18日举行的下一次ROS在线聚会

文章作者:阿尔伯特·埃菲莫夫,阿列克谢·伯科夫,亚历山大·波哥斯洛夫斯基,奥列格·乌尔祖姆采夫

All Articles