panosim智能驾驶比赛——水平标准车位自动泊车

目录

思路

从泊车点到停车位

摆正车辆

将Vehicle_1行驶至泊车点

结果展示


 

这是我第一次接触这种东西,无论是自动驾驶还是panosim、matlab和simulink,赛事方给了我们相关的Demo,我研究良久,还是没完全看明白。最后只能选择我自己用比较平民的办法来完成这个题目。

        以下是预赛题目,我需要将上面的主车(以下称为Vehicle_1)停入下面的两车(以下称为Vehicle_3和Vehicle_5)之间的车位之中,途中不允许发生磕碰,停好后车辆中心线与车位中心线之间的夹角不能超过15°,车的边缘(外圈的蓝青色长方体)不超过车位内边缘,车辆中心与车位中心位置偏离少于 20cm 。

panosim智能驾驶比赛——水平标准车位自动泊车_第1张图片

 

思路

从泊车点到停车位

首先考虑如何从一个特定的地方(以下称为泊车点)停入车位(以下称为停车位)。

这里我参考了知乎上关于水平标准车位的泊车方法:真实道路中,如何倒车、侧方停车? - 八路车的回答 - 知乎

经过我自己的思考,将这个过程大致分为五个步骤:

  1. 行驶至泊车点。这里我将泊车点设置为在Vehicle_1的后车轮与Vehicle_3的车尾大致平齐的位置,此时的车前轴中心点(x0,y0)=(-48.0,10.93)。(以下将Vehicle_1的车前轴中心点的横坐标和纵坐标分别称为x0和y0,泊车点的横纵坐标称为x1和y1);
  2. 方向盘向左打尽(Panosim有bug,方向盘的转角可以超过[-10,10] rad);
  3. 行驶至车辆摆角大概为30°~45°后直线倒车;
  4. Vehicle_1的左后角差不多到车位底部时,方向盘向右打尽,摆正位置;
  5. 摆正后,取决于车辆与车位的相对位置,稍稍向前或者向后调整车辆至最合适的位置

实现的流程图如下:

panosim智能驾驶比赛——水平标准车位自动泊车_第2张图片

实际运行效果如下


摆正车辆

赛题车辆的初始角度有可能不是那么正,我们需要将车辆摆正,与车位平行,使泊车更容易。

结合实际驾驶,假设车头向上摆,我们只需要向左打方向盘,当车辆差不多正的时候,再向右拨方向盘,使车身摆正,然后方向盘复为原位即可。

实现的流程图如下:

panosim智能驾驶比赛——水平标准车位自动泊车_第3张图片


将Vehicle_1行驶至泊车点

我跟我的队友考虑过使用已知曲线去拟合车辆行驶轨迹,然后通过路径规划和速度规划使Vehicle_1行驶至泊车点。但是由于我没(bu)有(xue)基(wu)础(shu),虽然找到很多相关的论文,论文的内容也相当明确,我却没有办法用matlab和simulink将它们表达出来。最后经队友启发,将上面的摆正车辆和停车过程的方法稍加改进,即可按需行驶至泊车点。

我的思路是:

  1. 先摆正Vehicle_1;
  2. 判断y0和y1的关系,如果y0>y1,则表明Vehicle_1的位置在泊车点上方(鸟瞰视角),方向盘向左打;反之则相反操作;
  3. 如果在这个过程中没有到达步骤4的条件,那么当Vehicle_1向上或者向下摆至45°左右(角度自己控制,不宜过大)时,Vehicle_1改为直行;
  4. 当y0跟y1差不多时(一般要稍稍超过,具体数值要调参得出),车辆摆正;
  5. 判断x0和x1的关系,以此判断车辆需要向前还是向后开,以行驶至泊车点;
  6. 行驶至泊车点后,用上面介绍过的停车方法停到停车位上。

这里需要注意的问题是,用于判断车辆当前角度的参数yaw(偏航角)在某些情况下(绝对值)会无限增大,超过 [-π,π] 的区间,比如方向盘一直往左或者往右打,以至于车辆有开始转圈的趋势的时候。所以在判断的时候,不仅仅需要在 [-π,π] 的区间判断,根据实际情况适当地调整范围。

这里我将情况分为4类:

  向左开 向右开
yaw>0    
yaw<0    

panosim智能驾驶比赛——水平标准车位自动泊车_第4张图片


结果展示

 

 

你可能感兴趣的:(panosim)