小车PID巡线调节
PID巡线调节
1、双巡线P控制
KP可以先从0.2值调起,P比例主要控制小车能够在线上正常巡线,
P比例说明:KP值越小,转弯幅度越大,会直接越过黑线。KP值越大,转弯幅度越小,能正常巡线,但是摆动很平凡。
误差=右巡线-左巡线 两个模拟巡线之间的误差值
p修正值=误差*kp比例常数
左轮速度=速度-p修正值
右轮速度=速度+p修正值
2、双巡线PI控制
在P比例控制的基础上增加积分I控制
i积分说明:I值越大,小车巡线稳定时间越长,回到线上时间越慢。I值越小,小车巡线稳定时间越短,回到线上时间越快。
误差=右巡线-左巡线
所有误差=所有误差+误差
p修正值=误差*kp比例常数
i修正值=所有误差*ki积分常数
PI修正值=p修正值+I修正值
左轮速度=速度-pI修正值
右轮速度=速度+pI修正值
3、双巡线PD控制
在P比例控制的基础上增加微分D控制
D微分说明:D值越大,小车摇摆越频繁,D值越小,小车摇摆越少。
误差=右巡线-左巡线
p修正值=误差*kp比例常数
D修正值=(误差-上一次误差)*KD微分常数
PD修正值=P修正值+D修正值
左轮速度=速度-PD修正值
右轮速度=速度+PD修正值
上一次误差=误差
4、双巡线PID控制
PID调节方法总结:
先调整KP比例常数:从小到大调节,一直到能够巡线为止
再调节KI积分常数:从大到小调节,一直到能够正常巡线为止,调节好的KI不论在任何恶劣环境下只要巡线眼睛在线上都能把小车调整到线上来。
再调节kD微分常数:从小到大调节,让小车在巡线过程中逐渐平滑,减少摆动
推荐初始调节值:kp比例常数:0.2 ki积分常数0.1 KD微分常数:0.1
Kp调节时±0.1 Ki调节时,小数点后加0减0 KD调节时±0.5
误差=右巡线-左巡线
所有误差=所有误差+误差
p修正值=误差*kp比例常数
i修正值=所有误差*ki积分常数
D修正值=(误差-上一次误差)*KD微分常数
PID修正值=p修正值+I修正值+D修正值
左轮速度=速度-PID修正值
右轮速度=速度+PID修正值
上一次误差=误差
4、单巡线PID调节
公式同双巡线一样,唯一的区别是误差值公式的运算,
预期目标值=(白线光值+黑线光值)/2
当前值:实际巡线检测的值
误差=预期目标值-当前值
PID参数调试口诀
参数整定找最佳,从小到大顺序查
先是比例后积分,最后再把微分加
曲线振荡很频繁,比例度盘要放大
曲线漂浮绕大湾,比例度盘往小扳
曲线偏离回复慢,积分时间往下降
曲线波动周期长,积分时间再加长
曲线振荡频率快,先把微分降下来
动差大来波动慢,微分时间应加长
理想曲线两个波,前高后低4比1
一看二调多分析,调节质量不会低
这口诀我看不懂,所以用不来,上面调节法是我看了很多文章视频自己不断调试总结出来的,不一定对,现在我可以凭借感觉调整到最佳状态,但是讲解的话也只能讲成这样了。
小车PID巡线调节的更多相关文章
- 四旋翼飞行器Quadrotor飞控之 PID调节(參考APM程序)
做四轴也有一段时间了.近期一直在做PID方面的工作. 如今四轴基本能够实现室内比較稳定的飞行,操控手感也能够接受.稍后上试飞视频.在此把一些PID方面的经验总结总结和大家分享一下. 首先介绍一下大概的 ...
- PID算法
所谓PID就是比例-积分-微分的英文缩写,但并不是必须同时具备这三种算法,也可以是 PD, PI,甚至只有 P算法控制,下面分别介绍每个参数的含义:首先需要明确一个事实就是,要实现PID算法,必须在硬 ...
- 亚博 Arduino智能小车实验报告
亚博 Arduino智能小车实践报告 一. 程序安装准备 首先安装了Arduino板载USB转串口CH340驱动安装包, 若上述程序安装成功,则可以在我的电脑中找到相应的端口 本机端口号为CO ...
- 亲子编程玩Micro:bit-动力小车“麦昆”
少儿编程之风已经吹进各大城市,编程猫.乐博机器人.童程童美等专业培训机构逐渐进入大家的视野,年龄段已经从K12逐渐降低到幼儿园中班.其实,少儿编程的门槛并不高,它不会让孩子一上手就去接触代码,而是会通 ...
- 电子设计省赛--PID
//2014年4月17日 //2014年6月20日入"未完毕"(未完毕) //2014年6月21日 一開始还以为是多难的算法.事实上就是个渣渣. 当然PID实践中应该会非常难. 另 ...
- 树莓派4B智能小车机器套件——入手组装实验记录
树莓派4B智能小车机器套件--入手组装实验记录 4WD智能小车(4WD SMART ROBOT KIT),支持Arduino.51.STM32.Raspberry Pi等4个版本.本套件采用的是树莓派 ...
- 树莓派-4WD智能小车操作小结
树莓派-4WD智能小车操作小结 树莓派4B-4WD智能小车,双层结构,第一层结构为:小车扩展板(底层)+树莓派主板,通过铜柱隔离固定,小车扩展板相当于计算机的外设扩展板:上面一层为第二层,是三个舵机承 ...
- STM32L476应用开发之七:流量的PID控制
在气体分析仪使用过程中,为了力求分析结果的准确性,一般要求通过的气体流量尽可能的稳定.为了保证流量控制的稳定,我们采用PID调节来控制气路阀门的开度. 1.硬件设计 我们采用的流量计为气体质量流量计, ...
- 经典PID控制及应用体会总结
经典PID控制及应用体会总结 PID控制原理 PID是一种线性控制器,它根据给定值rin(t)与实际输出值yout(t)构成控制方案: 重点关注相关算法是如何对偏差进行处理的: PID控制器各校正环节 ...
- 【嵌入式】Arduino编程基础到应用全解析
Arduino Author: Andrew.Du 基础 基础语法: setup() loop() pinMode(引脚,模式) pinMode(13,OUTPUT):设置13号引脚为输出 //在使用 ...
随机推荐
- linux下npm安装的全局命令无法执行
npm install laravel-echo-server -g 安装了之后在其他目录无法执行,找不到命令,在windows下可以直接使用,在linux下需要配置下环境变量 npm prefix ...
- selenium爬虫2
无头浏览器简介 无头浏览器(Headless Browser)是一种没有图形用户界面的浏览器,它在后台运行,不会显示任何窗口或界面.无头浏览器通常用于自动化任务,如网页抓取.自动化测试和性能监控等. ...
- C# 多文件打包
public HttpResponseMessage GetZip() { var response = Request.CreateResponse(HttpStatusCode.OK); try ...
- 自定义的 Vue 3 Composition API 钩子,antd标签
1. 创建自定义钩子 useDeviceStatus.js: import { computed } from 'vue'; export function useDeviceStatus(statu ...
- 【Linux】U-Boot 加载并启动 Linux 系统程序
U-Boot 加载并启动 Linux 系统程序 零.介绍 最近在玩一些嵌入式的开发板,在引导操作系统时需要用到U-Boot,故此研究一下. U-Boot(Universal Bootloader)是一 ...
- Code First 初始化数据时发生异常
问题重现 用Entity Framework的Code First默认生成的数据库文件被我直接删除了, 然后不管怎么重新编译等等, 运行后总是会报错如下: 解决方案同下 Cannot attach t ...
- FREERTOS指令测试的思考
采用freertos编程后,有必要增加指令测试的功能: 1.便于对于软件各个子模块或功能点进行测试. 2.便于对硬件各个功能点是否正常进行测试. 在裸机编程中,我们一般使用串口进行运行数据的打 ...
- ocr识别遇到的小问题-图片的EXIF 元数据
背景 之前在公司通过paddleocr写了个接口,传入图片的base64编码返回识别出的文字信息.但是图片为横向时,文字行会乱序,所以准备新加一个功能通过paddleclas推理图片文字的倾斜角度 ...
- 在 Idea 中使用 Git
以 git-2.21.0 为例说明安装步骤: 双击 Git-2.21.0-64-bit.exe 点击 Next 设置安装路径 点击 Next 点击 Next 点击 Next,选择默认的编辑器 点击 N ...
- 康谋分享 | 仿真驱动、数据自造:Anyverse巧用合成数据重构智能座舱
随着汽车向智能化.场景化加速演进,智能座舱已成为人车交互的核心承载.从驾驶员注意力监测到儿童遗留检测,从乘员识别到安全带状态判断,座舱内的每一次行为都蕴含着巨大的安全与体验价值. 然而,这些感知系统要 ...