💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文内容如下:🎁🎁🎁
⛳️赠与读者
👨💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能解答你胸中升起的一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。
或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎
💥1 概述
基于CASADi实现车道跟踪与动态避障的集成路径规划与控制系统研究
摘要:本文聚焦于结构化高速公路环境下的自动驾驶,提出一种利用CASADi实现路径规划与控制一体化的方法。该方法基于非线性模型预测控制(NMPC)框架,融合动态障碍物状态、车辆动力学模型、目标函数以及车辆动态侧翻安全约束等要素,旨在同时跟踪给定车道轨迹点并避免与周围静态和动态障碍物碰撞。通过借鉴非结构化越野环境中的相关思想,结合高速公路场景特点对代码进行全面修改、参数调整以及模块重构,实现了动态避障与车道轨迹点跟踪的集成路径规划与优化,为自动驾驶在高速公路场景下的安全高效运行提供了有效解决方案。
在本仓库中,我介绍了一种利用CASADI实现“路径规划与控制一体化”的方法,旨在跟踪给定的车道轨迹点,同时避免与周围的静态和动态障碍物发生碰撞。该方法借鉴非结构化越野环境中进行路径规划与控制优化的主要思想,包括融合动态障碍物状态、车辆动力学模型、目标函数以及车辆动态侧翻安全约束等非线性模型预测控制(NMPC)框架。我的研究目标是将这些思想应用于结构化高速公路环境中的自动驾驶,实现动态避障与车道轨迹点跟踪的集成路径规划与优化。
关键词:CASADi;路径规划与控制一体化;非线性模型预测控制;车道跟踪;动态避障
一、引言
1.1 研究背景与意义
基于CASADI实现车道跟踪与动态避障的集成路径规划与控制系统
问题建模:动态避障与车道轨迹点跟踪
我们的控制目标如下:跟踪当前首选车道(洋红色)上的轨迹点,避免与周围的静态障碍物(黑色道路边界)和动态障碍物(蓝色移动物体)发生碰撞,并最终到达指定目标位置。问题的基本示意图如下。

车辆动力学模型的重要特性包括:本车与动态障碍物的状态融合、考虑横向与纵向载荷转移的各轮垂向载荷评估(用于防止车轮离地侧翻的安全约束)、目标函数与约束条件等。
随着自动驾驶技术的快速发展,如何实现车辆在复杂环境下的安全、高效行驶成为关键问题。在结构化高速公路环境中,车辆不仅需要准确跟踪车道轨迹以保持稳定的行驶路线,还需应对周围可能出现的静态和动态障碍物,及时进行避障操作。传统的路径规划与控制方法往往将两者分开处理,可能导致规划与控制之间的不协调,影响车辆的整体性能。因此,研究一种集成路径规划与控制的系统,实现车道跟踪与动态避障的协同优化具有重要的现实意义。
1.2 国内外研究现状
目前,国内外在自动驾驶路径规划与控制领域已取得诸多研究成果。在路径规划方面,常见的算法包括A*算法、Dijkstra算法、快速随机探索树(RRT)算法等,这些算法能够在不同场景下为车辆规划出可行的路径。在控制方面,比例 - 积分 - 微分(PID)控制、模型预测控制(MPC)等方法被广泛应用。其中,非线性模型预测控制(NMPC)由于其能够处理非线性系统和多目标优化问题,在自动驾驶领域受到广泛关注。
然而,现有研究大多侧重于路径规划或控制的单一方面,对于两者的集成研究相对较少。尤其是在结构化高速公路环境下,如何将动态避障与车道轨迹点跟踪有机结合,实现一体化的路径规划与控制,仍是亟待解决的问题。
1.3 研究目标与内容
本研究旨在借鉴非结构化越野环境中的路径规划与控制优化思想,将其应用于结构化高速公路环境,利用CASADi工具实现一种集成车道跟踪与动态避障的路径规划与控制系统。具体研究内容包括:
- 构建适用于高速公路场景的车辆动力学模型,考虑车辆的纵向、横向和横摆运动。
- 融合动态障碍物状态信息,建立包含障碍物位置、速度和加速度等参数的障碍物模型。
- 设计包含车道跟踪误差、避障距离、控制输入变化率等目标项的目标函数,并结合车辆动态侧翻安全约束,构建NMPC框架。
- 利用CASADi进行NMPC问题的求解,实现路径规划与控制的一体化。
- 通过仿真实验验证所提方法的有效性和优越性。
二、相关理论与技术基础
2.1 非线性模型预测控制(NMPC)原理
NMPC是一种基于模型的优化控制方法,其基本思想是在每个控制周期内,根据当前系统状态和预测模型,对未来一段时间内的系统行为进行预测,并通过求解一个有限时域的开环优化问题,得到当前时刻的最优控制输入。NMPC具有以下特点:
- 能够处理非线性系统和多目标优化问题,适用于复杂的自动驾驶场景。
- 采用滚动优化策略,能够及时适应系统的不确定性和动态变化。
- 可以显式地考虑系统的约束条件,保证控制输入的可行性和安全性。
2.2 CASADi工具介绍
CASADi是一个用于非线性优化和模型预测控制的开源软件工具包,它提供了高效的符号计算和数值优化功能,支持多种优化算法。CASADi的主要特点包括:
- 采用符号 - 数值混合的计算方式,能够高效地处理复杂的非线性问题。
- 提供了丰富的接口,可以与MATLAB、Python等编程语言无缝集成。
- 支持自动微分功能,能够准确计算目标函数和约束条件的梯度信息,提高优化求解的效率。
2.3 车辆动力学模型
为了实现准确的车道跟踪和避障控制,需要建立精确的车辆动力学模型。本研究采用三自由度车辆动力学模型,考虑车辆的纵向、横向和横摆运动。该模型的状态方程可以表示为:

2.4 障碍物模型
在动态避障问题中,需要准确描述障碍物的运动状态。本研究假设障碍物为刚体,其运动状态可以用位置、速度和加速度来描述。障碍物的运动方程可以表示为:

三、集成路径规划与控制系统的NMPC框架设计
3.1 目标函数设计
目标函数的设计是NMPC框架的核心,它反映了系统的控制目标。本研究的目标函数包含以下几个部分:
-
车道跟踪误差项:用于衡量车辆实际位置与车道中心线之间的偏差,鼓励车辆准确跟踪车道轨迹。

2. 避障距离项:用于保证车辆与障碍物之间保持足够的安全距离,避免碰撞。

3. 控制输入变化率项:用于平滑控制输入,减少控制输入的突变,提高系统的舒适性。

3.2 约束条件设计
为了保证系统的安全性和可行性,需要在NMPC框架中考虑以下约束条件:
-
车辆动力学约束:包括车辆的纵向速度、横向速度、横摆角速度等状态的物理限制。

-
控制输入约束:包括前轮转角和纵向驱动力的物理限制。

-
车辆动态侧翻安全约束:为了防止车辆在行驶过程中发生侧翻,需要考虑车辆的侧倾角和侧倾角速度等参数的限制。

3.3 NMPC问题表述
基于上述目标函数和约束条件,NMPC问题可以表述为以下优化问题:

四、基于CASADi的NMPC实现
4.1 系统建模与参数设置
利用CASADi的符号计算功能,建立车辆动力学模型和障碍物模型的符号表达式。同时,根据高速公路场景的特点,设置车辆参数、障碍物参数以及NMPC框架中的相关参数,如预测时域N、控制时域Nc、采样时间Ts等。
4.2 目标函数与约束条件的CASADi实现
将目标函数和约束条件用CASADi的符号表达式表示出来。对于目标函数中的各项,利用CASADi的自动微分功能计算其梯度信息,以提高优化求解的效率。对于约束条件,将其转化为CASADi能够处理的格式,如等式约束和不等式约束。
4.3 优化求解器的选择与配置
选择合适的优化求解器来求解NMPC问题。CASADi支持多种优化求解器,如IPOPT、SNOPT等。根据问题的特点和求解的需求,选择IPOPT求解器,并对其进行配置,如设置求解精度、最大迭代次数等参数。
4.4 滚动优化策略的实现
采用滚动优化策略,在每个控制周期内,根据当前系统状态和预测模型,求解NMPC问题,得到当前时刻的最优控制输入。将最优控制输入应用于系统,更新系统状态,并进入下一个控制周期,实现闭环控制。
五、仿真实验与结果分析
5.1 仿真场景设计
设计结构化高速公路环境下的仿真场景,包括车道轨迹、静态障碍物和动态障碍物。设置不同的障碍物运动状态和初始位置,以验证所提方法在不同情况下的有效性和鲁棒性。
5.2 仿真参数设置
设置仿真参数,如仿真时间、采样时间、车辆初始状态等。同时,根据实验需求调整NMPC框架中的权重系数和约束参数。
5.3 实验结果分析
通过仿真实验,得到车辆在车道跟踪和动态避障过程中的状态曲线和控制输入曲线。分析车辆的车道跟踪误差、避障距离、控制输入变化率等指标,验证所提方法能够实现准确的车道跟踪和有效的动态避障。同时,与传统的路径规划与控制方法进行对比,分析所提方法的优越性。
六、结论与展望
6.1 研究结论
本研究提出了一种基于CASADi实现车道跟踪与动态避障的集成路径规划与控制系统。通过构建适用于高速公路场景的车辆动力学模型和障碍物模型,设计包含车道跟踪误差、避障距离和控制输入变化率等目标项的目标函数,并结合车辆动态侧翻安全约束,构建了NMPC框架。仿真实验结果表明,所提方法能够实现准确的车道跟踪和有效的动态避障,具有较好的鲁棒性和实时性。
6.2 研究展望
尽管本研究取得了一定的成果,但仍存在一些不足之处。未来的研究可以从以下几个方面展开:
- 考虑更复杂的车辆模型和障碍物模型,提高系统的准确性和适应性。
- 结合实际传感器数据,进行实车实验,验证所提方法在实际应用中的有效性。
- 研究多车协同的路径规划与控制方法,解决高速公路上多车交互的问题。
📚2 运行结果
在下方视频中,我们展示了所提方法的实现效果。可以看到,自车(绿色轨迹)在跟踪洋红色参考车道轨迹点的同时,成功避开了黑色道路边界和蓝色动态障碍物。


在下图中,我们展示了所有重要状态变量与控制变量的变化曲线。可以看出,我们的NMPC实现很好地遵守了所有状态与控制变量的约束条件。


部分代码:
%%%Planning of Prediction Horizon, time step, total simulation time
N=30; % No of steps in future for which the states of the Ego Vehicle are predicted
dt=0.05; % Time Step
sim_time=20; % Total Simulation time
%%%%%Define Linear Obstacles: road boundary coordinates
ref_obs{1}=[linspace(0,120,240)' linspace(-3.5,-3.5,240)'];
ref_obs{2}=[linspace(0,120,240)' linspace(3.5,3.5,240)'];
ref_obs_lin=[ref_obs{1};ref_obs{2}];
%%% N+1 points of the Linear Obstacle most nearest to the ego vehicle will
%%% be considered in MPC
%%%Each point has two states X,Y
Lin_obs_states=2;
n_lin_obs=Lin_obs_states*(N+1);
%%%Define Reference Lane Waypoints for Vehicle to follow
ref_traj= ((ref_obs{1}+ref_obs{2})/2)';
ref_traj(2,:)=ref_traj(2,:)-1.75;
ref_traj=[ref_traj repmat(ref_traj(:,end),1,2000)];
traj_states=2; % Only two states (X,Y) are given for the planned trajectory
%%% N+1 points of the Lane are given as reference to be achieved by the respective N+1 steps in the predicted
%%% trajectory of the ego vehicle
n_traj_states=(N+1)*traj_states; % Total no of parameters to be given for the reference trajectory
%%%% Define no of obstacles and total obstacle states
obs_states=2;
no_of_obstacles=3;
%%% states of the moving Vehicles are also predicted for N steps in future
%%%% Therefore total no of states
n_obs_states=(N+1)*obs_states*no_of_obstacles;
%%%%%%%%Initial Position of Moving obstacles
CG(1:no_of_obstacles,1:2)=[25.5 40.0 70.5; -1.75 -1.75+3.5 -1.75]';
%%%%%%%STep: Start Defining Model Parameter and State Space model
%%%% Vehicle Parameters
mass = 1723; % in kgs
lf=1.232; lr=1.468; % front, rear axle to c.g. location in m
w=1.35; % Track width
H=0.6; % C.G. Height
Iz=4175; %Vehicle inertia about Z axis in kg-m^2
L=lf+lr; % Wheel Base
Cf=66900; % N/rad Front tire linear cornering stiffness
Cr=62700; %NN/rad Rear Tire Linear Cornering Stiffness
mvobs_states=SX.sym('mvobs',(n_obs_states/(N+1)),1);
%%%%%Ego Vehicle Dynamic model or System model used for making Predictions
🎉3 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。(文章内容仅供参考,具体效果以运行结果为准)
🌈4 Matlab代码实现
资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取

674

被折叠的 条评论
为什么被折叠?



