平行泊车系统路径规划(1)

自动泊车系统的路径规划是车辆在获取了周围环境信息后开始的,进行路径规划的前提是系统检测到有效车位,然后结合车辆和车位的相对位置、车辆自身运动学、车辆初始位姿、道路边界等约束条件,以车辆参考点行驶轨迹为设计对象,生成起始点至泊车终止点的路径曲线,且路径曲线需满足连续、避障和易于跟踪等条件。
路径规划的基本结构如下图所示,首先,根据车辆相关参数确定所需最小车位尺寸;然后,结合车位尺寸和道路宽度信息,推导出理论可行泊车起始区域;接着,根据泊车过程的约束条件和泊车曲线类型,对理论可行起始区域进行更新,得到实际满足泊车要求的起始区域;最后,根据车辆起始点位置和泊车终止点位置,规划泊车路径。
在这里插入图片描述

1、平行泊车运动过程

平行泊车的运动过程可以表示为:首先,控制器控制车辆向前行驶,行驶过程中尽可能保持车辆与车位平行,保持车辆与右侧物体和左侧道路边界的安全距离,行驶过程中实时检测侧方车位是否满足要求;当检测到有效车位后,系统根据车辆此时的位姿信息和车位信息,控制车辆采用前进或后退的方式,行驶至满足泊车条件的可行起始区域;然后,在满足车辆自身运动学约束条件下,控制器控制车辆沿期望泊车路径行驶,直至车辆行驶到路径终止点,泊车结束时车身姿态与车位保持平行,并且前轮转角和方向盘应处于回正状态。
平行泊车运动过程示意图

2、车辆运动学分析

由于泊车过程车辆处于低速运动状态,车速一般不会超过10km/h ,假设泊车过程中车轮不会受到侧向力的影响,不会发生侧向滑动,因此可以用车辆运动学模型代替车辆模型。根据车辆运动学关系,以车辆后轴中心为参考,建立如下所示的车辆运动学模型:
在这里插入图片描述

车辆运动学模型

泊车过程为了避免车辆与周围其他物发生碰撞,需要清楚的知道车身四个顶点的坐标信息。根据上文计算得到的车辆后轴中心坐标,结合车辆横摆角信息,根据上图中的几何关系,可以得出车身各顶点坐标与后轴中心坐标的关系表达式:
在这里插入图片描述
车身各顶点与后轴中心几何关系

3、最小车位尺寸参数

以单步泊车路径为例,假设车辆后轴中心位于泊车路径终止点,控制车辆按照最小转弯半径向前行驶,如果车辆能顺利驶出车位且不与车位发生碰撞,由此可以计算出最小车位尺寸。根据图中的几何关系,可以计算出所需最小车位尺寸为:
在这里插入图片描述

最小车位尺寸示意图
由于前文的最小车位尺寸公式是按照车辆最小转弯半径确定的,车辆行驶到路径终止点时前轮转角还处于最大转角位置,泊车结束时还需要控制车辆原地转向。因此,单步泊车路径规划时,为了避免原地转向造成轮胎和转向机构的加剧磨损,需要保证泊车完成时前轮转角处于回正状态,需要适当增加车位长度
在这里插入图片描述
根据泊车允许的最大车速和前轮转角转速,可以计算出需要增加的车位长度为:
在这里插入图片描述

由于为了避免原地转向的情况,上述方法确定的车位尺寸考虑了前轮转角回正需要的行驶距离,计算出的车位尺寸偏大,现实情况的车位尺寸不易满足此条件。因此后续首先针对满足条件的车位场景,进行了单步泊车路径规划,然后考虑车位尺寸偏小场景,单步泊车路径不能满足泊车条件时,进行了两步泊车路径规划。当车辆检测到目标车位时,系统可根据检测的车位尺寸进行判断,选用合适的泊车路径。

  • 20
    点赞
  • 139
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论
阿克曼模型是用于描述车辆运动的一种数学模型,它可以用来推导平行泊车路径规划。下面是使用MATLAB进行阿克曼模型推导平行泊车路径规划的步骤: 1. 建立阿克曼模型 阿克曼模型可以用以下方程式来表示: dx/dt = v*cos(theta) dy/dt = v*sin(theta) dtheta/dt = v/L*tan(delta) 其中,dx/dt和dy/dt分别表示车辆在x和y方向的位移速度,v表示车辆的速度,theta表示车辆的方向角度,L表示车辆的轴距,delta表示车轮转角。 2. 设计控制器 为了使车辆能够平行泊车,需要设计一个控制器来控制车辆的转向和速度。在平行泊车过程中,车辆需要先向后退,然后再向前驶入泊车位。因此,控制器需要根据车辆的位置和姿态,决定车辆的转向和速度。 3. 设计路径规划算法 为了使车辆能够按照规定的路线行驶,需要设计一个路径规划算法。平行泊车路径规划算法可以采用以下步骤: - 确定车辆的起始位置和目标位置; - 根据车辆的位置和目标位置,计算出车辆需要沿着哪条路线行驶; - 根据车辆的位置和目标位置,计算出车辆需要进行的转向操作; - 根据车辆的当前速度和转向操作,计算出车辆的下一步行驶方向。 4. 编写MATLAB代码 根据以上步骤,可以编写MATLAB代码来实现阿克曼模型推导平行泊车路径规划。具体实现过程需要根据具体情况进行修改和完善。 下面是一个简单的MATLAB代码示例: ``` % 设置车辆参数 v = 5; % 车辆速度 L = 2.5; % 车辆轴距 % 设置起始位置和目标位置 start_pos = [0, 0]; % 起始位置 target_pos = [10, 0]; % 目标位置 % 计算需要行驶的路线 route = [start_pos; target_pos]; % 计算转向操作 delta = atan2(target_pos(2) - start_pos(2), target_pos(1) - start_pos(1)) - start_pos(3); % 计算下一步行驶方向 theta = start_pos(3) + v/L*tan(delta); % 计算车辆位移速度 dx = v*cos(theta); dy = v*sin(theta); % 更新车辆位置 new_pos = start_pos + [dx, dy, theta]; ``` 注意,以上代码仅为示例代码,具体实现需要根据具体情况进行修改和完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sailing_he

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值