Lesson 4: Move control-差速底盘运动控制模型

差速控制底盘的运动,完全依赖于对两个驱动轮的控制,基本的控制方法如下:

  • 前进:控制两个驱动轮同时朝前转动
  • 后退:控制两个驱动轮同时朝后转动
  • 左转:控制左侧驱动轮速度小于右侧驱动轮速度
  • 右转:控制左侧驱动轮速度大于右侧驱动轮速

在实际安装中,一般两个驱动马达刚好对称安装,这时候一般要把其中一个马达的控制线的正负极反向安装,才能达到上面的控制效果,具体连接方法可以参见Lesson 2: Hardware diagram。只有理解相应的运动学模型,我们才能做的精确的控制,下面我们开始讨论差速底盘的运动学模型

1.运动学模型

1.1 右手坐标系

机器人的运动一定是在一定的坐标系中进行的,而ROS使用的是右手坐标系,所以我们需要首先了解一下右手坐标系

右手坐标系如上图所示,右手握拳,大拇指指向了Z轴,食指指向了X轴,中指指向了Y轴,对应到我们在平面运动的机器人,运动控制就是控制其在世界坐标系的XY轴平面的运动,Z轴方向可以看做是静止的,也就是在运动过程中Z轴方向的线速度永远为0,从机器人坐标系来看Y轴方向的线速度也为0,但角速度则是反过来的,Z轴方向的角速度不为0,而XY轴方向的角速度都为0;

1.2单个驱动轮运动分析

对于履带式的底盘,如果单纯的看一个驱动轮的运动来看,其在世界坐标系内Y轴也是静止的,只有X轴方向的运动,也就是Y轴方向的速度也为0

1.3 双驱动轮差速底盘运动分析

由于两个驱动速度的不同,会使得整个底盘朝着速度慢的一边转向,基于这种原理,我们可以控制两个驱动马达的速度来控制整个机器人的转向,如果我们想控制机器人能够走直线,也就是必须是两个驱动轮的速度是一样的,否则就会转弯。如下图所示,在左右轮YZ方向速度为0的情况下,右侧驱动轮速度大于左侧驱动轮速度,从整个机器人来看将向左转弯。

基于这样的原理在机器人控制的时候,我们会有两个问题需要解决

  • 给定机器人线速度和角速度,如何分解为两个驱动轮的控制参数
  • 如何根据两个驱动轮的速度值,推算出机器人的线速度和角速度,进而推算出里程数据,暨航迹推演

 

2.分解速度到两个驱动轮的控制参数

机器人的速度是指两个相邻的控制时刻之间的速度,由于ROS本身是依赖于高频率的发送控制命令来精确控制机器人的,我们常用的控制频率都是>10hz的,在这么快的频率下,我们可以假设机器人在这么短的时间内走过的弧度用两个位置之间的直线来代替。基于上述假设,我们可以引进机器人坐标系。

假设在机器人坐标系的移动速度为V,时间间隔为Δt。那么在机器人坐标系内行进的距离v*Δt,

假设两个驱动轮的轮距是l,则而左侧轮行进的距离为v*Δt-l*sin(θ),进而推导出左轮的线速度我Vl=(v*Δt-l*sin(θ))/Δt;而右轮的线速度为Vr=(v*Δt+l*sin(θ))/Δt

3.航迹推演

3.1 根据速度推演航迹

 

假设在机器人坐标系的移动速度为V角速度为w,时间间隔为Δt。那么在机器人坐标系内行进的距离v*Δt,那么分解到世界坐标系内x轴和y轴的行进距离就是

Δx=v*Δt*cos(θ)

Δy=v*Δt*sin(θ)

旋转的弧度为:

Δθ=w*Δt

那么一段时间内的累计里程暨为:

x=x+v*Δt*cos(θ)

y=y+v*Δt*sin(θ)

θ=θ+Δθ

以上是根据机器人的速度在理想状态下根据线速度和角速度来推演航迹,但实际情况是机器人并不一定按照设定的控制速度行进,而会有误差,这个时候我们更多的是使用传感器数据来推演航迹,比如激光雷达,深度相机,电机的码盘,超声波,陀螺仪等传感器数据,有的机器人只使用其中一种,高级的机器人则采用多种传感器数据融合算法来提高航程推演的准确性。这里我们介绍最常用的基于电机码盘数据的航迹推演。

3.2 根据码盘数据进行推演航迹

码盘直接给出了两个驱动马达在Δt时间段内各自行进的距离,旋转的角度可以进行如下运算,

sin(Δθ)=((Δxr-Δxl)/2)/l

由于Δt非常短,行进的距离也很短,所以做如下的近似

Δθ=sin(Δθ)=((Δxr-Δxl)/2)/l

整个机器行进的距离则是两个马达行进距离的平均值(Δxl+Δxr)/2

那么映射到世界坐标系上的XY轴则为:

Δx=cos(θ)*(Δxl+Δxr)/2

Δy=sin(θ)*(Δxl+Δxr)/2

那么一段时间内的累计里程暨为:

x=x+cos(θ)*(Δxl+Δxr)/2

y=y+sin(θ)*(Δxl+Δxr)/2

θ=θ+Δθ

理解了运动模型,我们就可以按照模型的原理来控制机器人的运动了。

发表评论

Scroll to top
%d 博主赞过: