【问题标题】:Guiding a Robot Through a Path引导机器人通过路径
【发布时间】:2011-02-23 17:25:48
【问题描述】:

我有一个充满障碍物的场地,我知道它们的位置,并且我知道机器人的位置。使用寻路算法,我计算出机器人要遵循的路径。

现在我的问题是,我将机器人从一个网格引导到另一个网格,但这会产生不太平滑的运动。我从 A 开始,将鼻子转到 B 点,笔直移动直到到达 B 点,冲洗并重复直到到达最后一点。

所以我的问题是:在这样的环境中使用什么样的技术进行导航,以便获得平稳的运动?

机器人有两个轮子和两个马达。我通过反转电机来改变电机的方向。

编辑:我可以改变电机的速度,基本上机器人是 arduino plus ardumoto,我可以为任一方向的电机提供 0-255 之间的值。

【问题讨论】:

  • 如果您只想平滑运动,请尝试为要遵循的路径计算样条曲线
  • @steven 这实际上是我想要的,但我不知道如何将曲线映射到电机速度。
  • 这将是一个基于曲线在当前轨迹上的斜率的比率;本质上,一条直线的轮马达功率比为 1:1,左右为 0:1 和 1:0。因此,弯曲转弯是分数,因此向左轻轻转弯可能是 0.75:1。

标签: robotics robot


【解决方案1】:

您需要对差分驱动机器人进行反馈线性化。这个document 在第 2.2 节中解释了它。我在下面包含了相关部分:

所需的模拟机器人 项目是一个差动驱动机器人 有界的速度。自从 差动驱动机器人是 非完整的,鼓励学生使用反馈线性化 转换运动控制输出 从他们的算法来控制 差动驱动机器人。这 转换如下:

其中 v, ω, x, y 是线性的, 角速度和运动速度。大号 是与 机器人轴距尺寸。

【讨论】:

  • 谢谢!想我会在这里重新发布它而不是链接到缓存的副本。
【解决方案2】:

pure pursuit 是我使用过的一种控制算法,结果非常好。基本上,机器人试图沿着路径移动到机器人前方固定距离的一点。因此,当机器人沿着路径移动时,前瞻点也会前进。该算法通过将可能的路径建模为弧来补偿非完整约束。

较大的前瞻距离将产生更平稳的运动。但是,较大的前瞻距离会导致机器人偷工减料,从而可能与障碍物发生碰撞。您可以通过实施称为矢量场直方图 (VFH) 的反应控制算法的想法来解决此问题。 VFH 基本上将机器人推离封闭的墙壁。虽然这通常使用某种测距传感器,但您可以推断障碍物的相对位置,因为您知道机器人的姿势和障碍物的位置。

【讨论】:

    【解决方案3】:

    我对此的初步想法(我在工作,所以不能花太多时间):

    这取决于你想要或需要你的角落有多紧(这取决于你的寻路器给你的障碍物距离)

    根据机器人的宽度,您可以根据每个车轮的速度计算转弯半径。假设您想尽可能快地行驶并且打滑不是问题,您将始终将外轮保持在 255,并将内轮降低到为您提供所需转弯半径的速度。

    考虑到路径上任何特定转弯的角度和您将使用的转弯半径,您可以计算出距内轮减速的节点的距离。

    【讨论】:

      【解决方案4】:

      优化方法是一种非常通用的处理方法。

      使用您计算的路径作为通用非线性优化算法(您的选择!)的输入,其成本函数由答案轨迹与输入轨迹的接近程度以及对非完整约束的遵守情况以及任何您想要强制执行的其他约束(例如远离障碍物)。优化算法也可以使用从原始轨迹构造的轨迹进行初始化。

      Marc Toussaint 的机器人课程笔记是此类方法的一个很好的来源。具体参见第 7 讲: http://userpage.fu-berlin.de/mtoussai/teaching/10-robotics/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-27
        • 1970-01-01
        相关资源
        最近更新 更多