接前一篇文章:ICM20948 DMP代码详解(12)
上一回完成了对inv_icm20948_set_chip_to_body_axis_quaternion函数第2步即inv_rotation_to_quaternion函数的解析。回到inv_icm20948_set_chip_to_body_axis_quaternion中来,继续往下进行解析。为了便于理解和回顾,再次贴出该函数源码:
void inv_icm20948_set_chip_to_body_axis_quaternion(struct inv_icm20948 *s, signed char *accel_gyro_matrix, float angle)
{
int i;
float rot[9];
long qcb[4];
long q_all[4];
long q_adjust[4];
for (i=0; i<9; i++)
rot[i] = (float)accel_gyro_matrix[i];
//convert Chip to Body transformation matrix to quaternion
//inv_icm20948_convert_