无人驾驶-控制-纯跟踪

本文详细介绍了无人驾驶中的纯跟踪(Pure Pursuit)算法,该算法基于几何追踪,广泛应用于路径跟踪。纯跟踪通过控制前轮转角,使车辆沿着经过目标路径点的圆弧行驶。文章涵盖自行车模型、公式推导、参数介绍、代码分析,以及如何调整前视距离以适应不同车速,确保轨迹平滑且精确。
摘要由CSDN通过智能技术生成

无人驾驶-控制-纯跟踪(Pure Pursuit)

一、模型详解

1.1 简介

(1)对于无人车来说,规划好的路径通常由一系列路径点构成,这些点包含空间位置信息、姿态信息、速度、加速度等。路径与轨迹区别在于,轨迹包含了时间信息;按照我的理解,路径跟踪只是跟踪一系列路径点,时间长短都没关系,只要跟踪上即可;轨迹跟踪同时包含速度跟踪,与时间序列有关。路径的生成可以通过RTK或IMU采集点,RTK采集的经纬度(经纬度再转XYZ)与IMU采集的IMU坐标系下的XYZ值,然后对这条由点组成的路径进行跟踪。

(2)目前主流的轨迹跟踪分为两类:

  • 基于几何追踪的算法:纯跟踪(Pursuit)、预瞄点(Stanley)

  • 基于模型预测的算法:LQR、MPC

1.2 自行车模型

在本节我们重点介绍一种广泛使用的基于几何追踪的方法——纯追踪法(Pure Pursuit),这种方法作为最基础的算法,广泛应用。

在学习纯跟踪算法前,先了解自行车模型,并掌握自行车模型下前轮转角与转弯半径的推导公式:

tan(δ) = L / R,其中δ为前轮转角,L为前后轮轴距,R为转弯半径

Alt
自行车模型详解: 自行车模型-阿克曼模型.

二、公式推导

2.1 车辆跟踪模型

(1)从自行车模型出发,纯跟踪算法以车后轴为切点, 车辆纵向车身为切线, 通过控制前轮转角,使车辆可以沿着一条经过目标路点的圆弧行驶,如下图所示:
Alt
纯跟踪算法要求: 控制车辆的后轴中心点过要追踪的点(gx,gy)

2.2 参数介绍

  • R:车辆转弯半径

  • α:后轴中心点与跟踪点连线与车辆纵轴夹角,当路点在车的左边时,α > 0 ;当路
    点在车的右边时,α<0;

  • ld:后轴中心点与跟踪点的直线距离,也叫前视距离

  • el:车辆当前姿态和目标路点在横向上的误差

  • k:车辆曲率,1 / R

2.3 公式推导

(1)根据正弦定理

后轴中心点与跟踪点连线与车辆纵轴夹角为α,跟踪点与圆弧圆点与后轴中心点与圆弧圆点夹角为2α,可构成等腰三角形,另外两角为(PI / 2 - α),根据边角关系知:
Alt
(2)前轮转角δ

结合以上推导,得出纯追踪控制算法控制量表达式:

tan(δ) = L / R
R = Id / 2sin(α) -------------------->δ(t) = arctan(2Lsin(α) / ld)

在这里插入图片描述

(3)圆弧曲率

圆弧曲率可由下式推导:

k = 1 / R =
sin(α) = el / ld = ld / 2R ------------------------->1 / R = 2*el / ld * ld

在这里插入图片描述
(4)前视距离与速度相关

考虑到本质是横向上的CTE,由上式可知纯追踪控制器其实是一个横向转角的P控制器,这个P控制器受到前视距离的影响很大,如何调整前视距离变成纯追踪算法的关键,通常来说,被认为前视距离是车速的函数,在不同的车速下需要选择不同的前视距离。一种最常见的调整前视距离的方法就是将前视距离表示成车辆纵向速度的线形函数,即 l=kv,那么前轮的转角公式就变成:

在这里插入图片描述

那么纯追踪控制器的调整就变成了调整系数k,通常来说,会使用最大,最小前视距离来约束前视距离,越大的前视距离意味着轨迹的追踪越平滑,小的前视距离会使得追踪更加精确(也会带来控制的震荡)。

(5)引入横向误差el

这里将时间考虑进来,在知道t时刻车身和目标路点的夹角 α(t)和距离目标路点的前视距离 ld的情况下,由于车辆轴距 L固定,我们可以利用上式估计出应该作出的前轮转角 δ ,为了更好的理解纯追踪控制器的原理,我们定义一个新的量:el 车辆当前姿态和目标路点在横向上的误差,由此可得夹角正弦:
在这里插入图片描述

将sin(α) = el / ld 代入到 δ = arctan( 2Lsin(α) / ld )

则可以推导出下式:

δ(k) = arctan( 2L*el(k) / ld(k) / ld(k) )

在pure pursuit方法中,前视距离表示成无人车纵向线速度的形式,即ld = λ vx + c ,c为一常值,最终的控制器如下:
在这里插入图片描述
利用小角度近似,δ == tan(δ),则可将δ近似为:

在这里插入图片描述

我们把2L / ld^2 看作比例控制器的参数,ey作为系统误差,那么这就相当于一个以横向跟踪误差CTE作为系统误差的比例控制器,其中ld = λ*vx + c,在纯跟踪算法中需要调整 λ,c;

无人车模型的两个控制输入:无人车前轮转向角(δ),有时候也用方向盘转角来表示;无人车线速度v,前者是影响无人车横向运动的主要控制输入,因此,设计的轨迹跟踪控制器,都是为了得到合适的δ。

横向跟踪误差: 横向跟踪误差定义.

三、代码分析

3.1 参数定义

在这个实践中,我们纯追踪控制控制转向角度,使用一个简单的P控制器控制速度,首先我们定义参数数值如下:

import numpy as np
import math
import matplotlib.pyplot as plt
k = 0
  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值