7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ゲームエンジンGodotでROSの点群ビジュアライザを作ってみた

Last updated at Posted at 2019-11-11

概要

ゲームエンジンGodotでROSのノードとして動作する点群ビジュアライザを作ってみました。

作ったもの:https://github.com/ymd-stella/godot_ros_pcviz

ss.png

Godot

https://github.com/godotengine/godot
Godotはオープンソースのゲームエンジンです。
UnityやUnreal Engine 4に比べて知名度が低いですが、軽量で簡単に使えるという大きな利点があります。

Godotをセットアップ

以下からダウンロードしてunzipしたら実行形式のファイルを入手できます。
https://godotengine.org/download/linux

godot-cpp

https://github.com/GodotNativeTools/godot-cpp
Godotの標準のスクリプト言語はGDScriptというpython似の言語ですが、GDNativeを使うとC++でプラグインを作成できます。
これを利用してGodot上でROSノードを動かします。
バージョン3.1のbranchを使ってCmakeでビルドしました。

Godotのノードとシーン

Godotではカメラ、描画対象などをノードとして扱います。
各ノードにはスクリプトをアタッチして振る舞いを変えることができます。
ノードは子ノードを任意の個数持つことができるので、ツリー構造を作ることができます。
このツリー構造をシーンとして保存することができます。
点群ビジュアライザを作るために描画を行うImmediateGeometryと視点の設定を行うCameraを含むシーンを作成しました。

カメラ操作

GodotのGUI上でカメラ初期位置を設定することが可能です。
良さそうなアセットが見つからなかったのでとりあえず実行中のマウス操作は無しにしました。

カラーマップ

OpenCVを利用してparula(matlabのデフォルトカラーマップ)で色付けしました。
Rvizのrainbowよりも強弱が直感的になって良さそうです。

ROSノードを動かす

Godotのノードのメソッドをオーバーライドして、PointCloud2のSubscriber生成、ros::spinOnce()の実行、ImmediateGeometryの生成・操作をしています。
(コマンドライン引数は取れないのでダミーデータをros::initに渡しました)

最後に

100行程度のC++コードでシンプルな点群ビジュアライザを作ることができました。
後は、rvizと同等のカメラ操作を可能にするスクリプトとtfを処理するプラグインを作れば使えるようになりそうです。

7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?