此示例显示如何将包含Mavlink数据包的遥测日志(TLOG)加载到MATLAB®中。提取消息的详细信息以进行绘图。然后,要再次模拟飞行,这些消息在Mavlink通信接口上发布。该出版物模仿一个无人驾驶的空中车辆(UAV)执行在TLOG中记录的飞行。
创建一个mavlinkdialect.
对象使用“common.xml”
方言。用mavlinktlog.
使用此方言加载TLOG数据。
dialect = mavlinkdialect('common.xml');logimport = mavlinktlog('mavlink_flightlog.tlog',方言);
从TLOG中提取GPS消息并使用它们可视化地球格林
。
msgs = ReadMsg(Logimport,'messagename'那'gps_raw_int'那......'时间',[0 100]);latlon = msgs.messages {1};%过滤掉零值的消息latlon = latlon(latlon.lat〜= 0&latlon.lon〜= 0,:);图()Geoplot(Double(Latlon.lat)/ 1E7,Double(Latlon.lon)/ 1E7);
从TLOG中提取态度消息。指定态度消息的消息名称。使用辊子,俯仰,偏航数据stackedplot.
。
msgs = ReadMsg(Logimport,'messagename'那'态度'那'时间',[0 100]);图()stackedplot(msgs.messages {1},{'卷'那'沥青'那'偏航'});
创建Mavlink通信接口,并将来自TLOG的消息发布到用户定义的UDP端口。为传递MAVLINK消息创建一个发件人和接收器。该通信系统的工作方式与真正的硬件将使用Mavlink通信协议发布消息。
Sender = Mavlinkio(方言,'systemid',1,'componentId',1,......'autopilottype'那“mav_autopilot_generic”那......'componentype'那“mav_type_quadrotor”);连接(发件人,'UDP');DestinationPort = 14550;destinationhost =.'127.0.0.1';Receiver = Mavlinkio(方言);连接(接收器,'UDP'那'localport',目的端口);订阅者= mavlinksub(接收器,'态度'那'newmessagefcn',@(〜,msg)disp(msg.payload));
以50 Hz的速率发送前100条消息。
payloads = table2struct(msgs.messages {1});attitudedefinition = msginfo(方言,'态度');为了msgdx = 1:100 sendudpmsg(发件人,struct('msgid',attitudedefinition.messageid,'有效载荷',有效载荷(msgdx)),destinationhost,destinatialport);暂停(1/50);结尾
断开Mavlink通信接口的连接。
断开(接收器)断开连接(发件人)