ChatGPTさんに疑似点群計測ツールがないか聞いたところ,Blensorに加えてこれも紹介されたので実装.
公式Github:https://github.com/3dgeo-heidelberg/helios

スタンドアロン版もあるが「ファイルが見つからない」とエラーメッセージが出るため,Anaconda promptでインストールと実行する方法を採用した.
余談だが,機能を試すだけなら必要ない開発目的のコンパイルをしようとChatGPTさんとドツボにはまって,数時間ひたすらエラーメッセージを貼り付けまくり,そのたびChatGPTさんに「あと少しですから頑張りましょう!!」と励まされていた.英語だからと解読を放棄してAIに丸投げするのはよくない.

Anacondaの環境構築

公式GithubがMinicondaを推奨していたのでそれをダウンロードする. 
https://www.anaconda.com/docs/getting-started/miniconda/main にアクセスし,右上の「Download」をクリック.
その後あたかもメールアドレスによる登録が必要そうな画面を出してくるが,無視してページの下側まで行き,「Download Miniconda Installer」をクリックする.
Miniconda InstallersのWindows版インストーラーをダウンロードする.

pipを使ってpythonのパッケージを管理していて,それと競合したくなかったので,インストーラーでの設定は以下のように行った.

インストールが完了したら,スタートメニューに「Anaconda prompt」が追加されているので起動する.PowerShellと普通のプロンプトがあるが,後者の方が扱いやすかった.

Anaconda Promptを用いたheliosのインストール

Anaconda promptを起動し,以下のコマンドを実行する.
初めの2行はpipも使っているため競合防止で仮想環境を構築するためのコマンド.ChatGPTさん曰く,他の依存ライブラリとの競合を考えたら最も安定するのがpython3.10とのことなのでそのように指定している.

C:\Users\(ユーザー名)\miniconda3\envs\helios-env\Lib\site-packages\pyhelios にhelios関係のファイルが生成される.
Githubのサンプルデータを使いたい際はGithubからzipファイルをダウンロード・解凍し,helios-main\dataの中身をC:\Users\(ユーザー名)\miniconda3\envs\helios-env\Lib\site-packages\pyhelios\data内に複製しておく.

Anaconda Promptとxmlファイルを用いたheliosでの疑似点群データ計測

Anaconda promptを起動し,仮想環境内で実装した場合は「conda activate helios-env」といった仮想環境の有効化を先に行ってから,以下のコマンドを実行すると,Anaconda prompt実行時のカレントディレクトリ/outputに計測点群データのxyzファイルが保存される.

helios survey.xml

xmlファイルについて

xmlファイルは「survey」「scene」「platform」「scanner」の4つが必要.
以下はサンプルデータをコピーした後のC:\Users\(ユーザー名)\miniconda3\envs\helios-env\Lib\site-packages\pyhelios\dataの中身.

heilosは指定のフォルダパスを起点に相対パスでファイルパスを設定するので,xmlファイルや3DモデルのobjファイルはC:\Users\(ユーザー名)\miniconda3\envs\helios-env\Lib\site-packages\pyhelios\data内に保存しておくこと.

「scanner」はレーザースキャナの特性で,上記では「scanners_als.xml」と「scanners_tls.xml」が該当.
「platform」は三脚や車など,レーザースキャナの搭載手段で,「platforms.xml」が該当.
scannerとplatformのxmlファイルは基本サンプルデータのものを使えばよい.自作したい場合は編集方法を後述している.

「scene」は計測対象を構成するxmlファイルで,「scenes/demo」フォルダ内にいくつかサンプルxmlファイルがある.このxmlファイル内で3Dモデルを配置する.配置できる3Dモデルはobjファイルのみで,「sceneparts」フォルダ内にいくつかサンプルファイルがある.

「survey」は上記3つのxmlファイルを取りまとめている.「surveys/demo」フォルダ内にいくつかサンプルxmlファイルがある.

scannerのxmlファイル解説

コード例

よく使っている据え置きレーザースキャナLeica RTC360をChatGPTさんに再現していただいたもの

platformのxmlファイル解説

コード例

三脚にセットする場合

車にセットする場合

UAVにセットする場合

sceneのxmlファイル解説

surveyのxmlファイル解説

出力ファイルの構成

data\surveys\demo\tls_arbaro_demo.xmlを実行してxyzファイルを出力したところ,1行目は
-12.9882 23.0131 0.0018 598212.6622 0.0000 1 1 289 0 0 50852.008090000
となっていた.初めの3列は座標として,他が分からずChatGPTさんに聞いたところ,以下のような構成らしい.色や法線はつかないと見ていい.

1: X座標 (m)
2: Y座標 (m)
3: Z座標 (m)
4: 時間 (ns) または GPS時間通常、パルス送信時間(相対)
5: 受信強度(Intensity)通常 0~1 の範囲
6: エコー番号同一パルス中のエコー(例:1番目)
7: エコー数このパルスにおける全エコー数(例:1/1)
8: パルスID 一意なパルス番号(スキャナ側の識別)
9: チャネル番号 マルチチャネルスキャナ用(Velodyneなど)
10: ストリップID連続スキャンの分割単位、なければ 0
11: GPS時間またはナノ秒出力モードにより意味が重複していることも

また,出力時のコマンドで以下のようにオプションをつけると,lasファイルでも出力できる.

helios survey.xml --lasOutput

CloudCompareでデータ構成を覗いたところ以下のとおり.読み込んだら色と法線がない点群データが読み込まれていた.