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

170 lines
5.7 KiB
Markdown
Raw Permalink Normal View 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](markdown/UavPlanning.png)
* 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):** 最长优化时间