自动泊车的自动驾驶控制算法

本文详细介绍了自动泊车系统(APA)的工作原理,包括车位扫描、路径规划、决策控制模块,以及硬件架构和控制算法设计。重点阐述了传感器使用、泊车过程中的人机交互和控制流程,为自动驾驶技术提供了基础.

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 自动泊车系统

自动泊车系统(AutomatedParkingASSiSt,APA)利用车辆搭载的传感器感知车辆周边环境,扫描满足当前车辆停放的障碍物空间车位或线车位,并通过人机交互(HumanMachine Interface,HMI)获取驾驶员对目标车位的选择或自动确定目标车位,自动规划泊车路径,通过控制器向车辆执行机构发送横向及纵向运动控制指令,最终实现车辆安全、准确、高效地泊入目标车位,如图1所示。

为实现上述自动泊车功能,一般将APA系统分为车位扫描、路径规划以及决策控制三个模块,对各模块功能描述如下:

(1)车位扫描模块:利用车辆配置的传感器对障碍物边界(车、路沿等)形成的障碍物边界车位和有车位线标记的线车位进行识别和扫描,输出车位地图信息和车辆定位信息。同时按照车位类型对上述两类车位进行区分,又可分为平行车位、垂直车位及倾斜车位三种类型。

目前主流APA系统主要是通过配置的超声波雷达和摄像头传感器实现车位扫描,两种类型的APA系统对比如表1所示。

由表1可以看出,超声波雷达只能对障碍物边界进行测距,对车位线无法识别,而采用360°全景式摄像头弥补了线车位无法识别扫描的缺点,并且通过对图像信息的分析处理能提供更丰富的障碍物类型等信息。因此,在超声波雷达和摄像头融合的APA系统中,对线车位的识别率大幅增加,即车位检出率得到提高。另外,将3609全景式影像(AroundViewMonitor,AVM)与APA系统在人机交互方面进行融合设计,为用户在泊车过程中提供全景式视角,用户能通过全景式影像界面直接选择泊车的目标车位,包括空旷区域自选车位、APA系统扫描出多个可泊车位供自选等场景,提升了用户的体验感与参与感。

(2)路径规划模块:根据车位扫描模块输出的地图信息,结合车辆运动学模型,对车辆泊入目标车位的路径进行规划。

(3)决策控制模块:根据车位扫描模块提供的地图信息以及路径规划模块提供的路径信息对车辆进行运动控制,使车辆按照路径规划的轨迹进行跟踪,实现车辆安全准确泊入。决策控制模块需同时对车辆的横向运动和纵向运动进行控制。

2.APA硬件架构

目前市场上典型的APA硬件架构如图2所示,主要包括传感器、集成控制器、人机交互(HMI)及执行机构。

APA系统通常配置12个超声波雷达,其中包含4个长距离超声波雷达,实现对车身两侧障碍物距离的探测:8个短距离超声波雷达,实现对车前和车后障碍物距离的探测,如图3所示。

同时,APA系统与AVM系统共用4个高清鱼眼摄像头,实现车辆前后左右四处视角图像的采集以及360О全景式影像的获取,如图4所示。

3. APA泊车控制算法设计

3.1 APA算法功能需求分析

自动泊车系统APA开启后,利用配置的传感器(超声波雷达、360О环视摄像头)自动搜索周边环境中的可停车位,在驾驶员确认目标车位后,APA自动进行路径规划并通过决策控制模块对车辆横、纵向运动进行控制,包括方向盘转角、档位、车速等方面,控制车辆自动泊入目标车位。结合使用场景和功能控制过程,对APA算法的功能需求分析如下:

(1)系统适用车速较低(一般在5km/h以下)的工况。

(2)车辆能够实现包括平行车位、垂直车位以及倾斜车位三种类型车位泊车入库功能。

(3)泊车过程中APA系统能够通过对EPS、ESP、EMS、TCU、EPB、VCU的控制实现对车辆横、纵向运动的控制。

(4)驾驶员可以利用HMI对APA功能的开启和关闭进行控制。

(5)在整个泊车过程中,涉及用户操作部分由HMI明确提示,形成良好的人机交互。

3.2 APA控制系统接口确定

根据APA算法功能需求和硬件架构,确定APA控制系统输入/输出接口及信号如图5所示。

3.3 APA平行泊车控制算法设计

3.3.1 扫描车位校验模块

扫描车位校验模块主要对环境感知模块扫描识别后输出的车位进行校验。结合传感器输出的车位信息(B点坐标)和车身参数,以车辆泊入过程安全无碰撞为约束条件,实时计算当前车辆能够成功泊车入库的最短泊车空间距离(L)。将当前车辆实际可泊入车位尺寸进行比较,若满足可泊入条件,则将当前识别出的车位进行输出,否则继续寻找可泊车位。以平行泊车为例,泊车过程如图6所示。

车辆无碰撞轨迹连续最短泊车空间为:

式中:r为车辆后悬距离:Rmin为内侧轮最小转弯半径:d为车宽:By为待校验车位B点y坐标:l为车头到后轴距离。

经校验后的可泊车位信息经坐标转换传输给控制决策模块,一方面,可以用于AVM显示,利用HMI提示实现驾驶员对可泊车位的选择:另一方面,可用于路径规划,便于后续的算法处理和车辆运动控制。

3.3.2 泊车初始位置校验模块

泊车初始位置校验模块主要对扫描车位校验模块输出的车位进行二次校验。基于车辆当前位置和需要泊入车位的位置,以两圆相切理论为规划约束对当前车位是否可泊入进行校验,如图7所示。

R2圆弧通常设置为车辆最小转弯半径,以两圆相切和车辆参数为约束,计算出允许泊车的初始位置范围为(Px,Py)。将当前车辆位置与(Px,Py)进行比较,如在范围内,则说明当前车位满足可泊入条件,否则继续寻找可泊入车位。

3.3.3 泊车路径规划模块

在利用HMI接口实现最终泊车车位的选择后,车辆在控制决策系统的控制下逐渐停稳。基于两圆相切原理,泊车路径规划模块主要完成车辆当前位置即预备倒车起始位置,到泊车终点目标位置的局部路径规划,形成圆弧-圆弧组合形式的泊车路径,如图8所示。

3.3.4 轨迹跟踪控制模块

轨迹跟踪控制模块基于泊车路径规划模块输出的拟合泊车路径,生成车辆横向控制及纵向控制的目标值,即方向盘转角、档位、车位、加速度等输出信号,同时根据车辆实时反馈的状态信号进行修正控制,保证车辆实时准确地跟踪规划轨迹。

3.3.5 泊车状态控制模块

泊车状态控制模块的主要功能是进行泊车状态逻辑的控制,需要根据HMI、车辆与车位的相对位置关系、驾驶员的操作等信息动态调整和反馈。

泊车主要状态包括:

(1)0FF,泊车功能关闭:

(2)Standby,泊车功能开启准备:

(3)ParkingSpaceSearc一,寻找车位:

(4)ParkingSpacehppearA,车位有效:

(5)hStuParkinghAAiAt,辅助泊车:

(o)ParkingFiniA一,泊车完成:

(7)Fail,泊车失败。

3.3.6 HMI交互显示模块

HMI交互显示模块的功能是根据hPh的运行状态,与驾驶员进行交互,包括车位扫描结果的显示、泊入目标车位的选择等。

4.结语

本文结合主流的自动泊车硬件平台,对自动泊车控制系统进行了设计。基于车辆配置确定控制算法接口,结合车辆实际泊车过程确定控制算法流程,环境感知模块利用超声波雷达和摄像头传感器进行车位扫描,路径规划模块主要采用圆弧-圆弧方式进行局部路径规划,控制决策模块根据规划路径进行跟踪和执行器控制。整个控制算法设计合理有效,为自动驾驶研究奠定了一定的基础。

### 自动泊车路径规划算法详解 #### 路径规划的重要性 自动泊车系统的核心在于如何安全有效地引导车辆进入指定的停车位。这不仅涉及到感知周围环境的能力,更依赖于高效的路径规划算法来决定最优行车路线[^2]。 #### 基本概念和技术框架 路径规划通常基于车辆当前位置及其目的地之间的相对距离和角度差来进行设计。为了确保安全性并避开可能存在的障碍物,在创建具体行驶方案前需先通过传感器获取周边状况的信息,并据此建立局部地图用于后续处理过程中的参照依据[^5]。 #### 主要组成部分 - **初始条件设定**:定义起始点(即汽车当前所在位置)、终点(期望达到的目标位姿),以及两者间的最大允许偏差范围。 - **中间节点选取**:考虑到实际道路情况复杂多变,往往还需要设置若干过渡性的参考坐标作为连接起点至终点间平滑曲线上的关键支撑点[^1]。 - **避障策略实施**:当检测到潜在冲突区域时,则应调整原定计划以绕过这些危险地带;此过程中可能会引入额外的时间成本或空间开销,因此需要权衡利弊作出合理抉择[^4]。 - **最终轨迹生成**:综合考虑上述因素后运用特定数学模型完成整个移动序列的设计——比如采用样条插值法构造连续可导的函数表达式描述理想状态下各时刻对应的位置变化规律[^3]。 ```python def generate_path(start_pose, end_pose, obstacles): """ Generate a feasible path from start pose to end pose avoiding given obstacles. Args: start_pose (tuple): Initial position and orientation of the vehicle. end_pose (tuple): Target parking spot's center point with desired heading angle. obstacles (list[tuple]): List of obstacle positions. Returns: list[list[float]]: Sequence of waypoints forming the planned route. """ # Simplified example implementation import numpy as np def cubic_spline(x0, y0, theta0, xf, yf, thetaf): """Compute coefficients for cubic spline interpolation.""" A = [[1, x0, pow(x0, 2), pow(x0, 3)], [0, 1, 2*x0, 3*pow(x0, 2)], [1, xf, pow(xf, 2), pow(xf, 3)], [0, 1, 2*xf, 3*pow(xf, 2)]] b = [y0, math.tan(theta0), yf, math.tan(thetaf)] c = np.linalg.solve(A,b) return lambda t : sum([c[i]*pow(t,i) for i in range(len(c))]) # Placeholder logic for actual algorithm steps... intermediate_points = [] # Add code here based on real-world constraints like minimum turning radius etc. # Also consider adding avoidance maneuvers around 'obstacles'. final_trajectory = [] prev_point = None for curr_point in [start_pose]+intermediate_points+[end_pose]: if not prev_point is None: segment_func = cubic_spline(*prev_point,*curr_point) num_samples = int(np.sqrt((curr_point[0]-prev_point[0])**2+(curr_point[1]-prev_point[1])**2)/resolution)+1 samples = [(segment_func(i/num_samples*(curr_point[0]-prev_point[0])+prev_point[0]), segment_func(i/num_samples*(curr_point[1]-prev_point[1])+prev_point[1])) for i in range(num_samples)] final_trajectory.extend(samples[:-1]) prev_point = curr_point return final_trajectory ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

scott198512

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

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

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

打赏作者

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

抵扣说明:

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

余额充值