前段时间搞了个平衡车,涉及stm32F3 步进电机驱动 陀螺仪mpu3050 加速度计adxl345(也可以用6轴mpu6050) 无线NRF24L01 当初最大问题是卡尔曼滤波(进行陀螺仪与加速度计的数据融合)和pid调节 对于卡尔曼滤波,经过自己不断深究,其实也不是很复杂,核心是五大公式,涉及矩阵运算,思想是预测值 最优估计值 噪声 协方差的概念,难点:一些参数选择
说下用卡尔曼滤波的出发点,陀螺仪 加速度计都可以得到角度,而陀螺仪是先得到角速度再经积分才得到角度, 陀螺仪相比加速度计短时间内动态性能好,得到角度精准,但本身有小漂移,随着时间变长,不断积分,误差会越来越大,那就需要用加速度计进行校正
对于pid算法,里面涉及二级pid,首先要明白小车速度跟给步进电机的频率是成正比的,就把频率等效为速度
第一个pid,角度pid,通过测角度反馈给stm32f3产生频率(速度)来进行平衡调节(即调节角度)
第二个pid,速度pid,由于角度调节产生了速度变化,而为了不改变设定的速度,需要进行速度调节,它的反馈来自不断角度pid的结果(由于速度跟频率成正比,不需要测速反馈)
难点:pid整定参数
文件源代码下载地址:http://www.cirmall.com/bbs/thread-166027-1-1.html