過去に点群を扱ったことがあるUnityエンジニアです
静的なMesh化
ROSは完全に素人なので全くわからんのですが点群をコライダーとして扱う際はMesh化していました
ball pivot法とpoisson法という二種類の代表的なアルゴリズムがPCLとかPyMeshLabなどの各種
点群処理系のライブラリで実装されているのでこれらを使ってMesh化してやっていました
コード書くのがめんどくさいならMeshLabやcloud compareとかのGUIフロントエンドがある点群処理ウェアでも可能です。
ただし話を見ているとリアルタイム処理が必要な気がしているのでどうかな・・とも思いました
これらのアプローチだとBallPivot法で1億点群クラスの場合数日、poisson法でも数分〜掛かるので
事前に点群データを処理する前提になってしまいます。
またどちらのアルゴリズムも癖が強く、BallPivot法がMeshが欠落しやすく、poisson法は丸っとした形になりがちです。
てっとり早く点群からコライダーを起こしたいという目的であればこれらのライブラリで点群からMeshを起こしてやってみるのもいいのかなあ・・と思います.
余談
若干話がそれますが、Unity分野で語られる点群処理のノウハウの多くはビジュアライゼーション用途が多くガッチリ当たり判定を取ろうみたいな処理系の話はあまりないと思うので(あったらごめんなさい)別分野の論文を参照して自力実装することになるのかなと思います(そもそも点群処理自体さまざまな分野に論文がバラついてて調べづらい印象があります、建築、精密機械、GIS、XR、自動運転と様々に散らばってて辛い・・)
点群のリアルタイム処理はかなりヘビーな処理なので愚直に毎フレーム点群とMeshの衝突判定をやっていると大変なことになるので実績ある手法を検討する必要があります(処理時間はLiDARの性能、点群数が数万〜数億とバラつきが激しいため)や前処理(点群の間引きなど)などでだいぶ変わります)
なんかよさそげな論文
日本語だと引っ掛かりやすい文献なので既読かもしれませんが大規模点群における衝突判定法 などの論文があります
https://sinlab.future-tech-association.org/tech-article/kusaba/daihyo1011/
一応軽く触れられてるブログなどもあって要約されています。
要約するとXYZ座標の持つ点群データをスキャンセンサからの(角度、仰角、距離)の形に変換した
球面の座標空間に展開したデプスマップに変換してデータを取扱いできるようする。
次に衝突対象物の表側をrs、裏側をrsというデプス値として扱い、デプス値同士の比較を行なって当たり判定を取ろうというものです。(めっちゃ雑に要約した)
論文を書かれている増田先生の研究室は点群関連を得意とする研究室なので他にもいくつかあり
多分@Eshiaさんがやりたいと思っている処理は大規模点群の衝突判定を用いた経路探索シミュレーションあたりがちょっと近いのかな?とは思いました(根本的な接触判定はデプスマップ使ってるのであくまでも応用の一事例ですね)
ここまでくると点群をデプス(深度情報)として扱えばなんとかなるんじゃね?という仮説が私のなかで生まれてきました
ただ、手を動かさんとなんとも言えないですね()
他に思いつく方法
これも実際手を動かしてない思いつきです
せっかくUnityでやるならUnityの機能でゴリ押せないかという考え方で思いついたのですが
UnityのVFX graphにはパーティクルに当たり判定をつけることができます 参考
一方VFX graphにPoint Cacheという機能を使って点群を流し込むことが可能です 参考
Point cacheは一応オープンな規格でかなり点群ライクなデータフォーマットになっています。
これらを組み合わせれば点群を当たり判定つきパーティクルとして扱うことでどうにかならんかなと思った次第です、ただROSから来る点群をPoint Cacheに落とし込む必要があったりでそここそこ骨が折れそう・・・
あまり答えになってない気もしますが・・・お役に立てば幸いです