专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
NXP
光电,差速转弯
2020-02-21 21:35
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
NXP MCU
7134
24
24
刚开始做小车,采用差速转弯,求助
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
24条回答
wgjn123
2020-02-23 21:10
这是arduino的基本PID程序
unsigned long lastTime;
double Input, Output, Setpoint;
double errSum, lastErr;
double kp, ki, kd;
void Compute()
{
/*How long since we last calculated*/
unsigned long now = millis();
double timeChange = (double)(now - lastTime);
/*Compute all the working error variables*/
double error = Setpoint - Input;
errSum += (error * timeChange);
double dErr = (error - lastErr) / timeChange;
/*Compute PID Output*/
Output = kp * error + ki * errSum + kd * dErr;
/*Remember some variables for next time*/
lastErr = error;
lastTime = now;
}
void SetTunings(double Kp, double Ki, double Kd)
{
kp = Kp;
ki = Ki;
kd = Kd;
}
复制代码
output=Kpe(t)+Ki
这是一个PID的基本程序,我看了一下,一知半解,如果用到我的这种小车里,
input:编码器检测小车速度值,
output:输出小车速度:
setpoint:设置小车直线标准速度
unsigned long now = millis();//这是arduino中计时的一个函数,即now为从程序执行到此的时间
我不太了解timechange计算是从哪开始到哪结束???????
加载中...
查看其它24个回答
一周热门
更多
>
相关问题
手把手学会例程系列:i.MX<二>:图解i.mx53源码补丁+烧录(...
59 个回答
从零开始MQX开发之二 创建与调试MQX项目
24 个回答
7009: Trim value invalid, value is blank or zero是什么错误
0 个回答
怎么头像消失啊?
23 个回答
求推荐KINETIS评估板:必备USB HS,ETHERNET
5 个回答
相关文章
基于IMX6Q移植uboot2018-09——添加单板
0个评论
IMX6UL定时器按键消抖实验
0个评论
I.MX6U处理器LED灯点亮汇编程序代码编写
0个评论
在NXP I.MX6上做一个基于Opencv和OpenGL的打砖块游戏
0个评论
【RFID安全】浅谈卡片破解
0个评论
LM75a
0个评论
emwin字库制作及汉字显示
0个评论
STM32学习之I2C
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
NXP
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
- 这是arduino的基本PID程序
- unsigned long lastTime;
- double Input, Output, Setpoint;
- double errSum, lastErr;
- double kp, ki, kd;
- void Compute()
- {
- /*How long since we last calculated*/
- unsigned long now = millis();
- double timeChange = (double)(now - lastTime);
-
- /*Compute all the working error variables*/
- double error = Setpoint - Input;
- errSum += (error * timeChange);
- double dErr = (error - lastErr) / timeChange;
-
- /*Compute PID Output*/
- Output = kp * error + ki * errSum + kd * dErr;
-
- /*Remember some variables for next time*/
- lastErr = error;
- lastTime = now;
- }
-
- void SetTunings(double Kp, double Ki, double Kd)
- {
- kp = Kp;
- ki = Ki;
- kd = Kd;
- }
复制代码output=Kpe(t)+Ki
这是一个PID的基本程序,我看了一下,一知半解,如果用到我的这种小车里,
input:编码器检测小车速度值,
output:输出小车速度:
setpoint:设置小车直线标准速度
unsigned long now = millis();//这是arduino中计时的一个函数,即now为从程序执行到此的时间
我不太了解timechange计算是从哪开始到哪结束???????
一周热门 更多>