此示例示出了如何加载包含MAVLink包进入MATLAB®遥测日志(TLOG)。消息的详细信息被提取用于绘图。然后,再次模拟飞行,该消息被转载在MAVLink通信接口。此发布模仿无人驾驶飞行器(UAV)执行记录在TLOG飞行。
创建一个mavlinkdialect
对象使用“common.xml”
方言。用mavlinktlog
与此方言来加载TLOG数据。
方言= mavlinkdialect('common.xml');logimport = mavlinktlog('mav_flightlog.tlog',方言);
摘自TLOG的GPS信息,并利用这些可视化geoplot
。
封邮件= readmsg(logimport,'MessageName','GPS_RAW_INT');latlon = msgs.Messages {1};%滤除的零值的消息latlon = latlon(latlon.lat〜= 0&latlon.lon〜= 0,:);geoplot(双(latlon.lat)/ 1E7,双(latlon.lon)/ 1E7);
摘自TLOG态度的消息。指定的姿态消息的消息名称。使用绘制侧倾,俯仰,偏航数据stackedplot
。
封邮件= readmsg(logimport,'MessageName','态度','时间',[0 100]);图stackedplot(msgs.Messages {1},{'滚','沥青','偏航'});
创建MAVLink通信接口和从所述TLOG发布消息,以用户定义的UDP端口。创建用于使MAVLink消息的发送者和接收者。该通信系统的工作方式相同,真正的硬件会使用MAVLink通信协议发布消息。
发件人= mavlinkio(方言,'SYSTEMID'1,'的ComponentID'1,...'AutopilotType',“MAV_AUTOPILOT_GENERIC”,...'COMPONENTTYPE',“MAV_TYPE_QUADROTOR”);连接(发件人,'UDP');destinationPort = 14550;destinationHost ='127.0.0.1';接收机= mavlinkio(方言);连接(接收器,'UDP',“本地端口”,目的端口);订户= mavlinksub(接收器,'态度','NewMessageFcn',@(〜,MSG)DISP(msg.Payload));
发送第一消息100在50赫兹使用一个速率robotics.Rate
宾语。
有效载荷= table2struct(msgs.Messages {1});attitudeDefinition = msginfo(方言,'态度');R = robotics.Rate(50);对于msgIdx = 1:100 sendudpmsg(发件人,结构('的MsgID',attitudeDefinition.MessageID,“有效载荷”,有效载荷(msgIdx)),destinationHost,destinationPort);WAITFOR(R);结束
来自MAVLink通信电子接口断开。
断开(接收器)断开(发送方)