利用MAVSDK进行无人机空中交通管理系统设计

黑暗猎手 2022-07-02 ⋅ 17 阅读

引言

无人机的广泛应用已经成为现实。然而,随着无人机数量的逐渐增加,如何保证无人机之间的安全与协调成为一个重要的问题。为了解决这个问题,我们可以利用 MAVSDK(MAVLink 的软件开发工具包)来设计一个无人机空中交通管理系统(UAS Traffic Management, UTM)。本文将介绍如何利用 MAVSDK 开发这样的系统。

系统设计

1. 数据传输与通信

UTM 系统需要实时地接收无人机的位置、速度和其他相关数据。通过 MAVSDK 提供的接口,我们可以与无人机建立通信连接,并获取所需的信息。可以使用以下代码示例建立与无人机的连接:

import asyncio
from mavsdk import System

async def connect_to_drone():
    drone = System()
    await drone.connect(system_address="udp://:14540")

    async for state in drone.core.connection_state():
        if state.is_connected:
            print("已连接到无人机")
            break

    # 系统已连接,进行进一步的操作
    await asyncio.sleep(1)

asyncio.ensure_future(connect_to_drone())

2. 空中交通管理

为了实现空中交通管理,UTM 系统需要实时监测无人机的位置与速度,并在必要时下达指令以协调不同无人机之间的运动。

MAVSDK 提供了一系列的服务,用于获取无人机的位置、速度、航向等信息。例如,要获取无人机当前的位置坐标(经纬度),可以使用以下代码示例:

async def get_position(drone):
    async for position in drone.telemetry.position():
        print(f"当前无人机位置:{position.latitude_deg}, {position.longitude_deg}")

async def main():
    await connect_to_drone()
    await get_position(drone)

asyncio.ensure_future(main())

在获得了无人机的位置信息之后,我们可以根据一定的逻辑来判断是否需要对无人机进行干预,例如:

  • 如果无人机离预定航线过远,则下达警告指令;
  • 如果无人机与其他无人机的距离过近,并且可能引发碰撞风险,则下达避让指令。

3. 航线规划与路径优化

UTM 系统还需要能够进行航线规划和路径优化,以确保无人机之间的运动轨迹是安全的、高效的。

我们可以使用 MAVSDK 中的 mission 模块来设计航线并发送给无人机。例如,以下代码示例展示了如何指定无人机沿着一系列航点飞行:

from mavsdk import System

async def upload_mission(drone):
    mission_items = [MissionItem(47.398170327054473,
                                 8.545649021863965,
                                 10,
                                 5,
                                 True,
                                 float('nan'),
                                 float('nan'),
                                 MissionItem.CameraAction.NONE,
                                 float('nan'),
                                 float('nan')),
                     MissionItem(47.398241338125118,
                                 8.546053127834532,
                                 10,
                                 5,
                                 False,
                                 float('nan'),
                                 float('nan'),
                                 MissionItem.CameraAction.NONE,
                                 float('nan'),
                                 float('nan'))]

    mission_plan = MissionPlan(mission_items)

    await drone.mission.upload_mission(mission_plan)

# 与无人机建立连接
drone = System()
await drone.connect(system_address="udp://:14540")

await upload_mission(drone)

为了提高路径的安全性和效率,还可以使用优化算法对航线进行优化,比如避免障碍物、减少路径长度等。

结论

利用 MAVSDK 进行无人机空中交通管理系统的设计,可以有效地监控无人机位置与速度,并进行协调与优化。通过 MAVSDK 提供的接口,我们可以方便地实现与无人机的通信与控制。未来,随着无人机应用场景的不断扩大,空中交通管理系统的设计将变得更加重要。


全部评论: 0

    我有话说: