自动驾驶控制算法之车辆纵向控制(project)

news2024/7/6 19:56:46

本文为深蓝学院-自动驾驶控制与规划-第二章作业

目录

1 project introduction

2 思路提示

3 解决积分饱和的方法

3.1 IC 积分遇限削弱法

3.2 BC 反馈抑制抗饱和

4 ROS+LGSVL联合仿真


1 project introduction

本项目希望大家根据PID控制方法实现一个巡航控制系统。我们已经为大家开发了ROS1.0的系统框架,仅需要大家实现.cpp文件中的todo部分,即 control 实现以及 reset PID参数。

框架如下

#include "pid_controller.h"

namespace shenlan {
namespace control {

PIDController::PIDController(const double kp, const double ki,
                             const double kd) {
  kp_ = kp;
  ki_ = ki;
  kd_ = kd;
  previous_error_ = 0.0;
  previous_output_ = 0.0;
  integral_ = 0.0;
  first_hit_ = true;
}

// /**to-do**/ 实现PID控制
double PIDController::Control(const double error, const double dt) {
  
}

// /**to-do**/ 重置PID参数
void PIDController::Reset() {
    
}

}  // namespace control
}  // namespace shenlan

2 思路提示

为实现PID控制,我们可以利用离散的PID控制来实现,当采样时间足够短时,也能保持较好的性能,公式如下

需要注意的点就是积分初始值为0、微分初始值为0 

double PIDController::Control(const double error, const double dt) {
if (dt<=0)
{return previous_output_;
}

double diff=0;
double output=0;
if (first_hit_){
first_hit_=false;
}
else{
diff=(error-previous_error_)*kd_/dt;
}
integral_ += error*dt*ki_;//积分的计算可以由下面两种方法替代
output=error*kp_+integral_+diff;
previous_error_=error;
previous_output_=output;
return output;
}

同时项目中还要求写一个 reset 的函数,我们需要更新下面这四个参数来保证从头开始

void PIDController::Reset() {
  previous_error_ = 0.0;
  previous_output_ = 0.0;
  integral_ = 0.0;
  first_hit_ = true;
}

3 解决积分饱和的方法

3.1 IC 积分遇限削弱法

// 积分遇限消弱法
double output_saturation_high=10.0;
double output_saturation_low=-10.0;
double u =error*kp_+integral_+error*dt*ki_+diff*kd_ ; // 算当前时刻理应输出大小
if (((error *u)> 0) &&
((u > output_saturation_high )||(u < output_saturation_low))) {
}
else {
integral_ += error*dt*ki_;
}

3.2 BC 反馈抑制抗饱和

// 反馈抑制抗饱和
double output_saturation_high=10.0;
double output_saturation_low=-10.0;
double kaw=ki_/kp_;
double u = error*kp_+integral_+error*dt*ki_+diff*kd_;
double aw_term =0.0;
if (u > output_saturation_high){
aw_term=(output_saturation_high-u)*kaw;
}
else if (u < output_saturation_low)
aw_term=(output_saturation_low)*kaw;
else{
}
integral_+=aw_term+error*dt*ki_;
}

4 ROS+LGSVL联合仿真

这里是联合仿真的链接

 自动驾驶PID控制(ROS+LGSVL联合仿真)_哔哩哔哩_bilibili

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/168860.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习之边缘检测算法论文解读(EDTER: Edge Detection with Transformer)

引言 边缘检测是计算机视觉中最基本的问题之一&#xff0c;具有广泛的应用&#xff0c;例如图像分割[8&#xff0c;23&#xff0c;39&#xff0c;44&#xff0c;45&#xff0c;47]、对象检测[23]和视频对象分割[5&#xff0c;57&#xff0c;59]。给定输入图像&#xff0c;边缘…

webpack-dev-server:静态资源目录配置

目录 webpack-dev-server Webpack项目-配置自动打包 访问错误信息分析 简单配置静态资源访问目录 完整配置静态资源访问目录 directory属性 staticOptions属性 publicPath属性 serveIndex属性 watch属性 完整配置webpack.config.js示例 默认显示index.html内容配置 默…

fsdb DUMP的操作记录

参考链接&#xff1a; https://blog.csdn.net/ohuo666/article/details/124973939https://blog.csdn.net/ohuo666/article/details/124973939 https://blog.csdn.net/yuexiangallan/article/details/121760768https://blog.csdn.net/yuexiangallan/article/details/121760768…

基于 DolphinDB 的行情中心解决方案

随着国内量化金融的高速发展&#xff0c;行情数据所包含的微观交易结构信息越来越受到券商自营团队、资管团队以及各类基金的重视。这些交易团队迫切希望拥有一个与生产环境类似的投研仿真环境&#xff0c;提升研发的效率和质量。作为国内领先的高性能时序数据库厂商&#xff0…

【地铁上的Redis与C#】数据类型(七)--List类型

我们这篇文章开始讲解list类型。 什么是list list是一个存储空间保存多个数据&#xff0c;底层使用双向链表存储结构实现的一种Redis数据类型&#xff0c;。list类型一般用在存储多个数据&#xff0c;并需要对数据进入存储空间的顺序进行区分的情况下。list的存储方式是一个存…

气泡法检漏技术特点分析和新型压力衰减法测试技术

摘要&#xff1a;针对传统的气泡法检漏技术&#xff0c;本文详细介绍了气泡法的基本原理、气泡法中的两种标准方法——加压法和真空法以及对应的标准规范&#xff0c;并对这两种气泡法进行了对比分析。本文还对气泡法的技术特点进行了分析&#xff0c;指出了气泡法检漏技术的局…

使用ruoyi-vue控制数据权限

说在前面 啥是数据权限?例如校长可以看到全部学生的信息,系主任可以看到该院系的学生信息,老师可以看到本班的学生信息,学生自己只能查看自己的信息 对于ruoyi的角色,我们只能控制用户可以访问那些菜单以及接口,而不能控制接口返回的数据 假如有这样一个需求,不同用户上传各…

赛狐ERP | 亚马逊卖家FBA常见问题解析!

许多亚马逊卖家在使用亚马逊FBA时经常会遇到一些问题&#xff0c;如FBA如何收费、如何提升发货数量、物流方式问题等问题&#xff0c;这些问题是常见问题&#xff0c;也是亚马逊卖方们应该把握的问题。下面就来跟大家分享一些常见的亚马逊FBA相关问题。一、亚马逊FBA如何收费&a…

OSCP_vulnhub—GOLDENEYE: 1

vulnhub—GOLDENEYE: 1About信息搜集查看js泄露POP3 密码破解及登录使用admin/xWinter1995x!登录 getshell提权About GoldenEye: 1 ~ VulnHub Download (Mirror): https://download.vulnhub.com/goldeneye/GoldenEye-v1.ova DHCP service: Enabled IP address: Automaticall…

【Kubernetes 入门实战课】Day01——虚拟机创建及安装

文章目录前言一、实验环境选择二、选择合适的虚拟机软件1.VirtualBox2.VMWare三、Linux版本四、如何配置虚拟机1、安装VMware2、虚拟网络设置1、虚拟机网络编辑器2、设置 VMnet 8 网段3、创建虚拟机1、创建虚拟机2、启动虚拟机3、虚拟机配置4、虚拟机管理前言 俗话说&#xff…

[oeasy]python0052_ raw格式字符串_单引号_双引号_反引号_ 退格键

转义字符 回忆上次内容 最近玩的是\n、\r 之外的转义序列 \a是 ␇ (bell)\t是 水平制表符\v是 换行不回车 通过 16 进制数值转义 \xhh把(hh)16 进制对应的 ascii 字符输出 通过 8 进制数值转义 \ooo把(nnn)8 进制对应的 ascii 字符输出 这次加了 转义输出 反斜杠本身 \\ 输出…

24.Isaac教程--路径规划的区域划分

路径规划的区域划分 ISAAC教程合集地址: https://blog.csdn.net/kunhe0512/category_12163211.html 为了赋予地图区域关于通过它们规划的路径的语义意义&#xff0c;引入了三个新的规划器影响区域&#xff1a; No-replanning zones&#xff1a;当机器人通过这个多边形区域时&a…

python textwrap 模块,这里有你需要的学习资料

Python 标准库中的 textwrap 模块可以把长文本按照指定的宽度进行换行。这个模块提供了一些高级的文本处理功能&#xff0c;例如按照指定的宽度进行自动换行&#xff0c;保留段首缩进等。 python textwrap 模块python textwrap 模块主要函数textwrap.wrap(text, width70, \*\*k…

ruoyi-vue版本(四)@PreAuthorize 注解在若依里面的作用,springsecurity 框架相关的配置

目录1 需求2 实现2.1 背景2.2 实现2.3 springsecurity 框架相关的配置2.3.1 EnableGlobalMethodSecurity详解2.3.2 认证失败处理类AuthenticationEntryPointImpl2.3.3 自定义退出处理类LogoutSuccessHandlerImpl2.3.4 filter 为啥会多次执行3 PreAuthorize 注解1 需求 我们打开…

Flink面试题汇总

1&#xff0c;简单介绍一下 Flink Flink 是一个框架和分布式处理引擎&#xff0c;用于对无界和有界数据流进行有状态计算。并且 Flink 提供了数据分布、容错机制以及资源管理等核心功能。Flink提供了诸多高抽象层的API以便用户编写分布式任务&#xff1a; DataSet API&#xf…

nacos多网卡服务器引发的问题

1、背景 某一日晚上&#xff0c;公司的一个微服务上线重启后&#xff0c;双节点&#xff0c;只有一个节点注册到了nacos服务器&#xff0c;另外一个节点一直在nacos界面上无法看到&#xff0c;两个节点的服务启动也没有报错&#xff0c;api网关转发给服务时&#xff0c;时不时有…

深度学习入门基础——卷积计算

卷积计算 卷积是数学分析中的一种积分变换的方法&#xff0c;在图像处理中采用的是卷积的离散形式。这里需要说明的是&#xff0c;在卷积神经网络中&#xff0c;卷积层的实现方式实际上是数学中定义的互相关 &#xff08;cross-correlation&#xff09;运算&#xff0c;与数学…

【进阶】数据在内存中的存储

目录 一、数据类型介绍 1、基本的内置类型 2、类型的基本归类 二、整型在内存中的存储 1、原码、反码、补码 2、大小端介绍 3、大端小端的经典例题 三、浮点数在内存中的存储 1、浮点数存储规则 2、浮点数存储例题 一、数据类型介绍 1、基本的内置类型 char /…

非标设备制造业项目管理软件如何帮助企业做好项目报价管理?

非标设备制造企业&#xff0c;由于需求的不确定性、方案的多样性、交期的紧迫性、以及批量小&#xff08;很多需要先做单台样机&#xff09;等特性&#xff0c;导致非标设备要在有限时间内做到准确报价存在一定的困难&#xff0c;这也是众多非标设备制造企业亟待解决的问题。报…

MySQL Shell 逻辑备份恢复API

MySQL8.0开始提供的MySQL Shell功能&#xff0c;是DBA推向了另一个高度&#xff0c;除SQL外&#xff0c;正式踏入Cloud数据库服务 和 shell操作数据库领域&#xff08;MGR是一个代表点&#xff09;。 日常DBA工作可以通过MySQL Shell更容易实现。因为MySQL Shell处理用JavaScr…