RemoteID报文解析详细步骤

  无人机远程识别(Remote ID)是实现空域透明化与安全管理的关键技术。其报文解析是地面接收设备、监管应用或公众应用程序理解无人机身份与状态的核心环节。解析过程并非单一动作,而是一个根据传输方式(广播式或网络式)和具体协议实现而定的系统工程。以下将详细拆解整个解析流程。

  第一步:明确解析对象与上下文——广播式 vs. 网络式

  在开始解析前,必须首先明确您要解析的是哪种Remote ID报文,因为其获取方式和初始形态截然不同。这是所有后续步骤的基础。

  广播式 Remote ID 报文解析上下文

  来源:来自附近无人机直接发射的无线电信号。

  传输协议:通常基于蓝牙(如蓝牙4.0/5.0)或Wi-Fi(如NaN帧、信标帧)协议。常见的实现标准是 Open Drone ID 。

  获取方式:需要一个工作在相应频段的射频接收器(如手机、专用接收站)在无人机信号覆盖范围内进行侦听和捕获。

  特点:报文是自包含的,直接包含无人机状态信息。解析在本地完成,不依赖网络连接。

  网络式 Remote ID 报文解析上下文

  来源:来自网络Remote ID服务提供商(Net-RID SP)的服务器。

  传输协议:基于通用的互联网协议(如HTTP、WebSocket),通过USS(UAS服务供应商)接口传输。

  获取方式:授权的应用程序或服务通过API向Net-RID SP发起查询请求,获取指定区域或特定无人机的远程ID信息。

  特点:报文通常是结构化的数据(如JSON、XML),已经过网络服务提供商的处理和封装。解析前通常需要先完成网络身份认证和数据请求。

  鉴于用户问题更偏向于对原始报文的解码,本指南将以广播式Remote ID报文解析为重点,并穿插说明网络式解析的关键差异。

  第二步:信号接收与协议栈剥离

  对于广播式Remote ID,解析始于物理层:

  射频信号接收与解码:接收设备(如支持蓝牙5.0的网卡)在规定的频段(如2.4GHz)捕获无线电信号,并进行解调和解码,还原出底层无线协议(如蓝牙广播信道或Wi-Fi管理帧)的数据链路层帧。

  识别Remote ID载荷:并非所有蓝牙或Wi-Fi帧都携带Remote ID信息。解析器需要:

  检查帧的特定字段(如广播帧的Service UUID、制造商特定数据;Wi-Fi信标帧的供应商特定信息元素),以判断该帧是否遵循Remote ID标准(如ASTM F3411或欧盟的DRI标准)。

  例如,在蓝牙协议中,可能通过识别特定的“Open Drone ID”服务标识符来定位载荷。

  提取协议载荷:一旦确认,便将Remote ID专用的数据部分(即“报文载荷”)从底层协议的帧结构中剥离出来。此时得到的是一个原始的字节流(byte stream)。

  网络式解析差异:此步骤被替换为发起网络请求与接收响应。通过调用USS的标准API(其格式与接口在ASTM F3411-19等标准中描述),获得一个结构化的数据响应体(如JSON对象),无需处理射频信号。

  第三步:解析报文头部与结构

  获得原始字节流后,需要根据Remote ID报文格式规范进行结构化解析。广播式报文通常采用紧凑的“块消息”格式。

  确定报文起始与边界:寻找报文的起始标志。这可能是一个特定的字节序列或根据长度字段动态计算得出。参考一般报文解析方法,可以逐字节读取直到识别出有效的起始结构。

  解析固定格式的头部:报文通常以一个简短的头部开始。解析头部是理解后续数据的关键。一种高效的方法是定义一个与协议规范严格对应的数据结构(如C语言中的struct)。头部可能包含以下字段(具体名称和长度因标准而异):

  消息类型:标识这是静态信息、动态信息还是其他类型的消息。静态信息(如无人机序列号)更新频率低,动态信息(如位置、速度)更新频率高。

  协议版本:标识遵循的Remote ID标准版本。

  长度字段:指示整个报文或数据段的长度,用于验证报文完整性和定位结束点。

  状态/标志位:可能包含紧急状态指示、位置源有效性等布尔标志。

  识别子类型与长度(如适用):在一些实现或承载协议中,Remote ID数据本身可能被进一步封装。例如,在DHCP等协议中,Remote ID作为子选项存在,其结构包含“子类型”、“子长度”等字段。解析时需要先读取这些元信息,以确定后续Remote ID字符串或数据的准确边界和格式。

  第四步:解码数据段——核心信息提取

  这是解析过程的核心,将字节流转换为有意义的业务数据。Remote ID标准定义了一个“数据字典”,规定了必须和可选的数据字段。

  按字段定义顺序解析:根据报文类型和标准规范,数据段由一系列预定义的字段顺序构成。需要严格按照每个字段的数据类型、字节长度和编码规则进行解析。

  示例(基于资料中的CSV格式实例)‍ :一个常见的Remote ID消息可能包含以逗号分隔的字段序列:UAS_ID, ID_TYPE, UAS_TYPE, LAT, LON, HEIGHT, ALT_BARO, ALT_GEO, TRACK, VELH, VELV, STATUS_FLAG, … 。

  关键字段详解

  UAS_ID(无人机识别码)‍ :可能是无人机的序列号,或根据标准生成的唯一产品识别码(如由制造商代码、产品型号、序列号组成的20位代码)。在欧盟DRI标准中,这对应于操作员注册号码的公共部分(如87astrdge12k8),包含校验字符。

  ID_TYPE:指示UAS_ID的编码类型(如序列号、CAA注册ID等)。

  位置与高度:LAT, LON 通常以度为单位的浮点数表示。HEIGHT(离地高度)、ALT_BARO(气压高度)、ALT_GEO(地理高度)需要区分清楚,单位通常是米。

  速度与航向:VELH(水平速度)、VELV(垂直速度)、TRACK(航向)需要根据标准规定的单位和参考系(如真北)进行解读。

  操作员信息:OPERATOR_ID, OPERATOR_LAT, OPERATOR_LON 提供了地面操作员或起飞点的位置。

  时间戳:TIMES 字段至关重要,用于判断信息的时效性。

  应用解码规则

  数值转换:将字节转换为整数、浮点数等。注意字节序(大端/小端)问题。

  ASCII/字符串解码:对于文本字段(如UAS_ID、操作员ID),将字节按ASCII或UTF-8编码解码为字符串。

  标志位解析:STATUS_FLAG 等字段通常是一个位图(bitmap),每一位代表一个特定的状态(如系统正常、紧急状态、位置信息有效等),需要使用位运算进行解析。

  第五步:数据验证与完整性校验

  为确保解析出的数据可信且未被篡改,必须进行验证。

  格式合规性检查:检查必填字段是否存在,字段值是否在合理范围内(如纬度在-90到90度之间)。

  循环冗余校验:许多报文在末尾包含CRC字段。解析器需要根据标准规定的算法,对报文(或除CRC外的部分)重新计算校验值,并与报文中的CRC字段比对。若不匹配,则表明报文在传输过程中可能出错,应丢弃。

  逻辑一致性校验:检查数据间的逻辑关系,例如时间戳是否单调递增(在一定容差内),位置变化与速度、航向是否大致吻合。

  高级验证机制(如果支持):

  消息认证:标准的Remote ID广播通常缺乏消息认证机制,易受欺骗。但一些增强方案(如TBRD)引入了基于TESLA协议的认证机制,解析器在支持的情况下需要验证数字签名或消息认证码。

  网络验证:对于网络Remote ID或需要进一步核实的广播ID,可以通过查询官方的注册数据库来验证操作员ID的有效性。例如,欧盟DRI系统广播的操作员注册号码可以回溯到注册库以关联操作员真实身份。在某些VPN或安全连接场景中,还会验证对等方证书中是否包含指定的远程ID。

  第六步:整合与应用

  成功解析并验证单个报文后,通常需要:

  状态跟踪:将解析出的动态信息(位置、速度等)与无人机的唯一标识(UAS_ID)关联,在内存或数据库中维护其实时状态。

  消息去重与融合:无人机以一定频率(如1Hz)广播消息。解析器需处理连续的数据流,可能需要对同一架无人机的信息进行去重、插值或滤波,以提供平滑的跟踪视图。

  提供给上层应用:将结构化的无人机身份、位置、状态等信息,通过API、图形界面或数据接口的方式,提供给最终的应用程序,如空中交通态势显示、安保监控平台或公众使用的无人机追踪App。

  实例解析演示(以CSV格式为例)

  假设收到一条来自资料示例的CSV格式Remote ID消息(为清晰稍作简化):  #B4:18099300000132.1.2.57.57634.11.98712.100.5.105.2.102.1.180.5.12.3.0.5.0.OPR123456.1.57.57000.11.98000.1.20231203123045.-65.2D3E

  剥离与识别:识别起始符#B4:,表明这是一个特定类型的Remote ID数据块。

  字段分割:按逗号分割,得到字段数组。

  逐字段解码

  UAS_ID = “18099300000132” (无人机序列号)

  ID_TYPE = 1 (含义需查表,可能表示“序列号”)

  UAS_TYPE = 2 (可能表示“多旋翼”)

  LAT = 57.57634 (北纬57.57634度)

  LON = 11.98712 (东经11.98712度)

  HEIGHT = 100.5 (离地高度100.5米)

  ALT_BARO = 105.2 (气压高度105.2米)

  TRACK = 180.5 (航向180.5度,大致向南)

  VELH = 12.3 (水平速度12.3米/秒)

  STATUS_FLAG = 0 (状态正常)

  OPERATOR_ID = “OPR123456” (操作员ID)

  OPERATOR_LAT = 57.57000 (操作员在北纬57.57度)

  TIMES = 20231203123045 (UTC时间2023年12月3日12点30分45秒)

  RSSI = -65 (接收信号强度-65 dBm)

  CRC = 2D3E (十六进制校验码)

  校验:对#B4:之后、CRC之前的所有数据计算CRC-16值,结果应与2D3E比较。

  输出:将上述信息组装成一个结构化的对象,用于显示或进一步处理。

  总结

  Remote ID报文解析是一个多层处理过程,涉及物理信号解码、协议剥离、结构化解析、数据解码、有效性校验等多个步骤。广播式与网络式解析的起点和底层协议不同,但最终目标都是将标准的Remote ID数据字典中的字段提取为可用的信息。成功的解析器实现需要严格遵循相关技术标准(如ASTM F3411 、GB 42590-2023 或欧盟的DRI标准 ),并充分考虑数据的完整性与安全性验证。随着技术发展,集成消息认证的解析将变得日益重要。

滚动至顶部