资讯详情

PX4:【传感器校准】

  • sensor的校准
    • 校准步骤:
    • 文件目录:
    • 代码入口:
    • 求解模型
    • 计算公式

sensor的校准

校准步骤:

  1. 首先通过地面站QGC进行校准,QGC设置校准参数sh文件中。
  2. 此后再基于QGC的校准参数,不断获取校准数据的更新。

文件目录:

在src/commander文件夹下 包含了 accelerometer_calibration.cpp/.h 校正多个传感器 airspeed_calibration.cpp/.h gyro_calibration.cpp/.h mag_calibration.cpp/.h

代码入口:

Commader.cpp

  • Commander::run() — commander_low_prio_loop() 【 订阅了vehicle_command 】根据cmd各param操作相应的算法: (cmd.param1) == 1 ——> calib_ret = (&mavlink_log_pub); (cmd.param2) == 1 ——> calib_ret = (&mavlink_log_pub); (cmd.param5) == 1 ——> calib_ret = (&mavlink_log_pub); (cmd.param5) == 2 ——> calib_ret = (&mavlink_log_pub); …

求解模型

accelerometer_calibration.cpp旋转校正并获得加速度三轴偏移

  • accel_corr_ref[6][3] = [ g 0 0 ] // nose up | -g 0 0 | // nose down | 0 g 0 | // left side down | 0 -g 0 | // right side down | 0 0 g | // on back [ 0 0 -g ] // level

  • accel_raw_ref [ 6] [ 3]

  • accel_corr_ref[i] = accel_T * (accel_raw_ref[i] - accel_offs), i = 0…5

计算公式

在accelerometer_calibration.cpp的 计算加速度计旋转矩阵和偏移量 先求accel_offs

  • accel_offs[i] = (accel_raw_ref [ i2][ i] accel_raw_ref[i2 1][i]) / 2 , i = 0…2

再求accel_T

  • 9 未知量

  • 需要使用 六个测量方程中的三个 measurements -> 3 * 3 = 9 equations

  • accel_corr_ref[i2] = accel_T * (accel_raw_ref[i2] - accel_offs), i = 0…2 accel_corr_ref[j2][i] = accel_T[i] * (accel_raw_ref[j2] - accel_offs), j = 0…2

A * x = b

  • x = [ accel_T[0][i] ] | accel_T[1][i] | [ accel_T[2][i] ]

  • b = [ accel_corr_ref[0][i] ] | accel_corr_ref[2][i] | [ accel_corr_ref[4][i] ]

  • a[i][j] = accel_raw_ref[i][j] - accel_offs[j], i = 0;2;4, j = 0…2

  • A = [ a[0][0] a[0][1] a[0][2] ] | a[2][0] a[2][1] a[2][2] | [ a[4][0] a[4][1] a[4][2] ]

  • accel_T = A^-1 * g

  • g = 9.80665

标签: px3981传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台