平衡小车设计_4_PID实现

2023-11-17

平衡小车设计_4_PID实现

 

参考平衡之家的算法实现

 

首先明确三个环的PID都是位置式PID

 

1、角度环:PD

g_tPidA.actual=roll;	
g_tPidA.err=g_tPidA.actual-g_tPidA.set;	
g_tPidA.delta=gyrox;	
g_tPidA.out=g_tPidA.kp*g_tPidA.err+g_tPidA.kd*g_tPidA.delta;		

第一行:取当前角度

第二行:求角度偏差

第三行:取当前角速度

第四行:求角度环输出

 

2、转速环:PI

g_tPidS.actual=(g_lSpeed1-g_lSpeed2);						
g_tPidS.err=g_tPidS.actual-g_tPidS.set;					
g_tPidS.delta=0.7*g_tPidS.delta+0.3*g_tPidS.err;
g_tPidS.integral += g_tPidS.delta;						

if(g_ucDir1 == FORWARD)
	g_tPidS.integral += g_fSpeed;	
else if(g_ucDir1 == BACKWARD)
	g_tPidS.integral -= g_fSpeed;	
	
if(g_tPidS.integral>g_fSpeedMax){
	g_tPidS.integral=g_fSpeedMax;
}else if(g_tPidS.integral<-g_fSpeedMax){	
		g_tPidS.integral=-g_fSpeedMax;
}
g_tPidS.out = (g_tPidS.ki*g_tPidS.integral)+(g_tPidS.kp*g_tPidS.delta);
g_tPidS.out = -g_tPidS.out;

第一行:取速度之和作为速度表征量(这里因为方向相反所以取 “-” ,实际计算是数值大小之和)

第二行:求速度偏差

第三行:对速度偏差低通滤波

第四行:求近似积分

第一组if else:根据先后行进方向给定速度(通过给定位移来产生给定速度)

第二组if else:积分限幅(其大小决定速度的最大值)

最后两行:求转速环输出(最后一行可有可无,根据实际极性调整PID参数极性即可)

 

3、转向环:模糊PD

if(ucFlag == 0)
{
	g_tPidT.err = 0;
	fActuralKd = g_tPidT.kd;
	if(g_ucDir2 != STOP)
	{
		ucFlag = 1;			
		fTmp = g_lSpeed1 + g_lSpeed2;
		fTmp = 150 / fTmp;		
		if(fTmp < 8)
			g_fAdd = 8;		
		else if(fTmp > 80)
			g_fAdd = 80;
		else
			g_fAdd = fTmp;
	}
}
else
{
	fActuralKd = 0;
	if(g_ucDir2 == STOP)
	{
		ucFlag = 0;
	}
	else
	{
		if(g_ucDir2 == LEFT)
			g_tPidT.err += g_fAdd;	
		else if(g_ucDir2 == RIGHT)
			g_tPidT.err -= g_fAdd;	
		
		if(g_tPidT.err > g_fMax)
			g_tPidT.err = g_fMax;
		else if(g_tPidT.err < -g_fMax
			g_tPidT.err = -g_fMax;	
	}
}
g_tPidT.out = -g_tPidT.kp*g_tPidT.err + fActuralKd*gyroz;	

思路:根据左右移动标志计算转向环输出

1、非转向状态下:D控制,抑制转向偏差

采集当前转向角速度

根据转向角速度大小输出控制量抑制转向

 

2、转向状态下:P控制,人为给定转向偏差

根据当前速度给定一个转向偏差的递增值

每次计算,转向环输出按递增值进行线性递增

转向环输出限幅

 

3、注意转向环控制量在两个电机的控制中应反向叠加

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

平衡小车设计_4_PID实现 的相关文章

  • 合肥工业大学密码学课设-RSA

    作者简介 CSDN内容合伙人 信息安全专业在校大学生 系列专栏 课设 密码学课设 RSA 新人博主 欢迎点赞收藏关注 会回访 舞台再大 你不上台 永远是个观众 平台再好 你不参与 永远是局外人 能力再大 你不行动 只能看别人成功 没有人会关
  • windows操作系统基础总结

    文章目录 引言 一 文件目录管理 二 网络配置 三 用户和群组 四 进程 五 核心文件 六 日志审核 七 登录日志 八 恶意行为跟踪 九 日志分析工具 引言 对windows下常见的dos命令进行总结 以及windows操作系统基础知识进行
  • Linux Centos7 测试硬盘IO速度

    1 测试磁盘写速度 time dd if dev zero of test dd bs 1M count 2000 2 测试磁盘读速度 time dd if test dd of dev null bs 1M
  • 云计算:优势与未来趋势

    文章目录 前言 一 云计算的优势 1 降低IT成本 2 提高工作效率 3 提高业务的可靠性和稳定性 4 提升安全性 二 未来发展趋势 1 AI与云计算的融合 2 边缘计算的发展 3 多云的趋势 4 服务器和存储的创新 三 行业应用案例 1
  • spring ioc流程

    spring 大体流程 spring的核心是ioc 所有的操作都是基于ioc来完成的 ioc是一个容器 为了解决类跟类之间的耦合问题 就是说 有一个A类 有一个B类 public class A B b new B public class
  • 理解图像卷积操作的意义

    数字信号处理中卷积 卷积一词最开始出现在信号与线性系统中 信号与线性系统中讨论的就是信号经过一个线性系统以后发生的变化 由于现实情况中常常是一个信号前一时刻的输出影响着这一时刻的输出 所在一般利用系统的单位响应与系统的输入求卷积 以求得系统
  • STM32MP153 Ubuntu系统移植到ST的STM32MP157-DK2记录

    米尔科技STM32MP153 Ubuntu系统移植到ST的STM32MP157 DK2记录 ubuntu18 ros系统 边缘计算 先上最终效果 核心思想 1 解包 挂载 先把米尔科技提供的ubuntu文件系统解包 然后挂载到一个文件夹mn
  • mybatis与mysql的Json格式映射-使用JSONObject

    mybatis与mysql的Json格式映射 使用JSONObject codestn 程序方块 mybatis与mysql的Json格式映射 使用JSONObject JavaBean类 1 2 3 4 5 6 7 public clas
  • 江西南昌电气机械三维测量仪机械零件3d扫描-CASAIM中科广电

    精密机械零部件是指机械设备中起到特定功能的零件 其制造精度要求非常高 这些零部件通常由金属 塑料或陶瓷等材料制成 常见的精密机械零部件包括齿轮 轴承 螺丝 活塞 阀门等 精密机械零部件的制造需要高精度的加工设备和工艺 以确保其尺寸 形状和表
  • wps指定路径不存在怎么办_WPS说目录不存在

    网友提问 安装wps之后 将其打开报错文件 打开的时候提示wps目录不存在的现象 并且将其卸载也是于事无补 那wps临时目录不存在提示无法卸载是怎么回事 下面就来看看wps临时目录不存在提示该如何解决 故障解决 一 wps应用程序本身的故障
  • Python pathlib库路径,使用sorted(中文、字母和数字混合名称)定义排序,解决1位数、2位数、3位数的数字排序问题

    Path rgolb 当路径指向一个目录时 列出该路径下所有子路径 默认升序排列 输出为 使用sorted和lambda定义排序 中文 字母和数字混合名称的排序 输出
  • SpringCloud简介及使用

    SpringCloud简介 Spring cloud是一个基于Spring Boot实现的服务治理工具包 在微服务架构中用于管理和协调服务的 微服务 就是把一个单体项目 拆分为多个微服务 每个微服务可以独立技术选型 独立开发 独立部署 独立
  • Ego小程序测试

    Ego小程序测试 一 前置知识 1 小程序MiniProgram 2 小程序和App区别 3 小程序和App联系 4 微信开发者工具 5 技术架构 二 Ego商城介绍 三 测试流程 四 Ego商城项目部署 1 注册微信小程序账号 2 后端部
  • 数据分析之面试题目汇总(万字解读)

    1 解释数据清洗的过程及常见的清洗方法 数据清洗是指在数据分析过程中对数据进行检查 处理和纠正的过程 是数据预处理的一步 用于处理数据集中的无效 错误 缺失或冗余数据 常见的清洗方法包括 处理缺失值 处理异常值 去除重复值 统一数据格式等
  • 2_C/S模型编程示例1

    本文主要参考C语言中文网和linux网络编程 网络基础 socket编程 高并发服务器 1 网络程序设计模式 1 1 CS模式 客户机 client 服务器 server 模式 需要在通讯两端各自部署客户机和服务器来完成数据通信 1 本地可
  • Docker 安装 FastDFS

    FastDFS 是一个开源的分布式文件系统 对文件进行管理 功能包括 文件存储 文件同步 文件访问 文件上传 文件下载 等 解决了大容量存储和负载均衡的问题 特别适合以文件为载体的在线服务 如相册网站 视频网站等等 FastDFS 服务端有
  • 设计模式之惰性模式

    惰性模式 惰性模式并不是经典设计模式中的一种 可以把它看作一种拓展的设计模式 它的使用场景通常如下 当执行某段代码前有前置逻辑判断 但该前置逻辑判断在特定环境下不会发生改变时 只需要执行一次 如果已知前置的逻辑判断后 仍然每次执行方法都走一

随机推荐

  • VUE使用vue-print-nb实现打印功能,解决图片问题,样式问题

    vue做了一个打印功能 也遇到过一些问题 记录一下 有些问题欢迎大家批评指正 从网上找了一些打印方式最终决定用这种方式 安装 npm install vue print nb save 然后在main js中引入 import Print
  • QT 串口发送接收(带发送缓冲区)

    QT 串口发送接收 带发送缓冲区 串口代码更改 这里记录一下 接收因为是类似于中断的方式 接收一次处理一次 就没做接收缓冲区 与主板通讯模式为主从模式 串口发送函数用时钟轮询该函数 文章目录 QT 串口发送接收 带发送缓冲区 变量定义 串口
  • cuda编译错误

    error LNK2019 无法解析的外部符号 cudaDeviceSynchronize error LNK2019 无法解析的外部符号 cudaConfigureCall error LNK2019 无法解析的外部符号 cudaSetu
  • Qt5中.ui图形界面添加背景图片实操

    为了图形界面能看得下去 还是要添加一些图片之类的 基于之前的文章基于pyqt5简单搭建 ui图形界面 的界面框架来给界面简单添加一个背景图 1 电脑开始中找到 Qt Designer打开 2 弹出窗口点击 打开 有基础框架的 ui文件 所以
  • openstack镜像的管理与使用

    1 创建项目和用户 1 1 创建项目和用户 用SSH工具连接控制节点 这里是10 10 83 3 使用admin用户权限 执行如下命令 root admin openrc 1 2创建一个test项目 openstack project cr
  • python真的很骚可惜你不会

    python基本语法 博客主页 微笑的段嘉许博客主页 欢迎关注 点赞 收藏 留言 本文由微笑的段嘉许原创 51CTO首发时间 2023年1月日30 坚持和努力一定能换来诗与远方 作者水平很有限 如果发现错误 一定要及时告知作者哦 感谢感谢
  • asp.net core abp 视频教程1

    B站视频教程 abp视频教程1 本次视频主要讲解abp模板工程的下载及运行 践行费曼学习法
  • 数字IC手撕代码-兆易创新笔试真题

    前言 本专栏旨在记录高频笔面试手撕代码题 以备数字前端秋招 本专栏所有文章提供原理分析 代码及波形 所有代码均经过本人验证 目录如下 1 数字IC手撕代码 分频器 任意偶数分频 2 数字IC手撕代码 分频器 任意奇数分频 3 数字IC手撕代
  • elementUI table宽度自适应fit

    fit true 或者直接为 fit 转载于 https www cnblogs com panax p 11239664 html
  • 零基础入门语义分割-Task3 语义分割模型发展

    零基础入门语义分割 Task3 语义分割模型发展 3 语义分割模型发展 3 1 学习目标 3 2 FCN 3 3 SegNet 3 4 Unet 3 5 DeepLab 3 6 RefineNet 3 7 PSPNet 3 8 基于全卷积的
  • Transformer--Attention is All You Need (推荐--非常详细)

    文章目录 前言 对Transformer的直观认识 论文地址 模型提出的背景 或者动机 本论文模型 Tranformer Model Architecture Encoder residual connection 残差连接 Layer N
  • 机器人操作系统ROS

    锋影 email 174176320 qq com 如果你认为本系列文章对你有所帮助 请大家有钱的捧个钱场 点击此处赞助 赞助额0 1元起步 多少随意 ROS已经发布八周年了 在国外科研机构中非常受欢迎 目前 以美国西南研究院为首的几位大佬
  • 全连接层(Fully Connected Layer)

    一 概述 全连接层的每一个结点都与上一层的所有结点相连 用来把前边提取到的特征综合起来 由于其全相连的特性 一般全连接层的参数也是最多的 在卷积神经网络的最后 往往会出现一两层全连接层 全连接一般会把卷积输出的二维特征图转化成一维的一个向量
  • 金山WPS笔试题总结

    第一题 分别输出什么 var arr arr a 1 console log arr length 0 arr 2 2 console log arr length 3 arr length 0 console log arr a 1 这题
  • Mac安装protobuf 流程

    1 brew安装protobuf 1 安装brew ruby e curl fsSL https raw githubusercontent com Homebrew install master install 2 使用brew安装pro
  • 【超详细】记录从零开始学mmdetection(一)

    一 环境配置 本专题是为了记录学习mmdetection的过程 包括mmdetection的配置 代码的讲解 如何使用mmdetection训练自己的数据集 本节只记录第一部分 环境配置过程 本专题主要是在Linux下配置的 因为mmdet
  • Vue3.0开发之整合vue-admin-template模板

    起源 vue admin template模板算是一个比较好的前端开发模板 不过作者好像没有出vue3 0版本的 所以刚好自己在学习vue3 0 就想到开发一个vue3 0的模板 当然大部分代码都是参照vue admin template模
  • Threejs入门教程

    一 本地搭建Threejs官方文档网站 1 官网地址 Github https github com mrdoob three js 我们可以直接下载压缩包并解压或使用 git clone
  • python批量提取视频帧

    python批量提取视频帧 python批量提取视频帧 两种提取方式 按帧数提取 每个视频提取固定帧数 若所取帧数超过视频总帧数 则截取视频所有帧 按时间间隔提取 每个time提取一帧 1 使用示例 python video set py
  • 平衡小车设计_4_PID实现

    平衡小车设计 4 PID实现 参考平衡之家的算法实现 首先明确三个环的PID都是位置式PID 1 角度环 PD g tPidA actual roll g tPidA err g tPidA actual g tPidA set g tPi