11

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

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

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

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

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

4

4 回答 4

8

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

该项目所需的模拟机器人是一个有界速度的差动驱动机器人。由于差动驱动机器人是非完整的,因此鼓励学生使用反馈线性化将其算法的运动控制输出转换为控制差动驱动机器人。变换如下:

转型

其中 v, ω, x , y是线速度、角速度和运动速度。L 是与机器人的轴距尺寸成比例的偏移长度。

于 2010-05-25T17:33:53.447 回答
5

我使用的一种控制算法取得了相当不错的效果,即纯粹的追求。基本上,机器人试图沿着路径移动到机器人前方固定距离的一点。因此,当机器人沿着路径移动时,前瞻点也会前进。该算法通过将可能的路径建模为弧来补偿非完整约束。

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

于 2010-06-18T07:16:26.730 回答
1

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

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

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

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

于 2010-05-25T14:41:39.870 回答
0

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

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

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

于 2013-01-24T12:07:28.767 回答