大二第一次参加智能车竞赛,u1s1这比赛是真滴烧币,(不排除是我老弄炸东西的可能),花了少说4个月,学到的东西不多,心态倒是好了不少,总体还算是有收获,还是遗憾占大头;有不少人刚接触动轮,对有刷不是很熟悉,如果按照Lq官方开源代码调不成功十有八九是电机出事了。希望龙邱品控能更好一点(Lq的驱动做的还不错- =),希望逐飞的方案能更早一点(狗头保命)
串级框架方面,由于角速度的响应快速以及动量轮平衡所根据的动量守恒原理,将角速度环作为内环输出,而中间是角度环,外面则是速度环,浅图示一下:
角速度环方面使用的是增量式PD,看到有人是使用位置式的,其实两种基本一样,只不过增量式计算量较小,对算力压力不大,另外在单车这种高速振动的系统中,实测增量式中加入积分环节效果一般,很容易因各种问题导致饱和,当然也有看到使用位置式PID调的很好的,这可能和陀螺仪的漂移有关,也就要大家自己来选取一款合适的陀螺仪了,这里就抛砖引玉一下。
在Lq所开源的Lqr算法当中是以角度环作为主输出,其中用一个D来处理角速度,实际上加速度才是真正要考虑的点,这也是不耐造的原因之一,(或许加一个角速度环会更好???)在调试过程中,角度环主要是用来补偿速度环带来的溢出或者延迟,因此角度环我只采用了简单的位置式P进行处理,并且调试过程中是粗调的。
速度环虽然作为最外环,我却认为是很重要的一环,因为他决定了你单车受到干扰后保持稳定的能力,采用的是位置式PID进行精调。很多人不理解速度环到底是怎么作为输入的???????很简单的例子,假设单车往左倒需要动轮逆时针转动(车屁股视角),通过编码器的极性你就可以判断出此时车身的姿态到底是往哪边倒的,此时为了让车往右的方向归,便需要不断加速来平衡,这中间就涉及到了溢出的问题,也就是车子会向右倒,这时候就需要粗调角度环来抑制这个影响。(当车身右倒,角度环大就抵消了)
先精调角速度环,到往一个方向倒开始觉得困难了就可以调速度环,加上了速度环以后,车子能立2s左右倒下后开始调速度环,一开始建议大家三个环都只进行普通的P控制,实测效果也非常好,能立且抗干扰能力比Lqr好太多。调参过程中尽可能大的增加速度环,外界干扰姿态,观察归正情况,若有过冲则增大角度环,而角速度环更像是一个比例系数(如果是纯P),所有的修正均可通过修正速度环处理,调好以后加上D值精调。
调好了平衡以后就该引入舵机输入了,舵机打角以后车身姿态是显而易见的会变的,我们可以通过关闭电机后手扶单车测量中点的角度变化,通过一个简单的比例系数P,对舵机PWM输入进行处理并输出叠加到零点上。
暂时懒得写了,同样是动态零点,转哪边零点就往哪边,处理好了就可以压弯。
暂时懒得写了,同样是简单P,别问为啥不用F=(m*v^2)/2,实测调好了能用,当然也可以尝试一下,算法总能找到更好的,调好了无差别压弯,至少1m的速度可以流畅控制转向。(前提是前面所有参数调试好蓝牙控制飞一般的感觉)
完成以上的调试步骤,基本上完赛速度就能上0.7以上了,当然这肯定不是最完美的控制系统,只是给大家一个思路,也没必要无脑冲LQ的开源代码。(最近逐飞刚出无刷新方案,真的猛,建议大家可以尝试用该套路嵌入无刷中控制,无刷存的力比有刷大得多,主要是不容易烧,但是他的稳态转速没那么好控制叭)
增量式PI中并不是不能用I,纯角速度PI效果甚至比角速度P与速度P耦合更加好,其中作出的对积分的限制决策大家可以自己决定,可以贴上几个思路供大家参考,其中思路3实测可行。