【MATLAB UAV Toolbox】使用指南(二)

可视化和回放MAVLink飞行日志

这个例子将展示如何将包含MAVLink包的遥测日志(TLOG)加载进MATLAB。提取的详细信息用来绘图。然后再次仿真飞行,这些消息通过MAVLink通信接口重新发布。发布的内容则是模仿无人机执行遥测日志记录的飞行情况。

加载MAVLink遥测日志

common.xml创建一个对象mavlinkdialect给到dialect。使用mavlinktlogdialect用于加载遥测日志的数据。

dialect = mavlinkdialect('common.xml');
logimport = mavlinktlog('mavlink_flightlog.tlog',dialect);

从遥测日志中提取GPS信息和用交会图统计分析(GeoPlot)将其可视化

msgs = readmsg(logimport, 'MessageName', 'GPS_RAW_INT', ...
                          'Time',[0 100]);
latlon = msgs.Messages{1};
% filter out zero-valued messages
latlon = latlon(latlon.lat ~= 0 & latlon.lon ~= 0, :);
figure()
geoplot(double(latlon.lat)/1e7, double(latlon.lon)/1e7);

在这里插入图片描述
从遥测信息中提取姿态信息。指定姿态信息的信息名称。使用叠加图(stackedplot)绘制横滚、俯仰、偏航数据。

msgs = readmsg(logimport,'MessageName','ATTITUDE','Time',[0 100]);

figure()
stackedplot(msgs.Messages{1},{'roll','pitch','yaw'});

在这里插入图片描述

播放MAVLink日志条目

创建MAVLink通信接口,并将来自遥测信息的消息发布到自定义的UDP端口。
创建用于传递MAVLink消息的发送方和接收方。
该通信系统的工作方式与实际硬件使用MAVLink通信协议发布消息的方式相同。

sender = mavlinkio(dialect,'SystemID',1,'ComponentID',1,...
                   'AutopilotType',"MAV_AUTOPILOT_GENERIC",...
                   'ComponentType',"MAV_TYPE_QUADROTOR");
connect(sender,'UDP');

destinationPort = 14550;
destinationHost = '127.0.0.1';

receiver = mavlinkio(dialect);
connect(receiver,'UDP','LocalPort',destinationPort);

subscriber = mavlinksub(receiver,'ATTITUDE','NewMessageFcn',@(~,msg)disp(msg.Payload));

以50Hz的速率发送前100条消息。

payloads = table2struct(msgs.Messages{1});
attitudeDefinition = msginfo(dialect, 'ATTITUDE');
for msgIdx = 1:100
    sendudpmsg(sender,struct('MsgID', attitudeDefinition.MessageID, 'Payload', payloads(msgIdx)),destinationHost,destinationPort);
    pause(1/50);
end

断开MAVLink通信接口

disconnect(receiver)
disconnect(sender)
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值