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 包括在内。
下面的视频展示了整个过程:
测试¶
将 MAVProxy/pymavlink 至少更新到 1.8.54 (https://ardupilot.org/mavproxy/docs/getting_started/download_and_installation.html#updating)
在将要运行 MAVProxy 的目录下,创建一个包含以下内容的 remoteid.scr 文件:
模块 负荷 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 上进行测试,以确定操作员的位置。
如果使用串行互联,确保模块连接的(飞行)控制器串行端口设置为 57.6K 和 MAVLink2。如果使用 DroneCAN,则确保 CAN 参数已适当启用。
运行 "script remoteid.scr "命令加载脚本......你会看到它在控制台中宣布已加载 OpenDroneID 模块和其他命令
设置以下参数
DID_MAVPORT X 其中 x 是连接 OpenDroneID 模块的串行端口
如果是 CAN 模块,则应替换这些参数:
DID_MAVPORT -1
使用此应用程序,任何 OpenDroneID 预设警报都会消失,载具会出现在您的安卓手机上: https://play.google.com/store/apps/details?id=org.opendroneid.android_osm
使用 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 面板.