logo资料库

PX4姿态解算流程图attitude_estimator_q_main.cpp.pdf

第1页 / 共1页
资料共1页,全文预览结束
extern "C" __EXPORT int attitude_estimator_q_main(int argc, char *argv[]) 告之函数入口 函数attitude_estimator_q_main attitude_estimator_q_main.cpp的工作流程图 by 蜗牛拉火车 函数start (定义attitude_estimator_q 函数句柄、开启任务等) 函数task_main_trampoline 函数task_main 函数内部 1.订阅所需要的topics; 2.采集配置参数(update_parameters),包括权重,是 否利用GPS进行补偿,陀螺仪最大偏差,航向角测 量模式,空速测量模式等; 进入while大循环 函数内部 配置阻塞时间(1ms读取一次se nsor_combined的数据) 更新配置参数(update_p arameters) 采集传感器数据:(ax,ay,az)(w x,wy,wz)(mx,my,mz),其中加 速度和角速度数据要进行低 通滤波处理 依据不同外设 1.用vision或mocap更新航向 2.更新airspeed 函数内部 更新GPS数据: 1. 如果mag_decl_auto配置不为0,利用GP S更新磁偏角; 2. 如果acc_comp配置不为0,则利用GPS 测得速度,转换到机体坐标系下,并存储在 _pos_acc中以待后用 测量循环一次所需时间,作为dt ,如果超过0.02s,取0.02s 函数update() 第一次进入 ,执行函数 Init(),得 到初始四元 数 Init()函数 处理方法 单独列出 二次及以后 进入函数 依据不同外设:利 用vision或mocap 对航向角进行修正 利用(mx,my,mz)对 航向修正,得到修 正量e(yaw) 利用(ax,ay,az)对陀 螺仪修正,得到修 正量e(pitch roll) 修正积分项ei= [e(yaw)+e(pitch roll)]*dt 比例项ep= e(yaw)+e(pitch roll) 不为ture 防止积分饱和 处理 w(coor)=w+ep +sum(ei) 利用w(coor)对四 元数进行更新 四元数归一化 由四元数得到 欧拉角 将得到的欧拉角、 补偿后的角速度、 加速度、四元数、 转换矩阵、陀螺仪 补偿项等存入vehi cle_attitude_s类型 的att变量中 通过att将数据 发布 将得到的四元数,补偿 后的角速度,加速度存 入control_state_s类型 的变量control_state中 通过变量contr ol_state将数据 发布 _task_should_exit ==ture (在析构函数中置为ture) 为ture 取消主题订阅 函数结束 函数Init() [ax,ay,az]归一化作 为初始的D(NED坐 标系)方向,记为k [mx,my,mz]与k做正 交化处理后作为N(N ED坐标系)方向,记 为i j=i x k作为E(NED 坐标系)方向 初始方向余弦 R=(i ,j,k) 通过函数from_dc m(),由R得到初始 四元数
分享到:
收藏