理想情况下,传感器的读数与实际物理量相同,但由于一些随机因素的影响,传感器测量到的数据与实际数据存在偏差,且偏差不停变化。偏差大体分为两种,零位偏差和标度偏差。对于一个传感器来说,实际物理量=K*传感器度数+B。理想状态下,K=1,B=0,但是实际中K与B的值会不停的随机变化,K的改变引起的偏差叫标度偏差,B的改变引起的偏差叫零位偏差。传感器校准,就是通过对已知物理量的测量,求出K与B的值,并将这两个值传入传感器驱动,使得传感器驱动可以解算出准确的物理量。
“六面较准法”:Pixhawk的加速度计是3轴的,也就是在x,y,z三个方向上测得三个加速度,所以存在三个y=kx+b的公式,根据两点确定一条直线的原则,每个轴都要测量到两个不同的已知值,所以将每个轴垂直向下采集一个负G数据,垂直向上采集一个正G数据,从而算出每个轴的k和b值。
入口函数do_accel_calibration
设置驱动中的校准参数为默认值,”px4_ioctl(fd, ACCELIOCSSCALE, (long unsigned int)&accel_scale);“的含义是将校准参数的默认值写入加速度计驱动,默认三个scale是1,三个offset是0。
Calibration_routines.cpp文件中的749行:do_accel_calibration_measurements -> calibrate_from_orientation -> detect_orientation函数的返回值就是机头朝向,六个朝向都会进行一次校准数据采集。calibration_worker函数指针指向accel_calibration_worker函数accel_calibration_worker -> read_accelerometer_avg函数负责采集某个机头朝向的加速度计值,三个轴各取3000个数据平均,然后将平均数从传感器坐标系转换到机体坐标系,将转换后的结果存放到worker_data -> accel_ref[3][6][3]。
零偏计算
六个方向的数据采集完毕后,由calculate_calibration_values函数完成校准结果的计算,o

博客介绍了PX4飞控传感器校准相关内容。先阐述传感器偏差类型及校准原理,介绍“六面校准法”求K与B值。接着说明零偏和比例计算方法。还详细给出IMU与MAG校准步骤,包括校准数据设置与获取,以及陀螺仪、加速度计、地磁的具体校准流程。
最低0.47元/天 解锁文章
4万+

被折叠的 条评论
为什么被折叠?



