引导机器人穿过路径

问题描述 投票:0回答:4

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

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

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

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

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

robotics
4个回答
8
投票

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

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

Transformation

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


5
投票

我取得了很好结果的一种控制算法是“纯粹追求”。基本上,机器人尝试沿着路径移动到机器人前方固定距离的点。因此,当机器人沿着路径移动时,前瞻点也会前进。该算法通过将可能的路径建模为弧来补偿非完整约束。 较大的前视距离将产生更平滑的运动。然而,较大的前视距离会导致机器人走捷径,这可能会与障碍物发生碰撞。您可以通过实施称为矢量场直方图 (VFH) 的反应控制算法的想法来解决此问题。 VFH 基本上是将机器人推离近墙。虽然这通常使用某种测距传感器,但您可以推断障碍物的相对位置,因为您知道机器人姿势和障碍物位置。


1
投票

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

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

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


0
投票

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

Marc Toussaint 的机器人课程笔记是此类方法的良好来源。特别参见第7讲:

http://userpage.fu-berlin.de/mtoussai/teaching/10-robotics/

© www.soinside.com 2019 - 2024. All rights reserved.