二、了解差动机器人的基础
在上一章中,我们讨论了 ROS 的基础知识,如何安装它以及 Gazebo 机器人模拟器的基础知识。 正如我们已经提到的,我们将从头开始创建一个自动轮式机器人。 我们将要设计的机器人是差动机器人,该机器人涉及在机器人底盘的相对两侧具有两个轮子,从而可以通过更改两个轮子中每个轮子的速度来调整机器人的方向。
在对机器人进行编程之前,最好先了解差动轮机器人背后的基本思想和术语。 本章将为您提供有关如何数学分析机器人以及如何求解机器人运动学方程的想法。 运动方程可帮助您根据传感器数据预测机器人的位置。
在本章中,我们将介绍以下主题:
- 差动机器人的数学建模
- 差动机器人的正向运动学
- 差动机器人的逆向运动学
机器人的数学建模
移动机器人的重要组成部分是其转向系统。 这将帮助机器人导航其环境。 差速驱动系统是最简单,最具成本效益的转向系统之一。 差动机器人由两个安装在同一轴上的主轴组成,并由单独的电动机控制。 差动驱动系统/转向系统是非完整系统,这意味着它对改变机器人的姿势有限制。
汽车是非完整系统的一个例子,因为它不能不改变姿势就不能改变位置。 让我们看看这种类型的机器人是如何工作的,以及如何根据其数学模型对它进行建模。
差动驱动系统和机器人运动学简介
机器人运动学是对运动数学的研究,没有考虑影响运动的力。 它主要处理控制系统的几何关系。 机器人动力学是对机器人运动的研究,其中模拟了机器人运动中涉及的所有力。
移动机器人或车辆具有六个自由度(DOF),这些自由度由姿势(x, y, z
,侧倾,俯仰和偏航)表示。 这些自由度包括位置(x, y, z
)和姿态(侧倾,俯仰和偏航)。 横滚表示横向旋转,俯仰表示向前和向后旋转,偏航(称为航向或方向)表示机器人在 xy 平面上的移动方向。 差动机器人在水平面上从x
移到y
,因此 2D 姿态主要包含x
,y
和θ
,其中θ
是指向机器人向前方向的机器人航向。 此信息足以描述差分机器人姿态:
全局坐标系中机器人在x
,y
和θ
中的姿态
在差动机器人中,可以通过调节左侧和右侧的两个独立控制的电动机(分别称为V_left
和V_right
)的速度来控制运动。 下图显示了市场上几个流行的差动机器人:
机器人 Roomba
Roomba 系列自动吸尘器是 iRobot 最受欢迎的差动机器人。
Pioneer 3-DX 是欧姆龙自适应移动机器人公司流行的差速驱动研究平台。
差动机器人的正向运动学
具有差动驱动系统的机器人的正向运动学方程用于解决以下问题:
如果机器人在时间t
站立在x
,y
,θ
的位置,请确定t +δt
处的姿势x'
,y'
,θ'
(给定控制参数V_left
和V_right
)。
该技术可以由机器人计算以遵循特定的轨迹。
正向运动学方程的解释
我们可以从制定正向运动学解决方案开始。 下图是机器人的一个轮子的图示:
机器人的单个轮子沿局部 y 轴旋转
围绕 y 轴的运动称为滚动; 其他的一切都称为单据。 假设在这种情况下不会发生打滑。 车轮完成一整圈时,它的距离为2πr
,其中r
是车轮的半径。 我们将假设运动是二维的。 这意味着表面平坦且平坦。
当机器人要执行转弯运动时,机器人必须绕着沿其共同的左右车轮轴的点旋转。 机器人旋转的点称为 ICC - 瞬时曲率中心。 ICC 位于机器人外部。 下图显示了差动机器人相对于其 ICC 的车轮配置:
差动机器人的车轮配置
运动方程的推导的中心概念是机器人的ω
角速度。 机器人上的每个车轮都沿一个圆的圆周围绕 ICC 旋转,车轮半径为r
。
车轮速度为v = 2πr / T
,其中T
是完成 ICC 整圈的时间。ω
角速度定义为2π / T
,通常具有每秒的弧度(或度)单位。 结合v
和ω
的等式,得出ω= 2π / T
,我们可以得出以下结论:
线速度方程
下图显示了差动驱动系统的详细模型:
差动驱动系统的详细图
如果将前面的方程式应用到两个车轮,结果将是相同的,即ω
:
差动驱动轮方程
在此, R
是 ICC 与轮轴中点之间的距离, l
是轮轴长度。 在求解ω
和R
之后,我们得到以下结果:
用于找到从 ICC 到机器人中心的距离以及机器人角速度的方程式
前面的等式对于解决正向运动学问题很有用。 假设机器人以ω
的角速度移动δt
秒。 这将导致机器人的方向或航向更改为以下内容:
寻找方向变化的方程式
在这里,ICC 旋转的中心由基本三角函数给出,如下所示:
找到 ICC 的方程式
围绕 ICC 旋转机器人ωδt
度
给定起始位置x, y
,可以使用 2D 计算新位置x', y'
。 旋转矩阵。 以δt
秒的角速度ω
围绕 ICC 旋转在t +δt
时产生以下位置:
用于计算机器人新位置的方程式
给定ω
,δt
和R
,可以根据公式(6)和(8)计算新姿势x'
,y'
和θ'
。
ω
可以根据式(5)算出。 Vr
和V1
通常更难准确测量。 代替测量速度,可以使用称为车轮编码器的传感器来测量每个车轮的旋转。 来自车轮编码器的数据是机器人的里程表值。 这些传感器安装在车轮轴上,并针对车轮旋转的每个角度(每个角度约为 0.1 毫米)传递二进制信号。 在第 6 章,“执行器和传感器与机器人控制器的接口连接”中,我们将详细介绍车轮编码器的工作原理。 这些信号被馈送到计数器,使得vδt
为从时间t
到t +δt
的距离。 我们可以编写以下内容:
n * step = vδt
由此,我们可以计算出v
:
根据编码器数据计算线速度的方程式
如果将方程式(9)插入方程式(3)和(4),我们将得到以下结果:
根据编码器值计算R
的公式
在此,nl
和nr
是左轮和右轮的编码器计数。Vl
和Vr
分别是左轮和右轮的速度。 因此,机器人站立姿势(x
,y
,θ
)并移动nl
和nr
在δt
的时间范围内计数; 新姿势(x'
,y'
,θ'
)通过以下公式得出:
根据编码器值计算机器人位置的方程式
在哪里,
根据编码器值计算 ICC 和其他参数的公式
得出的运动方程主要取决于机器人的设计和几何形状。 不同的设计可能导致不同的方程式。
逆向运动学
前向运动学方程在给定的车轮速度下提供了更新的姿态。 现在我们可以考虑反问题了。
在时间t
站立姿势(x
,y
,θ
)并确定V_left
和V_right
控制参数,以使t +δt
时的姿态为(x'
,y'
和θ'
)。
在差动驱动系统中,这个问题可能并不总是可以解决的,因为仅通过设置车轮速度就无法将这种机器人移动到任何姿势。 这是由于非完整机器人的限制。
在非完整机器人中,如果我们允许一系列不同的运动(V_left
,V_right
)运动,则有一些方法可以增加约束运动性。 如果插入方程(12)和(15)中的值,我们可以确定一些可以编程的特殊运动:
- 如果
V_right = V_left => nr = nl => R = ∞ => ωδT= 0
,则表示机器人沿直线运动,θ
保持不变 - 如果
V_right = -V_left => nr = -nl => R = 0 => ωδt = 2nl * step / l
和ICC = [ICC[x], ICC[y]] = [x, y] => x'= x, y'= y, θ' = θ + ωδt
,这意味着机器人会绕着 ICC 旋转,即θ
均可到达,而x, y
保持不变
结合这些操作,可以使用以下步骤从起始姿势达到任何目标姿势:
- 旋转直到机器人的方向与从起始位置到目标位置的直线重合
V_right = -V_left = V_rot
。 - 直行直到机器人的位置与目标位置一致
V_right = V_left = V_ahead
。 - 旋转直到机器人的方向与目标方向一致
V_right = -V_left = V_rot
。 在此,可以任意选择V_rot
和V_ahead
。
在接下来的章节中,我们将看到如何使用 ROS 来实现机器人的运动学方程。
总结
本章介绍了差动机器人的基本概念,并探讨了如何推导此类机器人的运动学方程。 在本章的开头,我们了解了差动机器人的基础知识,然后讨论了在这些机器人中使用的正向运动学方程。 这些方程式用图表解释。 在查看了正向运动学方程后,我们研究了差动机器人的逆向运动学方程。 我们还研究了逆运动学方程的基础。
在下一章中,我们将看到如何使用 ROS 和 Gazebo 创建自动移动机器人的仿真。
问题
- 什么是完整和非完整配置?
- 什么是机器人运动学和动力学?
- 差动机器人的 ICC 是多少?
- 差分机器人中的正向运动方程是什么?
- 差分机器人中的逆向运动方程是什么?
更多信息
有关运动学方程式的更多信息,请参见这个页面。