UAV Project

Introduction

這個專案展示了使用無人機來進行建築結構檢查的創新方法。傳統的檢查方式不僅昂貴且耗時,還存在風險。通過使用無人機,我們可以捕捉高解析度的影像並收集數據,有效檢查建築結構中的潛在問題。

核心技術概述

  1. Point Cloud 處理:

    • 使用 Point Cloud Library (PCL) 去噪原始 3D Point Cloud,並應用濾波器去除雜訊,獲得更平滑、真實的表面。
    • 根據 Point Cloud 的密度,將距離小於某個閾值的點連成線,形成多邊形(Site)。
    • 去除過近的 Site 邊界,避免無人機進入無法飛行的狹窄區域。
  2. Voronoi Diagram 應用:

    • 利用 Voronoi Diagram 將建築結構劃分為不同區域,每個區域內的點與相應障礙物 (Site) 距離最短。
    • 這可以讓無人機保持與障礙物的安全距離,進行有效路徑規劃。
  3. Delaunay Triangulation:

    • 由 Voronoi Diagram 生成 Delaunay Triangulation,並利用其垂直特性,使無人機鏡頭保持面向建築物。

檔案和操作流程

讀取 Point Cloud 檔案

  • 查看點雲:下載並使用 CloudCompare 來查看點雲數據的樣貌。
  • 連接實驗室 Ubuntu Server
    • 進入 Desktop/project,所有相關的檔案都在這個資料夾。

程式編寫與執行

  1. 寫程式:

    • 使用以下指令打開編輯器:
      1
      code vicky.cpp
    • 將會自動開啟 Visual Studio Code 進行程式編輯。
  2. 執行程式:

    • 進入 build 資料夾:
      1
      cd Desktop/Project/build
    • 生成與編譯:
      1
      2
      cmake ..
      make
    • 執行程式:
      1
      ./vicky
      `.obj` convert to `.pcd`

TODO

2024-10-04

  • Obj 轉為點雲檔案並過濾非表面數據
    • 補洞:處理點雲中的空隙,使表面完整。
    • 消除內部點(變空心):保留物體表面點,將內部點排除,形成空心結構。

      Desktop/point cloud model 直接處理pcd

減少點數的程式碼有了(vicky.cpp)
現在只要弄 POCO: Point Convolution for Surface Reconstruction 找表面的程式碼

2024-10-15

進度更新:補洞與資料清理

補洞進行方式

  • 使用 RANSAC (Random Sample Consensus) 偵測並排除點雲中的平面部分。
    • 排除牆面上的點,模擬封閉門窗,避免無人機誤入室內。
    • 剩餘的點雲保留非平面區域(如邊緣與開口)。

操作步驟

  1. 使用 RANSAC 移除主要平面點。
  2. 保留非平面區域作為無人機飛行參考。
  3. 接下來將進一步優化補洞,嘗試使用 .las 格式數據進行測試。

2024-10-22

本週進度報告主要集中在解決點雲的浮動點與門窗補洞問題。我們完成了以下幾個主要步驟:

進度更新:補洞與資料清理

  1. Poisson表面重建:生成建築物表面的缺失點(如門窗等),成功應用Poisson技術進行補洞。
  2. 距離過濾:使用KdTree對新生成的點進行距離檢查,過濾掉與原始點雲距離超過10公分的浮動點,確保生成的點與建築物表面相符。
  3. 合併點雲:最終將經過篩選的Poisson重建點與原始點雲合併,生成完整的點雲,並成功填補了建築物表面的空隙。

補洞與過濾

Poisson表面重建:首先使用Poisson表面重建生成缺失區域的點(如門窗等)。這是一種插值技術,會基於現有的點雲生成一個連續的表面。

距離過濾:之後,為避免出現不相關的浮動點,使用KdTree來檢查新生成的點與原始點雲的距離。如果生成的點距離原始建築物點雲過遠(超過指定的閾值,例如10公分),則將其過濾掉。

合併點雲:最後將經過篩選的Poisson重建點與原始點雲合併,保存完整的點雲,並且補齊建築物表面中的洞。