本帖最后由 zkcaptain 于 2013-10-11 16:50 编辑
myjcdl 发表于 2013-10-11 15:00
刚调试,总线数据读出了,不知如何处理!
我也正在学,目前来看应该是:将捕捉到的遥控信号(类似于欧拉角)当作期望值,将你自己解算出来的姿态角(欧拉角)当作测量值,然后根据PID的公式,期望值-测量值=误差值,再将这个误差值乘以比例系数kp、积分系数ki、微分系数kd,最后将这三个部分相加,得到经过PID的roll、pitch、roll,然后将这三个经过PID的欧拉角再通过一个x公式或者+公式(好像是这两个公式,看你想要什么样的控制方法了)其中的一个,转化为驱动电调的4个数(因为有4个电调),最后将这4个数通过PWM分别输出给4个电调,完事!
大概是这样,肯定有不准确的地方,PID的公式你可以搜一搜,数字PID的,那个x公式或者+公式网上也有。
为方便描述,下面这个图是模拟PID的公式,数字的跟这个差不多,只不过把模拟的离散化了而已,写代码用数字的PID公式来写。
误差值e(t)=(期望值_欧拉角r(t))-(测量值_欧拉角y(t)),可以算出来3个数u(t)_roll、u(t)_pitch、u(t)_yaw,这三个数再通过x公式或+公式转化为4个给电调的数,用PWM发给电调。 |