这个仓库包含了一个在虚拟环境中实现自动并排停车系统的Python实现,包括路径规划、路径追踪和并排停车。代理(Agent)通过MPC控制器指导其在环境中的路线,并导向分配的停车位置。您可以在哔哩哔哩上找到视频教程 MPC:控制的诗与远方——一种生活与科技的并行视角。
开发自动停车系统的第一步是设计和开发一个能够利用OpenCV
库进行视觉渲染的环境。这个环境在environment.py
中以一个类的形式实现,并在开始时接收障碍物env = Environment(obs)
。可以使用env.render(x,y,angle)
来放置代理。下面显示了一个环境样本,您可以从1到24中选择停车位。
代理将使用A找到从开始到目标的路径。PythonRobotics 的这个A实现考虑了障碍物和机器人半径等参数。
找到在离散的100*100空间中的路径后,使用b样条将路径平滑并缩放到1000*1000的环境空间。结果是一组引导我们的代理的点!
汽车的运动模型是:
a: 加速度, δ: 转向角, ψ: 偏航角, L: 轴距, x: x位置, y: y位置, v: 速度
状态向量是:
x: x位置, y: y位置, v: 速度, ψ: 偏航角
输入向量是:
a: 加速度, δ: 转向角
MPC控制器根据模型控制车辆的速度和转向,车辆通过路径指导。这里有一个选项可以使用线性化模型进行MPC。在这种情况下,MPC
会在操作点周围线性化运动模型,然后进行优化。
这部分包含4个规则,代理必须根据停车位置选择。首先,代理会找到一个到停车位置的路径,然后计算到达角度。根据到达角度,代理选择一个坐标作为ensure1。之后,使用下面提到的2个圆方程,规划从ensure1到ensure2的停车路径。MPC控制代理,车辆在ensure2坐标处停车。
使用以下命令运行代码:
$ pip install -r requirements.txt
$ cd "CAR kinematic model"
$ python main_autopark.py --x_start 0 --y_start 90 --psi_start 0 --parking 7