用C++实现一个简单的PID控制器

2023-05-16

用C++实现一个简单的PID控制器


先上代码,原理后面再补充

#include <limits>
#include <iostream>

using namespace std;
class MyPID
{
public:
	MyPID() {}

	void Init(double init_v, double goal_v, double p, double i, double d)
	{
		initval = init_v;
		goal = goal_v;
		p_coe = p;
		i_coe = i;
		d_coe = d;
		err = goal - initval;
	}

	void UpdateErr(double cte)
	{
		if (step == 1)
		{
			p_err = cte;
		}
		i_err += cte;
		d_err = cte - p_err;
		p_err = cte;

		++step;
	}

	double TotalErr()
	{
		return p_coe * p_err + i_coe * i_err + d_coe * d_err;
	}
	~MyPID()
	{

	}
public:
	double initval=1;
	double goal=1;
	double err=0;
	int step = 1;
	double p_coe=1, i_coe=1, d_coe=1;
	double p_err=0, i_err=0, d_err=0;

};
int main()
{
	MyPID Pid;
	double ini = 7, goal = 8, p = 0.3345, i = 0.0011011, d = 0.662;
	
	Pid.Init(ini, goal, p, i, d);
	
	for (int i=0; i<20 ;++i)
	{
		double cte = goal - ini;
		Pid.UpdateErr(cte);
		cte = Pid.TotalErr();
		ini += cte;
		cout << cte << endl;
	}
}

参考
无人驾驶汽车系统入门(四)——反馈控制入门,PID控制

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

用C++实现一个简单的PID控制器 的相关文章

  • 这里带你了解IR2104驱动电路

    Ir2014驱动电路及自举电容的应用 以前做智能车的时候用H桥驱动电路 xff0c 驱动芯片就是用的IR2104 xff0c MOS管用的IR7843 xff0c 想把以前的知识总结一下 1 为什么需要H桥电路 因为驱动电机正反转 xff0
  • 什么是神经网络模型,常见神经网络模型有哪些?

    神经网络模型是机器学习 深度学习的核心 xff0c 针对不同的问题 xff0c 我们需要搭建不同的神经网络模型 为增进大家对神经网络模型的认识 xff0c 本文将对常见的神经网络模型予以介绍 如果你对神经网络模型具有兴趣 xff0c 不妨继
  • STM32L431使用TencentOS tiny操作系统连接腾讯物联网开发平台

    去年腾讯为了宣传自己针对物联网的开源操作系统TencentOS tiny xff0c 举办了一场试用活动 xff0c 当时幸运获得一块 板子实物就这样 xff0c 没啥好介绍的 xff0c 都是基础的外设 xff0c 如今闲来无事 xff0
  • [总线技术]汽车ECU网络传输-诊断协议测试-基于Canoe软件CAPL脚本编写

    一 xff0e 汽车电子电控结构 先介绍一下汽车电子电控的结构 xff0c 汽车并不像电脑一样 xff0c 只有一个CPU xff0c 而是分为多个 CPU 独立工作 xff0c 就是由很多很多个控制器组成的 xff0c 比如 xff1a
  • [STM32F1]关于STM32F103芯片按钮机制串口发送程序

    就是目前遇到一个项目 xff0c 是监视各个按钮状态并将各个按钮的状态发送至上位机 xff0c 上位机进行整体程序逻辑动作 一般情况下串口发送可以直接一直发送给上位机 xff0c 通过解析不同数据位0和1的状态可以知道具体哪个按钮按下 xf
  • [uCOS/RTOS]freertos——创建任务(一)

    FreeRTOS操作系统学习 前言 FreeRTOS操作系统的学习正式开始 一 了解FreeRTOS FreeRTOS共有32个优先级 xff08 0 31 xff09 使用时0和31不使用 优先级规则 xff1a 数字越大优先级越高 任务
  • 基于FreeRTOS的UART空闲中断框架设计

    设计背景 xff1a 针对大部分国产低端MCU ARM CortexM0 来说 xff0c 并没有空闲中断 xff0c 此时就需要一个定时器Timer配合来完成此任务 对于UART接受不定长数据 xff0c 空闲中断还是非常实用的 xff0
  • 2、可迭代对象与迭代器

    1 Iterable 可迭代对象 概念 xff1a python中能够使用for循环遍历的都是可迭代对象 1 常见的可迭代对象 1 1 序列如 xff1a list str tuple range 1 2 非序列 xff1a dict se
  • 帮你分清嵌入式与单片机

    从事计算机和或电子行业相关领域工作的朋友 xff0c 一般都听说过单片机和嵌入式 但是要问单片机和嵌入式两者之间有什么联系 xff0c 大多数人都不能很好的解释清楚 想要弄清楚嵌入式和单片机有什么联系 xff0c 首先就要弄明白什么是嵌入式
  • [MM32生态]Python,让嵌入式应用开发更便捷、更高效、更专注

    前言 前面分享了基于PikaScript如何在MM32平台上部署Python开发环境的帖子 xff0c 实现了Python基础开发环境的部署 xff0c 可以通过串口终端软件在线编写Python xff0c 然后直接运行得到结果 通过Pyt
  • [STM32]STM32移植freemodbus实现modbusTCP

    上次说到采用STM32F1移植了FreeModbus协议栈进行开发实现ModBus RTU协议来进行一些线圈寄存器的控制 xff08 继电器开关 xff09 和一些保持寄存器的读写 xff08 参数配置灯 xff09 xff0c 这次说一下
  • FR8012HAQ利用ADC实现检测电池电压检测的解决方案

    今天要跟大家分享的是FR8012HAQ利用ADC实现检测电池电压检测的解决方案 FR8012HAQ是富芮坤的一款通用蓝牙芯片 特性介绍如下图 xff1a 我们再来看FR8012HAQ的PMU xff0c 它强大的地方还在于内置了充电模块 F
  • [单片机芯片]CH32V307驱动单总线温湿度传感器DHT22

    手头有一个DHT22温湿度传感器和CH32V307开发板 xff0c 可玩性极强 DHT22是已校准的数字温湿度传感器 xff0c 用于检测环境温湿度 xff0c 采用DHT22 AM2302 xff0c 标准单总线接口 拥有比常见的DHT
  • RT_Thread好用吗? RT_Thread成国内最成熟开源RTOS?

    RT Thread 是一款主要由中国开源社区主导开发的开源实时操作系统 许可证GPLv2 实时线程操作系统不仅仅是一个单一的实时操作系统内核 xff0c 它也是一个完整的应用系统 xff0c 包含了实时 嵌入式系统相关的各个组件 xff1a
  • [技术讨论]知识科普のARM和STM32之间的纠葛

    一 ARM和STM32的关系 ARM和STM32是两个不同的概念 xff0c ARM是一家英国公司 xff0c 专注于设计和许可处理器架构 xff0c 而STM32是ST公司基于ARM Cortex M内核的一系列微控制器产品 ARM Co
  • 嵌入式经历了哪些发展阶段?这些嵌入式法则你都了解吗?

    为增进大家对嵌入式的认识 xff0c 本文将对嵌入式发展阶段以及嵌入式中的一些法则予以介绍 嵌入式已经是现在的主流系统以及开发手段之一 xff0c 嵌入式工程师更是占据了一席之地 为增进大家对嵌入式的认识 xff0c 本文将对嵌入式发展阶段
  • 【技术分享】GD32硬件I2C调试中的问题与解决过程-续

    使用GD32303C EVAL开发板和MPL3115A2模块测量气压或高度数据 xff0c 两者间使用硬件I2C进行通讯 上次调试发现官方例程 xff08 单一I2C读写功能 xff09 可以正常读写MPL芯片的寄存器 xff0c 而我建立
  • [技术问答]HC32F460 是否有 RTC?在电池供电方案中该如何使用?

    背景 RTC xff0c 学名实时时钟芯片 xff0c 它是日常生活中应用较为广泛 xff0c 不管是消费类还是工业类的电子产品基本都要求带有时钟 日历或闹钟功能 xff0c 它为人们提供精确的实时时间 或者为电子系统提供精确的时间基准 实
  • 2021年本四小厂面试总结

    菜鸡小厂工程师 xff0c 还是徘徊在一万上下 xff0c 希望今年能拿到20k以上 2021 9 4更新 五月 汇丰 xff1a 1 kotlin 的 apply let 有什么区别 返回的是什么参数或者句子 kotlin作用域函数 ru
  • 关于STL的vector与OpenCV的Mat初始化问题记录

    问题情形 xff1a 需要记录不同的两个Opencv的Mat矩阵 xff0c 由于数量是动态确定的 且很可能 gt 4个 xff0c 所以想通过构建cv Mat的容器来保存结果 同时 xff0c 每个Mat必须初始化为0矩阵且分配内存 错误

随机推荐

  • reStructuredText 、Sphinx 资料汇总

    reStructuredText 用 reStructuredText 写作 xff1a 快速入门指南 reStructuredText rst 快速入门语法说明 reStructuredText rst 语法规则快速入门 在线 reStr
  • 300个韩国网站欣赏

    300个韩国网站欣赏 http www homepg co kr http www yoondesign com http www rodingallery org http www toyota co kr HYUNDAI http ww
  • 使用WinRAR来创建分卷压缩包

    因为科研需求 xff0c 需要将数据备份到百度云盘 xff0c 但很多数据量很大 xff0c 单个文件超过了20G xff0c 因此 xff0c 没有办法直接上传到百度云盘上去 xff0c 如下图 为了解决这个问题 xff0c 考虑到经常玩
  • 写论文时优雅的在word中添加程序代码

    一 工具 打开这个网页PlanetB 如下图 xff1a 二 步骤 1 将你需要插入在word中的代码完整的复制到该网站提示的文本框内 xff0c 选择你的代码类型 xff0c 如C C 43 43 HTML等 xff0c 并点击提交 如下
  • stm32中库函数和hal库的区别

    今天在b站看一个关于嵌入式的视频 xff0c 讲述使用stm32cube软件的 了解这些的小伙伴们应该知道STM32CubeMX 是意法半导体推出的图形化配置工具 xff0c 通过傻瓜化的操作便能实现相关配置 xff0c 最终能够生成C语言
  • python+selenium自动化能打开火狐浏览器但是打不开网址

    python 43 selenium 执行自动化脚本时能打开火狐浏览器而打不开网址时 提示 xff1a Unsupported Marionette protocol version 2 required 3 是由版本不兼容导致的 我安装的
  • 使用docker运行gitlab服务

    之前 xff0c 在服务器上直接安装配置过gitlab xff0c 感觉需要配置安装的东西还是挺多的 xff1a git xff0c redis xff0c postgresql xff0c nginx等 这么多服务一起 xff0c 备份和
  • Kubernetes运维之使用Prometheus全方位监控K8S (概念篇)

    目录 xff1a Prometheus架构 K8S监控指标及实现思路 在K8S平台部署Prometheus 基于K8S服务发现的配置解析 在K8S平台部署Grafana 监控K8S集群中Pod Node 资源对象 使用Grafana可视化展
  • Grafana 告警配置、告警通道及告警内容的安装和配置

    本文主要介绍grafana的告警是如何配置的 xff0c 以及在触发告警时通过邮件和企业微信消息将告警通知给用户 xff0c 最后介绍了如何在告警内容中添加告警时刻的panel图片 告警配置 grafana的告警触发以panel为基础 xf
  • 【面经】momenta 二面

    二面好像主要针对C 43 43 研发来的 所以就基本上问的算法题 面试官小哥哥超nice的 xff0c 整个过程都很耐心 xff0c 最后还细心的讲解了全部的题目 这也太好了8 map的底层实现 xff0c 红黑树 C 43 43 11的了
  • stm32串口通信

    stm32串口通信 基于寄存器与基于固件库编写的差异 使用固件库 xff0c 目前比较多的例程是使用固件库编写的 固件库编写方式 xff0c 特点是简单易于理解 xff0c 资料多 新手适合用这种方式入门 使用寄存器 xff0c 想要深入理
  • markdown和reStructuredText语法简单比较

    PyCharm默认的代码注释就是reStructuredText风格的 加之之前学习 实验设计 这门课的时候 用过readthedocs 43 sphinx写过文档 其默认的格式就是reStructuredText风格的 所以比较好奇 当时
  • python之BeautifulSoup之二 带属性值的抓取(find_all('tag', attrs={'class':'value'})

    系统 xff1a Windows python 2 7 11 利用BeautifulSoup库抓取页面的一些标签TAG值 再抓取一些特定属性的值 示例标签 xff1a lt cc gt lt div id 61 34 post conten
  • 关于租用香港服务器疑问解答

    关于租用香港服务器许多用户还有很多疑问 xff0c 那么下面由专门做海外服务器租用 托管的RAKsmart机房进行疑问解答 香港服务器器租用疑问如下 xff1a 问题一 xff1a 租用香港服务器违法吗 xff1f 租用香港服务器不违法 x
  • 三维重建方法--激光or视觉

    导读 xff1a 激光雷达则是无人驾驶和扫地机器人等领域的核心一环 那么为什么出现多种方案呢 xff1f 它们到底有什么差异 xff1f 看似很酷炫的技术 xff0c 实际上并没有外界想得那么高大上 Realsense之所以能够识别物体的深
  • 虚拟机中ubuntu的中文输入法安装

    1 安装中文语言包 xff0c 在终端里面运行 这个不是很熟悉 xff0c 下面还有些命令 xff0c 但是我只运行了这几个 xff0c 后面就可以顺利安装了 原理不太清楚 sudo apt get install scim sudo ap
  • 1、Ubuntu下安装软件报错

    今天在ubuntu下安装任何软件都提示以下错误 xff1a ideallic 64 ubuntu sudo apt get install git sudo password for ideallic Reading package lis
  • 查看安装的ROS版本号

    1 先在终端输入roscore 2 打开新终端 xff0c 再输入 xff0c rosparam list 3 再输入rosparam get rosdistro就能得到版本
  • [fake_turtlebo.launch] is neither a launch file in package [rbx1_bringup] nor is [rbx1_bringup] ...

    1 问题描述如下 xff1a 2 执行如下命令 export grep ROS 发现ROS PACKAGE PATH不包含本包的路径 3 执行以下命令 cd catkin ws catkin make source devel setup
  • 用C++实现一个简单的PID控制器

    用C 43 43 实现一个简单的PID控制器 先上代码 xff0c 原理后面再补充 span class token macro property span class token directive keyword include spa