前言:这几天手上正好有教研室垂起飞机的飞行数据,就借助matlab画出他的飞行轨迹。飞行数据已上传云盘
第一步:将飞行数据转换为csv格式
第二步:读取你需要的文件,这里我读取的是:
local_z=csvread('log_301_2020-3-12-14-34-46_vehicle_local_position_0.csv',1,6,[1 6 18919 6 ])
local_y=csvread('log_301_2020-3-12-14-34-46_vehicle_local_position_0.csv',1,5,[1 5 18919 5 ])
local_x=csvread('log_301_2020-3-12-14-34-46_vehicle_local_position_0.csv',1,4,[1 4 18919 4 ])
这里注意csvread函数的用法,后面的【1 6 18919 6】内的参数表示选取坐标(2,7)和(18920,7)构成对角线而形成的矩阵之间的元素填入local_z。
同理读取下面这个文件里local_position_setpoint数据:
log_301_2020-3-12-14-34-46_vehicle_local_position_setpoint_0.csv
第三步:数据处理
观察读取的数据都为负的,因为px4的坐标系下为正,所以我们要将数据*(-1)变为正的
第四步:画图
plot3(local_x,local_y,local_z,'r');
gird on;
hold on;
plot3(local_sp_x,local_sp_y,local_sp_z,'g');
legend('local position','local position setpoint');
效果:
这里演示的是位置的图,可以点住图片旋转角度观看不同的角度3d效果,其他的参数就不演示了,方法相同。
补充:
在读取csv数据时,也可以不用函数,可直接在路径栏双击文件,此时matlab会打开他:
然后我们选取我们要的数据,点击右上角的带入数据,此时工作区就可以看到,然后改下名字。但要注意,导出的数据为table格式,我们要用table2array函数将其转换为矩阵。