我有一个充满障碍物的场地,我知道它们的位置,并且我知道机器人的位置。我使用寻路算法计算机器人要遵循的路径。
现在我的问题是,我正在引导机器人从一个网格到另一个网格,但这会产生一个不太平滑的运动。我从 A 点开始,将鼻子转向 B 点,直线移动直到到达 B 点,冲洗并重复,直到到达最后一点。
所以我的问题是:在这样的环境中使用什么样的技术来导航,以便我获得平滑的运动?
机器人有两个轮子和两个电机。我通过反向转动电机来改变电机的方向。
编辑:我可以改变电机的速度,基本上机器人是 arduino 加 ardumoto,我可以在任一方向向电机提供 0-255 之间的值。
您需要对差速驱动机器人进行反馈线性化。这个文档在第 2.2 节中对此进行了解释。我在下面包含了相关部分:
所需的模拟机器人 项目是差动驱动机器人 以有界速度。自从 差动驱动机器人是 非完整,鼓励学生使用反馈线性化 转换运动控制输出 从他们的算法来控制 差动驱动机器人。这 转变如下:
其中 v, ω, x, y 是线性的, 角速度和运动速度。 L 是与以下成比例的偏移长度 机器人轴距尺寸。
这取决于你想要或需要你的角落有多紧(这取决于你的寻路器给你与障碍物的距离)
给定机器人的宽度,您可以根据每个轮子的速度计算转弯半径。假设您想要尽可能快地行驶并且打滑不是问题,那么您将始终将外侧车轮保持在 255,并将内侧车轮降低至能够提供所需转弯半径的速度。
给定路径上任何特定转弯的角度以及您将使用的转弯半径,您可以计算出距该节点的距离,在该节点处您将减慢内侧车轮的速度。