局部路径规划Receding Horizon Planner学习笔记(date20210503)

介绍了一种基于多目标优化的自主水面艇路径规划方法,利用递进地平线原理实现局部路径更新,确保全局路径的有效性和安全性。通过风险、航向及距离三项成本函数进行路径选择,以达到避障的同时尽量保持原有航向并缩短路径长度。

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

参考论文

[1] Shan T , Wang W , Englot B , et al. A Receding Horizon Multi-Objective Planner for Autonomous Surface Vehicles in Urban Waterways[J]. 2020.

前提条件

进行完全局路径规划,得到全局路径G0

参数定义

基本变量的定义,其余变量在之后的内容中定义

变量名解释
Cconfiguration space船的位置状态空间
x船的位置状态,x属于C
Cobst与障碍物有冲突(如重合)的状态集合,包含于C
Cfree与障碍物不冲突的状态集合,为C去除Cobst的闭集
S传感器数据
G0全局参考路径
adj(G0)临近路径G0且在C附近区域的路径集合
V由状态所组成的顶点集合(用于有向图)
E由V中状态间的连接边组成的集合(用于有向图)
eijE中连接V中xi和xj的连接边
G(V,E)以V为顶点集合,E为连接边集合的有向图
σG属于adj(G0),通过有向图获得G(V,E)获得的路径
σG0从G0中取出来的一段路径
σ路径函数σ=σG∪σG0,将[0,1]映射到C中状态,σ(0)为起点,σ(1)为终点
Σ所有路径函数的集合
xc当前位置状态
xg目标位置状态

Lexicographic Optimization字典优化

个人理解,仅供参考

变量定义

变量名解释
Ck第k级代价函数,以路径为自变量,值为该路径的代价值

基本思路

设置K个分等级的代价函数,等级高的代价函数优先,仅当等级高的代价函数所得到的代价相同的时候才考虑低级的代价函数。
(1)将k个代价函数全用上(优先级仅为计算优先级)
对路径进行计算。
需保证每个代价函数所得的最优路径只有一条。

(2)仅用必要的代价函数(优先级为计算优先级和评估优先级)
对路径进行计算。
每个代价函数所得的最优路径可以有多条,但最低级的代价函数所得的最优路径只能有一条;如果高优先级的代价函数可以找出最优路径,则不必对低优先级的的代价函数进行计算。
此处第三级代价函数即为最低级代价函数,一般通过使最低级代价函数值非负且单增来保证其最佳结果只有一个。

代价函数

三个基本的代价函数(成本函数),按照优先级先后依次是:风险成本 > 航向成本 > 距离成本

(1)风险成本

与障碍物等向冲突的风险导致的成本
  c 1 ( σ ) = ∫ 0 1 R i s k ( σ ( s ) ) d s   . \ c1(σ) = \int_0^1 Risk(σ(s))ds\,.  c1(σ)=01Risk(σ(s))ds.
R i s k ( x ) = { R ( x ) R ( x ) > T h r i s k 0 o t h e r w i s e Risk(x)=\begin{cases} R(x) & R(x)>Thrisk \\ 0 & otherwise \end{cases} Risk(x)={R(x)0R(x)>Thriskotherwise
c1(σ) 为路径的风险成本,Risk(x)为路径中每个状态自己的风险成本,R(x)为状态自己风险成本的计算式,文中给出的示例R(x)为状态点与距离它最近的障碍物点之间的距离的倒数。
Thrisk 为一临界值,表征一个安全区,例如我们将与距离障碍物距离大于a的地方视为安全区,则仅当其与障碍物距离小于a时视为有效,即其距离倒数R(x)大于1/a的时候,此时Thrisk=1/a.
(这几个值的表现形式为代价地图中障碍物周围的膨胀,由于船体本身有体积,所以距障碍物最近的黑色区域表示碰撞膨胀,不可到达;在该膨胀的基础上再向外膨胀1/a的灰色区域为非安全区,在综合考虑各种成本的前提下可以到达,例如即使风险代价最小的时候也要经过灰色区域则此时允许船体到达灰色区域,这样可以防止膨胀将路径阻塞。)

(2)航向成本

与全局参考路径航向不同所导致的成本,默认走全局参考路径,则航向偏移成本可以代表转向带来的动力损耗等成本
  c 2 ( σ ) = ∫ 0 1 H e a d i n g ( σ ( s ) ) d s   . \ c2(σ) = \int_0^1 Heading(σ(s))ds\,.  c2(σ)=01Heading(σ(s))ds.
H e a d i n g ( x ) = { H ( x ) H ( x ) > T h h e a d 0 o t h e r w i s e Heading(x)=\begin{cases} H(x) & H(x)>Thhead \\ 0 & otherwise \end{cases} Heading(x)={H(x)0H(x)>Thheadotherwise
H(x) 为状态x与G0上与x接近的路径段的航向的差异,论文中没说怎么计算,个人认为取x附近的G0路径段的航向与x本身航向做差即为H(x).
Thhead :由于风浪等的影响,实际跑到x位置时的H(x)与路径规划时的有偏差,所以对于较小的偏差值可以忽略不计,该值为Thhead.
(通过这个代价,可以使局部规划出来的路径更加贴合全局规划路径)

(3)路程成本

路径长短导致的成本
  c 3 ( σ ) = ∫ 0 1 D i s t a n c e ( σ ( s ) ) d s   . \ c3(σ) = \int_0^1 Distance(σ(s))ds\,.  c3(σ)=01Distance(σ(s))ds.
Distance(x):论文中没有给出如何计算该成本,个人认为可以用类似A*算法中计算每个点成本 f = g + h的方法来计算Distance(x).

有向图与无向图

参考博客
在路径的搜索中用到了有向图的方法。其中顶点集合V是在一定范围内,以固定密度划分出许多离散的点;连接边集合E文为每个点指向其周围最近的8个点的有向连接的集合。中未具体说明如何确定路径,个人认为是在确定起点和终点后,经过多次有限制条件的深度优先搜索,得到几条较为满意的备选路径。

Receding Horizon Planner

为了减少计算量,以G0为参考路径,仅在必要时刻(如G0穿过障碍物)去规划adj(G0)中的局部路径。

变量定义

变量名解释
dspan规划中可选择的状态样本与G0之间的最大距离
drollroll-in与roll-out之间的总距离
dsensor传感器的检测范围,一般小于droll,防止在droll末端出现障碍物使路径不能收敛导致规划失败
xinit存在于离散点集V中的距离初始状态xc最近的状态
Xqueue待搜索的状态队列
xgoal存在于G0上roll-in收敛到的点

基本思路

(1)字典搜索

此算法将V中各个本状态的父状态,配置为由径该父状态令本状态代价最小的状态(优先级从高到低进行比较),这样一直配置到终点,从终点开始指向各状态父状态即可指出一条路径。但论文中的算法并未给出到终点结束,个人认为配置过程中出现xi为终点或者xj为终点配置了父状态为xi即可停止运算,可以减少计算量。

(2)Receding horizon planner

个人没怎么理解,没看出啥特别之处

<think>好的,我需要处理用户关于轮式移动机器人使用Receding Horizon Control(RHC,也称为模型预测控制,MPC)进行轨迹跟踪的实现和算法的问题。首先,我需要回忆RHC的基本原理和在移动机器人中的应用。RHC是一种通过在线求解有限时域优化问题来实现控制的方法,每步调整控制输入以最小化跟踪误差,同时满足约束条件。 接下来,我需要整理实现RHC的关键步骤,包括系统建模、优化问题构建、约束处理、在线求解和反馈校正。在系统建模部分,轮式移动机器人通常使用运动学模型,如差速驱动模型,状态变量包括位置和方向,控制输入为左右轮速度。需要给出状态方程,例如使用$\dot{x} = f(x, u)$的形式。 然后,构建优化问题,目标函数通常包括跟踪误差和控制输入的惩罚项。例如,最小化预测时域内的状态偏差和控制量变化,可能需要用二次型形式表示。同时,约束条件包括输入限制、状态约束等,比如速度的最大最小值。 在线求解部分,需要将优化问题转化为标准的二次规划(QP)问题,并选择合适的求解器。对于实时性要求高的机器人控制,高效的求解算法至关重要,可能需要提及一些常用工具或库,如CVXGEN或ACADO。 反馈校正环节,每步根据最新状态重新计算控制输入,强调闭环控制的重要性。此外,还需要讨论算法中的挑战,如计算延迟、模型失配,以及可能的解决方案,如简化模型、降低预测时域长度或使用更高效的求解方法。 用户可能希望了解具体的实现细节,所以需要给出一个简化的算法框架,可能包括伪代码或步骤说明。同时,生成的相关问题需要覆盖实现中的关键点,如模型选择、约束处理、计算效率提升以及实际应用案例。 最后,确保回答符合系统级指令,正确使用LaTeX格式,引用用户提供的参考文献,并在末尾添加相关问题。需要检查LaTeX语法是否正确,避免格式错误,同时保持回答结构清晰,逐步引导用户理解整个方法。</think>### 轮式移动机器人基于Receding Horizon Control的轨迹跟踪方法 #### 1. 核心原理 Receding Horizon Control(RHC,滚动时域控制)通过**在线滚动优化**实现轨迹跟踪。其核心步骤为: 1. **预测模型**:建立机器人运动学/动力学模型,例如差速驱动机器人模型: $$ \begin{cases} \dot{x} = v \cos\theta \\ \dot{y} = v \sin\theta \\ \dot{\theta} = \omega \end{cases} $$ 其中$(x,y)$为位置,$\theta$为航向角,$v$和$\omega$为控制输入[^1]。 2. **优化目标**:在有限时域$[t, t+T]$内最小化跟踪误差和控制能量: $$ \min_{u} \sum_{k=0}^{N} \|x_{t+k|t} - x_{ref}\|^2_Q + \|u_{t+k}\|^2_R $$ 其中$Q,R$为权重矩阵,$N$为预测步长。 3. **约束处理**:包括速度限制$v \in [v_{min},v_{max}]$、转向角约束$\omega \leq \omega_{max}$等。 #### 2. 算法实现步骤 ```python # 简化算法框架(需结合具体优化库实现) def rhc_controller(current_state, reference_trajectory): # 1. 初始化优化问题 opt_problem = setup_optimization(current_state, reference_trajectory) # 2. 求解有限时域最优控制序列 control_sequence = solve_qp(opt_problem) # 调用二次规划求解器 # 3. 应用第一个控制量并滚动时域 apply_control(control_sequence[0]) # 4. 更新状态并重复 return updated_state ``` #### 3. 关键实现技术 - **模型线性化**:对非线性模型进行泰勒展开近似,例如: $$ x_{k+1} \approx x_k + f(x_k,u_k)\Delta t $$ - **实时优化**:采用热启动(warm-start)技术加速求解,利用上一步的解作为当前初始猜测 - **鲁棒性增强**:添加松弛变量处理模型不确定性,或结合扰动观测器 #### 4. 典型参数设置 | 参数 | 作用 | 典型值范围 | |---------------|---------------------|--------------| | 预测时域T | 控制前瞻性 | 1-5秒 | | 控制时域m | 优化控制步数 | 10-30步 | | 权重矩阵Q | 状态跟踪优先级 | diag(1,1,0.5)| | 权重矩阵R | 控制量抑制权重 | diag(0.1,0.1)| #### 5. 性能提升策略 - **计算加速**:采用显式MPC、稀疏矩阵存储 - **模型改进**:结合动力学模型增强预测精度 - **硬件优化**:使用FPGA实现QP求解加速
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值