前言
这是本人首次使用维特智能WT931的反馈数据去调云台,发现跟使用电机编码器的过程和效果大大不同,特记录一下以供参考一、读取方式
WT931有2种读取方式,分别是串口和I2C。在使用上位机读取时,使用串口的方式读取;使用STM32读取时,串口和I2C都可以。由于I2C的速度相对较快,所以使用的是I2C。
要读取的云台信息为YAW轴信息,由于目前陀螺仪是放在YAW轴的,则陀螺仪z轴的角度和角速度信息就是云台YAW轴PID运算时所要用到的信息。
二、PID调试过程
WT931读取回来的角速度单位为:度每秒
角度单位为度。为了PID好调一些,于是通过将2个数据进行线性处理后再作为PID计算时所用到的值
1.WT931第一套数据
数据信息
读取回来的角度和角速度信息线性处理-第一套数据:
Machanical_angle_yaw = IMU->total_angle *(8192/360);
Machanical_speed_yaw = IMU->speed_gyro/6.0f;
PID参数设置(19年infantry的YAW轴)。
/*云台yaw电机PID参数初始化,由WT931陀螺仪反馈角度信息*/
PID_struct_init(&Gimbal_Motor_Pid_pos_IMU[YAW], POSITION_PID,200, 30, 0.7f, 0.0f, 1.0f); //位置环
PID_struct_init(&Gimbal_Motor_Pid_Spd_IMU[YAW], POSITION_PID,30000, 2000, 30.0f, 1.0f,10.0f);//速度环
调试过程
笔者首先调试了速度环,通过调试P让响应速度变快,P给到50都没有异常,但是达不到目标速度,后通过给I让速度达到目标值消除静差,但发现此时在给定速度值为0时无法定住云台,后来发现是I过大引起的,于是降低积分限幅和I。但奇怪的是,若在此时的速度环数据基础上加位置环,那么无论位置环的P给的多小,云台都很抖。鉴于此情况,只能减小速度环的P,直到降至30云台才不抖。接着通过给位置环P,但此时云台到达目标值后还会有震荡的情况,于是通过给D抑制云台运动(速度环和位置环都给),但是D也不能给的太大,太大的话也同样导致云台抖动。
云台效果
调出来的云台效果并不是特别理想,不是很硬,但也已经是所能调试到的最优效果,发现同编码器反馈数据相比,调试的过程更为艰辛,跳出来的效果相对也不是那么好,特别是I不能给的太大,导致其硬度不够。
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。