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

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

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

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

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

有帮助吗?

解决方案

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

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

Transformation

其中v,ω, X, y 是线性,角和运动学速度。 L是与机器人的车轮基尺相对的设置长度。

其他提示

一种控制算法,我的结果很好 纯粹的追求. 。基本上,机器人试图沿着机器人前方的固定距离移至路径。因此,随着机器人沿着路径的移动,前方的外观也随之发展。该算法通过将可能的路径建模为ARC来补偿非全面的约束。

更大的前景距离将产生更平稳的运动。但是,更大的前景将导致机器人切断拐角,这可能会与障碍物相撞。您可以通过从称为矢量场直方图(VFH)的反应性控制算法实现想法来解决此问题。 VFH基本上将机器人从封闭的墙壁上推开。尽管这通常使用某种范围寻找传感器,但您可以推断障碍物的相对位置,因为您知道机器人姿势和障碍物位置。

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

这取决于您想要或需要的角度(这取决于您的路径发现者从障碍物中给您多少距离)

考虑到机器人的宽度,您可以根据每个车轮的速度来计算转弯半径。假设您想尽可能快地走,而滑板不是问题,那么您将始终将外部车轮保持在255,并将内轮降低到为您带来所需的转弯半径的速度。

考虑到任何特定转向路径的角度和将要使用的转弯半径,您可以算出距离该节点的距离。

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

将计算的路径用作通用非线性优化算法的输入(您的选择!),其成本函数由接近输入轨迹的答案轨迹组成,并遵守非独立限制,以及您的任何其他约束。想要执行(例如远离障碍)。还可以使用原始轨迹构建的轨迹初始化优化算法。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top