用qgc执行 px4飞控传感器校准时 的步骤确实很麻烦,磁罗盘需要转6个面,加速度计也需要6个面。大疆无人机的校准很简单,加速度计需要静置一会,磁罗盘校准也就转一个面就行了,就算学不来大疆,也适当在可行范围简化一下px4的校准步骤,抱着这个目的,整理一下px4和qgc的交互的校准机制。
目录
一、飞控解锁前的自检机制
这个也比较恶心,飞机用的过程中突然就解不了锁了,重新上下电又好了
自检程序调用在commander模块,run函数里while循环的前面
PreFlightCheck::preflightCheck(&mavlink_log_pub, status, status_flags, _arm_requirements.global_position, false, true,
hrt_elapsed_time(&_boot_timestamp));
在preflightCheck函数里会对每个传感器都进行检查,但有错误时候就会禁止解锁,这块是飞行的保障,代码就不要动了,查阅px4的开发人员手册,发现可修改参数调整自检判断条件 ,点击参数链接进去会有详细参数说明,可以试下适当放松自检条件做测试,链接:http://docs.px4.io/master/en/flying/pre_flight_checks.html
二、飞控的校准机制
1.px4的校准代码
校准命令也是在commander模块
在while循环前,建立低优先级进程
pthread_create(&commander_low_prio_thread, &commander_low_prio_attr, commander_low_prio_loop, nullptr);
在commander_low_prio_loop中有个while循环
等待校准的命令,执行相应的校准函数,每个传感器都有独立的文件;在commader文件目录下
其中磁罗盘的校准函数中说明了可以只校准两个相交的面,从这里入手就可以简化磁罗盘校准。
2.qgc的校准机制
qgc就比较简单了,主要是点击校准开始时发送校准的指令,校准的逻辑时飞控里实现,根据飞控回传的校准数据显示校准的步骤