pure pursuit纯跟踪

news/2024/11/16 16:38:32/

Pure Pursuit是一种几何追踪方法,速度越小,performance越好;

\delta:汽车前轮转角

L:前后轮轴距(车长)

R:转弯半径

将车辆模型简化为自行车模型(这里默认左轮和右轮的旋转是一致的)!!!

bicycle model:

tan\delta =\frac{L}{R }

pure pursuit建立于自行车模型和阿克曼小车模型的基础上,goal point为距离后轴中心最近的点.

1、pure pursuit的公式推导:

\alpha:目标点方向和当前航向角方向夹角;

l_{d}:前视距离;

e_{ld}:横向误差;

\frac{l_{d}}{sin2\alpha }=\frac{R}{sin(\frac{\Pi }{2}-\alpha )}

\frac{l_{_d}}{2sin\alpha cos\alpha }=\frac{R}{cos\alpha }

R = \frac{2l_{_d}}{sin\alpha }   

sin\alpha =\frac{e_{ld}}{l_{d}}

联立R = \frac{2l_{_d}}{sin\alpha }tan\delta =\frac{L}{R }可得:

\delta(t) = tan^{-1}(\frac{2L}{l_{d}^2}e_{ld}(t))

以上就是pure pursuit的相关公式,purepursuit是基于横向误差(cross track error)放大\frac{2L}{l_{d}^2}倍的比例控制器。

2、pure pursuit的实现步骤:

(1)确定车辆自身位置

(2)找到距离当前位置最近的点

(3)寻找目标点G,以车辆后轴为中心,Ld为半径画一个圆弧找到规划路径的交点

(4)转换到车身坐标系下

(5)用pure pursuit计算公式计算到达目标点所需的转向角

3、影响因素

由purepursuit公式可知,影响最大的就是l_{_{d}}l_{_{d}}会影响(steering angle )\delta、进而影响车辆对轨迹的追踪效果;

l_{_d}pure pursuit performance 越好稳定性越差准确性越高
l_{_d}pure pursuit performance 越差稳定性越好准确性越低

 4、改进

l_{_d} 并没有和vehicle的velociety相关,并且(steering angle)\delta并不能无限大无限小;

改进:对l_{_d}和速度关联起来(pure_pursuit的特性是:长的平滑轨迹上越小的前视距离准确度越好),对\delta设定范围;

\delta (t)=tan^{-1}(\frac{2Lsin(\alpha(t))}{l_{d}})

 \delta(t)=tan^{-1}(\frac{2Lsin(\alpha )}{kv_{x}})

l_{_d} = KV_{_x}l_{_d}与V关联起来,V正比于l_{_d}

K越小稳定性越差
K越大Acc越小

5、pure_pursuit的挑战

(1)如何选择一个合适的前视距离?

答:l_{_d} = KV_{_x}

(2)不要刻意的将pure_pursuit针对于某一特定的场景进行调整、因为会出现过拟合现象;

(3)当车辆还没有到预瞄点的时候就切换到下一个目标点,故无法对曲线达到100%的追踪,对于直线的效果很好;


http://www.ppmy.cn/news/7724.html

相关文章

linux的权限

前言 学习权限我们先理解一下xshell 我们使用Xshell的存在的意义 帮助进行命令行传递和返回结构保护操作系统 linux的权限 (1)权限的概念 限制人的,访问的对象可能没有这种“属性” 权限:一件事情是否运行被谁“做” 权限 人 事物属性 (2)linux的上…

【STM32F4系列】【HAL库】【自制库】模拟IIC主机

介绍 本项目是利用GPIO模拟I2C的主机 网上常见的是模拟I2C主机 本项目是作为一个两个单片机之间低速通信的用法 协议介绍请看,传送门 模拟从机请看这里 主机 功能描述 I2C按字节(Byte)读写I2C读写寄存器I2C连续读写 编程思路解析 主机是时钟信号的发起方,起始和中止信号…

什么样的GPU云计算平台的是好的平台

GPU云计算平台产品解析。通过不同平台不同阶段进行产品分析。究竟我们是需要更便宜还是需要更好用。 第一阶段分为以下几个模块 GPU 选型、 环境选型、 启动实例、 关闭实例。 第二阶段分为以下几个模块 实例关闭策略、无卡模式启动、实例状态监控、提供对外接口、云文件管…

终极.NET混淆器丨.NET Reactor产品介绍

无与伦比的 .NET 代码保护系统,可完全阻止任何人反编译您的代码。 产品优势 01、混淆技术 .NET Reactor通过向 .NET 程序集添加不同的保护层来防止逆向工程。除了标准的混淆技术之外,它还包括NecroBit、虚拟化、x86代码生成或防篡改等特殊功能。NET Re…

Vue--》超详细教程——vite脚手架的搭建与使用

目录 vite 创建 vite 项目 目录文件的构成 vite项目的运行流程 开发者工具安装 vite vue官方提供了两种快速创建工程化的SPA项目的方式,一种是基于 vue-cli 创建的SPA项目,另一种就是基于 vite 创建的SPA项目。两者的区别如下: 说明v…

Linux——磁盘在网络中共享

实现计算服务器挂载存储服务器磁盘 方法一:通过启动nfs服务实现挂载 流程可参考:在linux挂载另一台服务器的磁盘 启动nfs服务参考:Linux 环境下 NFS 服务安装及配置使用 避免存储server的非root用户访问共享文件夹 在存储server上多设置一…

2023春招面试:消息中间件面试题整理

RabbitMQ如何确保消息发送 ? 消息接收? 开启生产者确认机制,确保生产者的消息能到达队列(config机制保证消息正确到达交换机、return机制保证消息正确到达队列)开启持久化功能,确保消息未消费前在队列中不会…

初识Kubernetes:(4)Kubernetes实战入门

初识Kubernetes:(4)Kubernetes实战入门1 前言2 Namespace2.1 概述2.2 应用示例3 Pod3.1 概述3.2 语法及应用示例4 Label4.1 概述4.2 语法及应用示例5 Deployment5.1 概述5.2 语法及应用示例6 Service6.1 概述6.2 语法及应用示例6.2.1 创建集群…