基于视觉导航两轮平衡车的设计毕业论文(编辑修改稿)内容摘要:
[0].CnSC = 0。 FTM0CONTROLS[0].CnSC |= (FTM_CnSC_MSB_MASK|FTM_CnSC_ELSB_MASK)。 FTM0CONTROLS[1].CnSC = 0。 FTM0CONTROLS[1].CnSC |= (FTM_CnSC_MSB_MASK|FTM_CnSC_ELSB_MASK)。 FTM0COMBINE amp。 = ~FTM_COMBINE_DECAPEN0_MASK。 FTM0COMBINE amp。 = ~FTM_COMBINE_COMBINE0_MASK。 FTM0CONTROLS[2].CnSC = 0。 FTM0CONTROLS[2].CnSC |= (FTM_CnSC_MSB_MASK|FTM_CnSC_ELSB_MASK)。 FTM0CONTROLS[3].CnSC = 0。 FTM0CONTROLS[3].CnSC |= (FTM_CnSC_MSB_MASK|FTM_CnSC_ELSB_MASK)。 FTM0COMBINE amp。 = ~FTM_COMBINE_DECAPEN1_MASK。 FTM0COMBINE amp。 = ~FTM_COMBINE_COMBINE1_MASK。 FTM0CONTROLS[0].CnV = (((FTM0MOD)*(PWMDuty))/1000)。 FTM0CONTROLS[1].CnV = (((FTM0MOD)*(PWMDuty))/1000)。 FTM0CONTROLS[2].CnV = (((FTM0MOD)*(PWMDuty))/1000)。 FTM0CONTROLS[3].CnV = (((FTM0MOD)*(PWMDuty))/1000)。 陀螺仪 加速度计采集模块 : 此视觉 导航平衡车系统采用 MPU6050陀螺仪 加速度计集成芯片 , MPU6050整合了 3轴陀螺仪、 3轴加速器,并含可藉由第二个 I2C 端口连接其他厂牌之加速器、磁力传感器、或其他传感器的数位运动处理 (DMP: Digital Motion Processor)硬件加速引擎,由主要 I2C 端口以单一数据流的形式,向应用端输出完整的 9轴融合演算技术 InvenSense 的运动处理资料库,可处理运动感测的复杂数据,降低了运动处理运算对操作系统的负荷,并为应用开发提供架构化的 API。 I2C( Inter- Integrated Circuit)总线是由 PHILIPS 公司开发的两线式串行总线,用于连接微控制器及其外围设备。 是微电子通信控制领域广泛采用的一种总线标准。 它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。 I2C 总线支持任何 IC 生产过程 (CMOS、双极性)。 通过串行数据( SDA)线和串行时钟 ( SCL)线在连接到总线的器件间传递信息。 通过 MK60FX512VLQ15 MCU 内部的 I2C 模块可以实现 对 MPU6050的 采集。 具体的配置如下: 配置 I2C: SIM_SCGC4 |= SIM_SCGC4_I2C0_MASK。 PORTB_PCR2 = PORT_PCR_MUX(2)。 PORTB_PCR3 = PORT_PCR_MUX(2)。 I2C_F_REG(I2Cx[i2]) = I2C_F_MULT(mult) | I2C_F_ICR(scl_dev)。 I2C0_C1 = I2C_C1_IICEN_MASK | I2C_C1_TXAK_MASK。 配置 MPU6050: i2c_writeaddr(I2C_Moudle, ADDRESS, MPU6050_PWR_MGMT_1, 0x00)。 i2c_writeaddr(I2C_Moudle, ADDRESS, MPU6050_PWR_MGMT_2, 0x00)。 i2c_writeaddr(I2C_Moudle, ADDRESS, MPU6050_CONFIG, 0x06)。 i2c_writeaddr(I2C_Moudle, ADDRESS, MPU6050_GYRO_CONFIG, 0x08)。 i2c_writeaddr(I2C_Moudle, ADDRESS, MPU6050_ACCEL_CONFIG, 0x08)。 读取 姿态数据: ACCEL_Z = ((int16)i2c_readaddr(I2C_Moudle ,ADDRESS, ACCEL_ZOUT) 8) |(int16)i2c_readaddr(I2C_Moudle, ADDRESS, ACCEL_ZOUT + 1)。 GYRO_X = ((int16)i2c_readaddr(I2C_Moudle, ADDRESS, GYRO_XOUT) 8) |(int16)i2c_readaddr(I2C_Moudle, ADDRESS, GYRO_XOUT + 1)。 周期 中断定时器模块 : 此视觉 导航平衡车系统 需要 运行多任务,比如速度控制 、 姿态算法、平衡控制、转向控制、等。 因此我们需要简要的实现任务切换算法,所以我们需要使用周期中断定时器实现任务切换算法。 周期中断定时器配置如下 : SIMSCGC6 |= SIM_SCGC6_PIT_MASK。 PITMCR amp。 = ~PIT_MCR_MDIS_MASK。 PITMCR |= PIT_MCR_FRZ_MASK。 PITCHANNEL[1].LDVAL = (uint32_t)time。 PITCHANNEL[1].TFLG |= PIT_TFLG_TIF_MASK。 PITCHANNEL[1].TCTRL |= PIT_TCTRL_TEN_MASK。 PITCHANNEL[1].TCTRL |= PIT_TCTRL_TIE_MASK。 NVIC_EnableIRQ(PIT1_IRQn)。 NVIC_Init(PIT1_IRQn, NVIC_PriorityGroup_3, 1, 0)。 简单 的任务切换程序如下: void PIT0_IRQHandler(void) { PITCHANNEL[0].TFLG |= PIT_TFLG_TIF_MASK。 Stitic unsigned char sys_t = 0。 switch(sys_t ++) { case 0:{ }break。 case 1:{ }break。 case 2:{ }break。 case 3:{ }sys_t = 0。 break。 } } 互补滤波算法 及 平衡控制模块 : 平衡 理论分析: 对于基于 视觉两轮 平衡车, 可以分析为一个倒立摆系统, 如果 车体 有 向前倒的趋势,那么 车体 需要向前加速运动保持平衡,如果车体有向后倒的趋势,那么车体需要向后加速运动保持平衡。 对 此系统 建立 动力学数学模型 ,可以 看出此系统是一个倒立的重力场系统。 在 重力场中 : 回复力 与角度成正比,同时 空气 中具有阻尼力, 因此 单摆系统可以保持稳定。 是一个 负反馈系统。 F = −mgsinθ ≈ −mgθ 在 倒立摆系统中: 偏离 一定的位置之后回复力与位移方向相 同 ,导致继续偏离平衡位置,最终倒下。 是 一个正反馈系统。 因此我们 必须额外提供其他的力(即车轮的加速度) 以 提供回复力 , 同时我们还需要提供阻尼力。 F = mgsinθ − macosθ ≈ mgθ −𝑚𝑘1θ 因此 总结出,在整个系统中, 角度 即为系统增益,角速度即为系统阻尼,通过对角度和角速度的偏差的比例和微分控制既可以达到平衡。 在 这个 系统 中,我们需要两个条件,第一个是 我们 可以控制车体前后加速运动,这个我们可以控制电机运动达到这个目的,第二个条件是我们可以监测车体此时此刻的姿态 ( 包括角度和角速度) , 这个我们可以通过角速度传感器陀螺仪和 加速度 传感器加速度计来 采集 此时此刻的车体姿态。 对于基于 视觉两轮 平衡车 而言, 我 们通过加速度计和陀螺仪 MPU6050 采集 到原始 姿态 值 ,但是加速度计对车体的加速度比较 敏感,取瞬时值计算倾角误差比 较大;而陀螺仪积分得到的角度不受小车加速度的影响,但是随着时间的增加积分漂移和温度漂移带来的误差比较大。 所以这两个传感器正好可以弥补相互的缺点。 互补滤波就是在短时间内采用陀螺仪得到的角度做为最优,定时对加速度采样来的角度进行取平均值来校正陀螺仪的得到的角度。 就是,短时间内用陀螺仪比较准 确,以它 为主;长时间用加速度计比较准确,这时候加大它的比重,这就是互补;加速度计要滤掉高频信号,陀螺仪要滤掉低频信号,互补滤波器就是根据传感器特性不同,通过不同的滤波器(高通或低通,互补的),然后再相加得到整个频带的信号,例如,加速度计测倾角,其动态响应较慢,在高频时信号不可用,所以可通过低通抑制高频;陀螺响应快,积分后可测倾角,不过由于零漂等,在低频段信号不好。 通过高通滤波可抑制低频噪声。 将两者结合,就将陀螺和加表的优点融合起来,得到在高频和低频都较好的信号,互补滤波需要选择切换的频率点,即高通和低通的频 率, 这就是滤波。 低通滤波 (Lowpass filter) 是一种过滤方式,规则为低频信号能正常通过,而超过设定临界值的高频信号则被阻隔、减弱。 但是阻隔、减弱的幅度则会依据不同的频率以及不同的滤波程序(目的)而改变。 它有的时候也被叫做高频去除过滤( highcut filter)或者最高去除过滤( treblecut filter)。 低通过滤是高通过滤的对立。 低通滤波器的离散公式: Y(k) = (Tc/(Tc+Ts))*Y(k1) + (Ts/(Tc+Ts))*X(k) 其中 Tc 为滤波时间系数, Ts 为采样时间, X(k)为当前采样值 ,Y(k)为滤波器输出值 ,Y(k- 1)为滤波器的上次输出。 高通滤波 (highpass filter) 是一种过滤方式,规则为高频信号能正常通过,而低于设定临界值的低频信号则被阻隔、减弱。 但是阻隔、减弱的幅度则会依据不同的频率以及不同的滤波程序(目的)而改变。 它有的时候也被叫做低频去除过滤( lowcut filter)。 高通滤波是低通滤波的对立。 互补滤波 的 Matlab 仿真: % Complement filter Simulation System % angle= * (angle + angle_dot * dt) + * ACCEL_Z。 clc。 clear。 dt=。 %2ms angle = 0。 angle_dot = 0。 for i=0::50 ACCEL_Z = sin(i) + 5*(1+(1(1))*rand(1))。 GYRO_X = cos(i) + 5*(1+(1(1))*rand(1))。 angle_dot = GYRO_X。 angle= * (angle + angle_dot * dt) + * ACCEL_Z。 % ACCEL_Z = m紫红 *星号 angle_dot = r红:点线 angle = k黑-实线 plot (i,ACCEL_Z,39。 m39。 ,i,angle_dot,39。 r39。 ,i,angle,39。 k39。 )。 hold on end 在 此仿真系统中 陀螺仪给的值为余弦函数 + 5*[1 1]之间的随机, 加速度的值为正弦函数 +5*[1 1 ]之间的随机数 ACCEL_Z = sin(i) + (1+(1(1))*rand(1))。 GYRO_X = cos(i) + (1+(1(1))*rand(1))。 angle= * (angle + angle_dot * dt) + * ACCEL_Z。 ACCEL_Z = sin(i) + (1+(1(1))*rand(1))。 GYRO_X = cos(i) + (1+(1(1))*rand(1))。 angle= * (angle + angle_do。基于视觉导航两轮平衡车的设计毕业论文(编辑修改稿)
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。