ArduPilot开发中的Remote ID功能详解
ArduPilot开发中的Remote ID功能详解
朝花夕拾
- 什么是 Remote ID ?
- 一些概念
- OpenDroneID
- ArduRemoteID
- opendroneid-core-c 库
- OpenDroneID 原理
- ArduRemoteID 调试和开发
以使用ESP32-S3 dev board为例
0. 什么是 Remote ID ?
Remote ID 是一种无人机身份识别系统,主要用于无人机的远程识别和追踪。更多信息可以参考:drone-remote-id
1. 一些概念
符合美国航空管理局FAA规定的一些 Remote ID 设备有哪些?可以参考:FAA Remote ID Devices
欧美的Remote ID规范:
- 美国:先制定了ASTM F3411-22a规范; 后来为了满足NoA的要求又制定了F3586规范。
- 欧洲:ASD-STAN prEN 4709-002 规范。
符合中国的Remote ID的规范:
- 可知中国制定的Remote ID规范参考了美国和欧洲制定的规范。具体可以参考:《民用微轻小型无人驾驶航空器运行识别最低性能要求(试行)》和《民用无人驾驶航空器系统安全要求》。
中国的监管平台:
- 国家无人驾驶航空器一体化综合监管服务平台
ardupilot生态中可用的 Remote ID 设备有哪些?
- 开源方案:OpenDroneID。
- 闭源设备(方案),具备独立供电独立获取GPS信息,通过mavlink与autopilot连接,如:
- Aerobits idME+
- AEROENTRY remote id (Japan)
- BlueMark DroneBeacon with Battery
- BlueMark DroneBeacon External Power
- BlueMark DroneBeacon FPV
- Braveridge remote id (Japan)
- Dronetag BS
- EAMS Robotics remote id (Japan)
- TEAD remote id (Japan)
- Dronetag Mini
- Dronetag Beacon
OpenDroneID开源方案兼容哪些型号的硬件设备?
- BlueMark DroneBeacon MAVLink Family(EU, US)
- Cube ID
- Cube ID_CAN
- Dronetag DRI
- Holybro Remote ID Module
- Wurzbach Electronics
- mRo RemoteID
- ESP32开发板(推荐使用)
2. OpenDroneID
OpenDroneID是实现 Remote ID的开源方案。
4.2 +版本的ardupilot兼容OpenDroneID功能,连接方式:DroneCAN 或 mavlink(串口)。
要适配OpenDroneID功能,ardupilot需自定义编译固件,设定一些相关的参数:OpenDroneID参数配置
ardupilot团队用ESP32开发了一套可以实现OpenDroneID功能的开源固件名叫ArduRemoteID
3. ArduRemoteID
ArduRemoteID 源码、文档:ArduRemoteID GitHub
如何编译适配OpenDroneID功能的ardupilot固件?如何下载ArduRemoteID固件到ESP32? 如何连接?如何测试?可以参考:OpenDroneID官方文档
需要特别注意的是,在编译具有RemoteID功能的固件时,需要锁定一些参数的值如GPS、AHRS 等。
一篇很好的文档:简述了如何在ardupilot中使用OpenDroneID、ArduRemoteID,包括固件编译、参数配置、使用说明:ArduPilot presentation on its OpenDroneID implementation
测试软件
接收wifi、蓝牙数据并解析
安卓:OpenDroneID OSM、DroneScanner
其他:接收器示例
4. opendroneid-core-c 库
ArduRemoteID能实现OpenDroneID主要是因为使用了这个开源库opendroneid-core-c。该存储库提供了一个C代码函数库,用于编码和解码(打包/拆包)Open Drone ID消息,其格式在ASTM F3411 Remote ID和ASD-STAN prEN 4709-002 Direct Remote ID规范中定义。请参阅下面的规范部分中的更多详细信息。
opendroneid-core-c代码适用于通过蓝牙或Wi-Fi广播远程ID信息的实现。
MAVLink 和 DroneCAN 都发布了与RemoteID相关的消息集(message set),请参阅他们各自的文档。
如MAVLink OpenDroneID messages:
RemoteID接收器
安卓、ios、windows、linux
RemoteID发射器
如使用ESP32
opendroneid-core-c 如何编译?如何使用?
The ESP32 transmitter has an unexplained problem with the Wi-Fi Beacon signals.???
安卓app接受不到通过Wi-Fi发射的RemoteID数据祯(beacon祯)??????????????
与RemoteID相关规范、标准
参考1:opendroneid-core-c
参考2:What are ASTM and ASD-STAN Remote ID standards?
UA serial number 格式规范:https://shop.cta.tech/products/small-unmanned-aerial-systems-serial-numbers
美国:ASTM F3411-22a;F3586;
欧洲 :ASD-STAN prEN 4709-002;
日本:与美国同;
remote ID protocol version
略…
5. OpenDroneID 原理
飞控会通过串口向 transmitter 模块发送MAVLink OpenDroneID messages,或通过can口向 transmitter 模块发送 DroneCAN messages,messages 主要有以下几种类型:
- Basicld
- SelflD
- OperatorlD
- System
- Location
- Authentication
- Message Pack
transmitter模块向飞控只发送一种类型的 messages:
- ArmStatus:取值arming ok/not-ok
飞控中,DroneCAN messages 的内容是复制于 MAVLink OpenDroneID messages. 因此想要修改发送的内容,要先从MAVLink OpenDroneID messages消息改起,然后再改opendroneid-core-c中的相关代码,再根据需要改DroneCAN messages。
MAVLink OpenDroneID messages的内容格式定义遵循以下规范、标准:
- ASTM F3411 Specification for Remote ID and Tracking
- ASD-STAN prEN 4709-002 Direct Remote Identification
OpenDroneID所有类型的报文格式请参考:
【1】民用微轻小型无人驾驶航空器运行识别最低性能要求(试行).pdf
【2】ASTM F3411-22a.
【3】ASD-STAN prEN 4709-002.
【5】What are ASTM and ASD-STAN Remote ID standards?
【4】查看源码opendroneid-core-c
如 Basicld 报文:
6. ArduRemoteID 调试和开发
ArduRemoteID 兼容的硬件平台
- the ESP32-S3 dev board
- the ESP32-C3 dev board
- a Bluemark DB110 (legacy)
- a Bluemark DB200
- a Bluemark DB201
- a Bluemark DB2