前言:想要拟合飞行轨迹,百度了一下,高人介绍的都是什么百度地图API,无忧地图,PYTHON;不是不好,是尝试了一***册非常麻烦,结果没拟合出想要的轨迹;接着我们分享一下5行代码的MATLAB;

 

一.先看结果,再看过程

有些帖子看半天,结果发现不是自己想找的答案,给大家节约宝贵时间,点个赞!!!嘻嘻

二维——经纬拟合

PX4飞控导出GPS数据拟合飞行轨迹

三维——经纬高拟合

PX4飞控导出GPS数据拟合飞行轨迹

 二.实现过程

1.下载飞行ulog文件;

2.将ulog文件转成csv:

       将ulog文件单独放在一个文件夹中,在当前路径下执行指令:ulog2csv log_××××.ulg

PX4飞控导出GPS数据拟合飞行轨迹

3.找到需要的log_×××_gps_position_0.csv文件用于matlat分析

4.二维——经纬拟合Matlab代码如下

clear all
% close all
clc

[FileName PathName]=uigetfile({'log_48_2019-11-14-11-19-26_vehicle_gps_position_0.csv'},'');
file=fullfile(PathName,FileName);
fidID = fopen(file);
M=csvread(file,1,0);

 x=M(:,3);%lon
 y=M(:,1);%alt
 z=M(:,4);%lat
 
%%%-----二维拟合--------%%%
 plot(x,z);

5.三维——经和高度先拟合,纬度和高度拟合,再双双拟合,Matlab代码如下

clear all
% close all
clc

[FileName PathName]=uigetfile({'log_48_2019-11-14-11-19-26_vehicle_gps_position_0.csv'},'');
file=fullfile(PathName,FileName);
fidID = fopen(file);
M=csvread(file,1,0);

 x=M(:,3);%lon
 y=M(:,1);%alt
 z=M(:,4);%lat
 
%%%-----二维拟合--------%%%
 %plot(x,z);

  
%%%-----三维拟合--------%%%
 p_yx = polyfit(y,x,4);
 x_out = polyval(p_yx, y);
 p_yz = polyfit(y,z,4);
 z_out = polyval(p_yz, y);
 plot3(x_out ,y, z_out, 'r*'); hold on;
  
 % µÃ³öÇúÏߺ¯Êý x_out = f(z_out)   z_out = f(y)
 p_zx_out = polyfit(z_out,x_out,4);   
 x_out_f = polyval(p_zx_out,z_out);
 plot3(x_out_f,y,z_out,'b*'); hold on;

大图:PX4飞控导出GPS数据拟合飞行轨迹

gps数据:

PX4飞控导出GPS数据拟合飞行轨迹

本人原创不多,拿来分享,共同提高,不对请大神们批评指正,不胜感激!(完)

相关文章:

  • 2022-01-09
  • 2021-11-09
  • 2022-12-23
  • 2021-10-16
  • 2022-12-23
  • 2021-08-25
  • 2021-12-25
  • 2022-02-07
猜你喜欢
  • 2021-09-04
  • 2021-05-29
  • 2021-10-29
  • 2021-12-25
  • 2021-12-19
  • 2021-11-13
  • 2021-12-19
相关资源
相似解决方案