|
mpu6050.c函数里pitch应该是我们balance函数里的angle,但是并没有找到将pitch定义成angle的赋值语句,main函数里又莫名其妙的出现了angle_balance,请问这是什么情况,怎么将pitch对应到balance的?
1.main函数里:
Balance_Pwm =balance(Angle_Balance,Gyro_Balance);
2.control.c函数里pid直立控制:
int balance(float Angle,float Gyro)
{
float Bias;
int balance;
Bias=Angle-Zhongzhi; //===求出平衡的角度中值 和机械相关
balance=Balance_Kp*Bias+Gyro*Balance_Kd; //===计算平衡控制的电机PWM PD控制 kp是P系数 kd是D系数
return balance;
}
3.mpu6050.c函数里:
/**************************************************************************
函数功能:读取MPU6050内置DMP的姿态信息
入口参数:无
返回 值:无
作 者:平衡小车之家
**************************************************************************/
void Read_DMP(void)
{
unsigned long sensor_timestamp;
unsigned char more;
long quat[4];
dmp_read_fifo(gyro, accel, quat, &sensor_timestamp, &sensors, &more);
if (sensors & INV_WXYZ_QUAT )
{
q0=quat[0] / q30;
q1=quat[1] / q30;
q2=quat[2] / q30;
q3=quat[3] / q30;
Pitch = asin(-2 * q1 * q3 + 2 * q0* q2)* 57.3;
Roll= atan2(2 * q2 * q3 + 2 * q0 * q1, -2 * q1 * q1 - 2 * q2* q2 + 1)* 57.3; // roll
}
}
|
|