自动驾驶汽车系统入门——运动科学自行车科学模型和动力学自行车模型简易解释

自动驾驶汽车系统入门——运动科学自行车模型和动力科学自行车模型

在简要了解了PID控制以后,我们就要接触一些现代的控制算法。
在了解高级的车辆控制算法之前,掌握车辆运动模型是非常有必要的。
车辆运动模型就是一类能够描述我们的车辆的运动规律的模型。
显然,越复杂的模型就越接近现实中的车辆运动规律,本节我们一起了解一下两个广泛使用的车辆模型
运动学自行车模型(Kinematic Bicycle Model) 和 动力学自行车模型(Dynamic Bicycle Model)
无人自动驾驶系统
无人自动驾驶系统往往分成感知,决策和控制三个模块,
其中无人车的路径规划和底层控制是工作在不同的层的,路径规划层往往会基于更加高层的(感知层,定位层)的信息和底层的(控制层)的实时信息指定行驶的路径,
那么从路径规划层传来的就是车辆的参考路径,控制系统需要做的就是严格按照这个参考路径(以及速度等控制输入量)去驾驶我们的车辆,
一般来说,我们会用多项式的行驶来描述这个路径曲线,如下所示的三次多项式就可以描述绝大多数的路径了:
请输入图片描述
自行车模型(Bicycle Model)
首先我们要简化汽车运动,其中自行车模型就是简单且有效的简化方式。自行车模型基于如下几个假设:
车辆在垂直方向的运动被忽略掉了,也就是说我们描述的车辆是一个二维平面上的运动物体(可以等价与我们是站在天空中的俯视视角)
我们假设车辆的结构就像自行车一样,也就是说车辆的前面两个轮胎拥有一直的角度和转速等,同样后面的两个轮胎也是如此,那么前后的轮胎就可以各用一个轮胎来描述
我们假设车辆运动也和自行车一样,这意味着是前面的轮胎控制这车辆的转角
首先我们简单的在一个二维平面上描述一个车辆:
!
其中 θ是其在 Yaw 方向的偏转角度,它是相对于 x 轴的逆时针方向的角度,v 是 θ 方向的速度,L 是车辆的轴距(前后轮胎的距离), (x,y) 是车辆的坐标。
from future import print_function

import math

class KinematicModel(object):
def init(self, x, y, psi, v, f_len, r_len):
self.x = x
self.y = y
self.psi = psi
self.v = v

    self.f_len = f_len
    self.r_len = r_len

def get_state(self):
    return self.x, self.y, self.psi, self.v

def update_state(self, a, delta, dt):
    beta = math.atan((self.r_len / (self.r_len + self.f_len)) * math.tan(delta))

你可能感兴趣的:(python机器人,自动驾驶,人工智能,几何学)