初级会员

- 积分
- 111
- 金钱
- 111
- 注册时间
- 2018-2-13
- 在线时间
- 19 小时
|
1金钱
做平衡小车的基本都知道平衡小车的控制可以分为三部分的叠加: 直立控制, 速度控制, 方向控制. 直立控制是最主要的 这三部分控制是最终叠加来输出一个值来控制电机转速的. 我看了一些资料有说到直立控制周期为5ms, 速度控制周期为100ms. 然后为了不太影响到直立控制, 要把速度控制的较为缓慢和平滑, 说是把速度控制的输出变化量平均分配到20步5ms的控制周期中. (暂时不考虑方向控制 假设直立控制输出量:b; 速度控制输出量:s; 最终给电机的控制量(5ms每次): P) 我的理解是:
理解一. P = b+s/20 * i; (i初始值为1 然后++i/5ms, i满20后又为1)
理解二. P = b+s/20;
大家感觉哪个才是正确的呢??? 求解啊!!!
|
最佳答案
查看完整内容[请看2#楼]
嗯,飞思卡尔官方给出的那个程序没用过,不过看你给出的代码确实是你说的那样,“输出是在上次输出的基础之上慢慢改变的,是增量的”。不过,一定要有上一次速度的状态(g_nMotorOutSpeedOld),形成无论何时电机的速度都是渐变的。不知道飞思卡尔这种设计方案怎么样,我项目中的机子鲁棒性不太好,我之前的速度控制方式实现出来的效果不太好。
|