Skip to content

Theo-Yuan/myScan

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MyScan

standard-readme compliant

[TOC]

简介

本项目的目标是在3D重建项目中,为无人机采集图像提供路径规划。使用本项目,可以在虚拟环境中,模拟无人机在室外环境中的路径规划、自主导航和图像采集。

本项目目前支持4种路径规划:

  1. 离线的路径规划:
    • 无人机在固定高度的安全平面,环绕场景一周,同时相机朝向场景中心拍照;
    • 或 无人机绕建筑物螺旋上升,同时同时相机朝向场景中心拍照;
  2. 通过多轮迭代的方式划分场景:每次以3个点确定1个三角形,选择其中心点将其划分为3个小三角形。按迭代得到的点的顺序遍历场景,每个点的拍摄角度由包围其的三角形的三个点处的高度决定;
  3. 将场景划分为多个同心圆,从外向内依次遍历同心圆。每个点的拍摄角度由距其最近的两点以及场景中心点的高度决定;
  4. 将场景划分为多个同心圆,按圆的半径二分的策略依次遍历同心圆。每个点的拍摄角度由距其最近的三点的高度决定。

安装

  1. 本项目使用 python3 编写,并依赖于airsim。请确保 python 版本,并通过 pip 安装 airsim

    pip install airsim

  2. 本项目在由 Unreal 引擎构建的虚拟环境中运行,并且该虚拟环境需配置 Airsim 的插件以便支持无人机和其操作。编译虚拟环境这一步是可选的,具体的关于虚拟环境的编译步骤可参考 Airsim 官方文档

    虚拟环境可以直接使用现成的。Airsim 官方仓库在 releases 提供了多个可运行的环境。下载地址:

  3. 本项目的输出仅为图片集,为了生成 3D 模型,需将图片集交由 3D 重建软件处理。3D 重建的步骤可分为 SFM、MVS、Surface Reconstruction,我们推荐使用的3D重建软件为 COLMAP,它集成了这3个步骤。最终生成的 3D 模型为 .ply 格式,可使用 meshlab 查看。

使用说明

运行步骤

  1. 运行虚拟环境

  2. 在项目根目录运行 src/main.py:需指定配置文件,若不指定,则设为默认值 configs/config.json

    python src/main.py -c configs/dete-circle-binary.json

  3. 若安装了 COLMAP,可使用 COLMAP 处理采集到的图像集,重建 3D 模型。COLMAP 既提供 CLI,也提供界面,可根据需要选择。

配置文件

配置针对的是 一次无人机的采集图像任务,参数如下:

  1. type :路径规划类型,目前支持"offline""dete" , "dete_circle", "dete_circle_binary"
  2. safety_surface:待重建场景的安全平面
  3. point_num:场景的平面图网格化后的网格点数量,对于"offline",其等价于最终得到的照片数量
  4. image_dir:照片的输出路径

对于"dete", "dete_circle""dete_circle_binary",需额外指定:

  • fov:与相机拍摄角度相关

对于"dete“,需额外指定:

  • fov: 相机视角

  • round_num:迭代轮数

对于"dete_circle",需额外指定:

  • fov

对于"dete_circle_binary",需额外指定:

  • fov
  • circle_num:同心圆数量

各个路径规划类型对应的示例 参见 configs 目录

关于 dete_circle_binary

确定相机朝向的算法

​ 为确定相机朝向,需了解待重建物体相对于当前无人机位置的方向。对于城市场景来说,需判断当前无人机是否处于高楼顶部或空地上,以及其周围是否有高度高于它的建筑物。若有高度高于它的建筑物,则需拍摄该建筑物的侧面。我们取当前位置处无人机的高度信息,以及包围当前位置的另外三点的场景高度信息来进行上述判断,并进一步确定相机朝向。

​ 具体来说,算法使相机将偏向于存在建筑物侧面的方向。若当前点的高度低于某阈值,则说明当前点大概率处于建筑物的间隙处(周围被建筑物侧面环绕),因而额外向不同方向拍摄2张照片。

路径规划

​ 首先将场景划分为一个个同心圆(或矩形)。对于最外侧同心圆和场景中心,其上每一点由于缺少包围其三点的高度信息,无法用4.2所说确定相机朝向的算法,因而采用如下策略:1. 在保守高度向场景中心拍摄;2. 若相邻点的已知高度高于当前位置高度,则有向其拍摄的倾向。

​ 之后选择遍历的圆的策略为采取半径二分的策略,遍历每个点时寻找包围当前点的最小三角形以采用上述算法确定相机朝向。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages