OpenDroneID

为生产构建固件

ArduPilot 为集成 OpenDroneID 远程 ID 发射器模块的自动驾驶系统提供了固件防篡改方法,并符合多个国家的倡议。

ArduPilot 的防篡改功能目前包括

  • 为 ODID(OpenDroneID)固件使用特殊的电路板 ID,该 ID 将拒绝正常加载没有必要功能和参数的固件。任何使用 OpenDroneID 功能创建的引导加载器都会启用固件检查功能,除非板 ID 匹配,否则不会引导主固件。

  • 编译时可在固件中设置的特殊 "只读 "参数

今后还计划进行改进。

有关示例,请参阅 hwdef 和 param 文件中的 ODID 版本的 CubeOrange 载板上集成了 CAN OpenDroneID 模块。

备注

电路板 ID 与正常固件不同,以防止全球控制系统将其加载到装有远程 ID 的系统上。DID 参数被设置为只读,以防止用户更改参数并破坏系统。

构建用于工作台测试和实验的固件

可以通过以下方式为任何(飞行)控制器构建实验固件版本:

  • 在 hwdef.dat 文件中添加 "define AP_OPENDRONEID_ENABLED 1 "一行,或者直接使用 waf configure 选项构建、 --启用--opendroneid

  • 任何支持 OpenDroneID 的固件都会增加另一项防篡改检查。启用 OpenDroneID 的引导加载程序不会运行具有不同板 ID 的固件。这就扩大了已提供的保护范围,即对启用 OpenDroneID 的(飞行)控制器使用唯一的电路板 ID,该 ID 将拒绝加载不具备必要功能和参数的固件的正常尝试。

备注

您需要同时构建引导加载程序和主固件。使用 "Tools/scripts/build_bootloaders.py BOARDNAME"(工具/脚本/build_bootloaders.py BOARDNAME)构建引导加载程序,然后重新配置 waf 并构建主固件,以便将引导加载程序与新的电路板 ID 包括在内。

下面的视频展示了整个过程:

测试

模块 负荷 OpenDroneID opendroneid 设置 UAS_ID_type 1
opendroneid 设置 UA_type 1
opendroneid 设置 区域天花板 700  #仅在测试蜂群时需要
opendroneid 设置 区域数 1      #仅在测试蜂群时需要
opendroneid 设置 地板面积 -200   #仅在测试蜂群时需要
opendroneid 设置 区域半径 1000  #仅在测试蜂群时需要
opendroneid 设置 类别 1
opendroneid 设置  1
opendroneid 设置 分类类型 1
opendroneid 设置 描述 "TestDrone1";
opendroneid 设置 描述类型 1
opendroneid 设置 操作员 "TestPilot1";
opendroneid 设置 操作符 ID 类型 1
opendroneid 设置 操作员位置类型 0      #请注意,在实际操作中通常需要 1 的值。这需要使用自带 GPS 的全球定位系统进行测试。
opendroneid 设置 频率 1

这将设置用户通常必须从 GCS 输入 Remote ID 系统的必要参数。

  • 用兼容 OpenDroneID 的远程 ID 模块连接(飞行)控制器、 这样 将 MAVProxy 的一个串行端口连接到 PC,然后通过控制台和地图启动 MAVProxy,并选择将操作员位置设置为载具上膛位置:

MAVProxy.py --游戏机 --地图

备注

在实际使用中,这在某些司法管辖区可能是不合法的,但 OpenDroneID 模块固件会根据这些司法管辖区的情况,在固件中设置合适的构建选项,拒绝这一分配。这样就可以在不连接 GPS 的 PC 上进行测试,以确定操作员的位置。

../_images/opendroneid-android-app.jpg

使用 SITL 进行测试

通过 USB FTDI 连接器将 ODID Remote ID 模块连接到 PC,还可使用 SITL 在上述 OpenDroneID 手机应用程序上运行模拟任务并进行观察。

如果模块是通过 USB 或串行 FTDI 适配器连接到电脑的,则可以使用 Linux 查找其端口的路径:

ls /设计/串行/-本我/*

这将返回一个相当长的路径,其形式类似于

/dev/serial/by-id/usb-Silicon_Labs_CP2102N_USB_to_UART_Bridge_Controller_4e7564343210ec11a33426947a109228-if00-port0

使用以下命令启动 SITL,如果要在代码中使用 SERIAL1 接口(即 DID_MAVPORT = 1)和上面发现的 <路径>:

模拟载具.py --游戏机 --地图 -A --序列1=uart:<;>;

一旦 MAVProxy 启动,请按照上述其余说明加载 remoteid.scr 脚本并进行设置。您应该能在手机应用上看到飞机。现在,您可以在手机应用上创建和飞行任务,并对其进行监控。

使用飞行Mission Planner地面站作为全球控制战略

Mission Planner地面站的 DATA 视图中有一个特殊的 "无人机 ID "选项卡,可与连接到(飞行)控制器的 OpenDroneID 模块一起使用,从而监控状态、为操作员定位 GCS 附加所需的 GPS 以及设置无人机系统和操作员 ID 字符串。请参见 OpenDroneID 面板.