代码之家  ›  专栏  ›  技术社区  ›  Hamza Yerlikaya

引导机器人通过路径

  •  11
  • Hamza Yerlikaya  · 技术社区  · 14 年前

    我有一个充满障碍的领域,我知道他们在哪里,我知道机器人的位置。使用路径查找算法,我计算出机器人要遵循的路径。

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

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

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

    编辑:我可以改变电机的速度,基本上机器人是一个Arduino加上Ardumoto,我可以提供0-255之间的值,在任何方向的电机。

    4 回复  |  直到 12 年前
        1
  •  8
  •   Jacob    14 年前

    你需要反馈线性化的差分驱动机器人。此文档在第2.2节中进行了说明。我在下面列出了相关部分:

    < Buff行情>

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

    其中v,_, x , y are the linear, 角速度和运动速度。L O_设置长度与 机器人的轴距尺寸。

    < /块引用> River机器人这个 document 在第2.2节中解释。我在下面列出了相关部分:

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

    Transformation

    其中V,γ, X , Y 是线性的, 角速度和运动速度。L O_设置长度与 机器人的轴距尺寸。

        2
  •  5
  •   John Wang    14 年前

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

    向前看的距离越大,移动就越平稳。然而,更大的向前看距离将导致机器人切角,这可能会与障碍物碰撞。您可以通过实现称为向量场直方图(VFH)的无功控制算法来解决这个问题。VFH基本上把机器人推离封闭的墙壁。虽然这通常使用某种测距传感器,但您可以推断障碍物的相对位置,因为您知道机器人的姿势和障碍物的位置。

        3
  •  1
  •   ben    14 年前

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

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

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

    给定路径上任何特定转弯的角度和将要使用的转弯半径,您可以计算出与该节点的距离,在该距离中,您将减慢内侧车轮的速度。

        4
  •  0
  •   D.J.Duff    12 年前

    优化方法是处理这一问题的一种非常普遍的方法。

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

    MarcToussaint的机器人学课程笔记是这种方法的一个很好的来源。具体见第7课: http://userpage.fu-berlin.de/mtoussai/teaching/10-robotics/