skyeyesystem/backend/Skyeye-sys-dev/skyeye-service-py/klkx/planning/ReadMe.md

5.7 KiB
Raw Permalink Blame History

空天快响算法库

  • V1.0 - 2025/03/24: 添加北斗编码模块, 目标区域网格模块, 无人机任务规划模块

北斗编码 ktkx.beidou

  • GBT+39409-2020 北斗网格位置码, 实现非两级区域10级网格编解码, 两级区域3级网格编解码, 全区域10级高度码

    网格层级 网格码长度 网格大小 高度码长度 网格高度 总长度
    1 4 6\degree\times4\degree 3 445.28km 7
    2 6 55.66km\times55.66km 4 55.66km 10
    3 7 27.83km\times18.55km 5 27.83km 12
    4 9 1.85km\times1.85km 6 1.85km 15
    5 11 123.69m\times123.69m 7 123.69m 18
    6 12 61.84m\times61.84m 8 61.84m 20
    7 14 7.73m\times7.73m 9 7.73m 23
    8 16 0.97m\times0.97m 10 0.97m 26
    9 18 12cm\times12cm 11 12.1cm 29
    10 20 1.5cm\times1.5cm 12 1.5cm 32
  • V1.0 - 2025/03/24:

    • 新增:
      • 实现非两级区域10级网格编解码, 两级区域3级网格编解码
      • 全区域10级高度码

北斗区域网格码 ktkx.beidou.LocationCode

编码 ktkx.beidou.LocationCode.to_code()

  • Args:
    lon(SupportsFloat): 经度(deg), Range: [-180, 180]
    lat(SupportsFloat): 纬度(deg), Range: [-90, 90]
    alt(SupportsFloat): 高程(m), Range: [-6378137, inf], Defaults: None
    level(int): 网格层级, Range: [1, 10], Defaults: 10
    dimension(int): 网格维度, Range: 2 or 3, Defaults: 2

  • Returns:
    str: 二/三维网格码

解码 ktkx.beidou.LocationCode.to_coordinate()

  • Args:
    code(str): 二/三维网格码 dimension(int): 网格码维度, Range: 2 or 3, Defaults: 2

  • Returns:
    NDArray:
    NDArray[float, float]: 经度(deg), 纬度(deg)
    NDArray[float, float, float]: 经度(deg), 纬度(deg), 高程(m)

区域 ktkx.region

  • 将二维区域目标按照指定的网格层级进行离散化, 储存区域和网格信息

  • V1.0 - 2025/03/24:

    • 新增:
      • 将二维区域目标按照指定的网格层级进行离散化
    • 待解决:
      • 由于进程竞争锁, 并行计算速度远低于但进程计算, 后续用Cyhton进行并行计算
      • 点和线目标的区域类

区域类 ktkx.region.Region

初始化区域 ktkx.region.Region()

  • Args:
    coordinates(List[Tuple[float, float]]): 区域顶点经纬度坐标(deg)
    level(int): 北斗网格层级
    workers(int): 并行数量

区域离散化层级 ktkx.region.Region.level: int

区域多边形 ktkx.region.Region.polygon: Polygon

网格数组 ktkx.region.Region.grid_array: NDArray

网格位置码数组 ktkx.region.Region.grid_code_array: NDArray

网格中心数组 ktkx.region.Region.grid_center_array: NDArray

网格面积数组 ktkx.region.Region.grid_area_array: NDArray

网格 ktkx.region.Grid

初始化网格 ktkx.region.Grid()

  • Args:
    code(str): 北斗二维地理网格码
    center(NDArray): 网格中心点, Defaults: None
    full_grid(bool): 网格是否完整, Defaults: True
    polygon(Polygon): 网格多边形, Defaults: None

  • Examples:

    • 创建完整网格

    Grid(code = code)

    • 创建不完整网格

    Grid(code = code, polygon = polygon, full_grid = False)

网格码 ktkx.region.Grid.code: str

网格层级 ktkx.region.Grid.level: int

网格经度差 ktkx.region.Grid.delta_lon: float

网格纬度差 ktkx.region.Grid.delta_lat: float

网格中心 ktkx.region.Grid.center: NDArray

网格多边形 ktkx.region.Grid.polygon: Polygon

网格是否完整 ktkx.region.Grid.full_grid: bool

无人机 ktkx.uav

  • 考虑无人机的续航约束, 对无人机的区域推扫任务进行航线规划alt text

  • V1.0 - 2025/03/24:

    • 新增:
      • 实现无人机类, 包含无人机开始结束位置, 无人机续航约束
      • 使用贪心算法对进行任务规划首层网格规划
      • 使用ortools中启发式算法进行优化
    • 待实现
      • 距离矩阵并行计算
      • 网格内任务规划
      • 多目标任务规划

无人机类 ktkx.uav.Uav

初始化无人机 ktkx.uav.Uav()

  • Args:
    id(int): 无人机ID
    start_coordinate(NDArray): 无人机起始经纬度坐标(deg)
    end_coordinate(NDArray): 无人机结束经纬度坐标(deg)
    endurance(SupportsFloat): 无人机续航里程(m)

无人机ID ktkx.uav.Uav.id (int)

起始坐标 ktkx.uav.Uav.start_coordinate: NDArray

起始网格码 ktkx.uav.Uav.start_code: str

结束坐标 ktkx.uav.Uav.end_coordinate: NDArray

结束网格码 ktkx.uav.Uav.end_code: str

续航里程 ktkx.uav.Uav.endurance: SupportsFloat

无人机任务规划类 ktkx.uav.UavPlanning

初始化任务规划 ktkx.uav.UavPlanning()

  • Args:
    region(ktkx.region.Region): 目标区域
    uav_list(list[ktkx.uav.Uav]): 无人机列表

规划初始解 ktkx.uav.UavPlanning.init_solve

  • Returns:
    list[list[int]]: 无人机节点规划结果
    list(i): 第i架无人机规划结果
    list(i)(j): 第i架无人机经过的第j个节点

规划优化解 ktkx.uav.UavPlanning.solve

  • Args:
    time(SupportsFloat): 最长优化时间