ロボットシミュレーションの内部状態を視覚化し、デバッグするためのツールキットによって、Unity を ROS シミュレーションと視覚化を行うオールインワンのツールとして使えるようになります。
ロボットの開発者が直面する課題の 1 つは、システムの中で何が起こっているのかを理解することです。部品が複雑に絡み合ったネットワークの中で、何かがうまくいかないとき、どの部分が悪いのかをどうやって見極めればよいのでしょうか。部品 A がおかしなデータを生成しているのでしょうか、部品 B が間違った処理をしているのでしょうか。システム内を行き来するデータを可視化できることが重要です。
こうした状況を背景として、Unity Robotics から Robotics Visualizations Package を発表する運びとなりました。これは ROS メッセージのビジュアライゼーションを表示、カスタマイズするための新しいパッケージです。
Unity Robotics チームは、ピックアンドプレースや物体の姿勢推定など、ロボット開発に関するサンプルプロジェクトをリリースしています。最近では、Nav2-SLAM サンプルのリリースを行いました。これは自律型ロボットが未知の空間をナビゲートし、マッピングする様子のすべてを Unity でシミュレーションしたものです。
Robotics Visualizations Package は、開発の基盤となったこれらのパッケージをサポートしており、形状、ポーズ、点群、画像、あらゆる種類のセンサーなど、ROS の一般的なメッセージタイプに対応したカスタマイズ可能なビジュアライゼーションのライブラリを提供しています。ROS のトランスフォームツリーをネイティブにサポートしており、実行時に任意の ROS トピックのビジュアライゼーションの有効化、無効化、およびカスタマイズが可能です。
ここでは、Robotics Visualizations Package を使って、既存のロボットプロジェクトにビジュアライゼーション機能を追加する方法をご紹介します。
トランスフォームは、ロボットシステムにおける座標フレーム間の関係を表すものです。すべてのデータは、それぞれ異なる座標フレームで生成されます。LiDAR データは LiDAR フレームに、カメラデータはカメラフレームに、地図データは地図フレームに入っています。このような異種のデータソースを理解するためには、共通の参照フレームが必要です。トランスフォームは、これらのフレーム間の関係を把握することで、その手助けをしてくれます。センサーやアルゴリズムをこの 3D コンテキストに当てはめずにロボットをデバッグすることはほぼ不可能です。Robotics Visualizations Package では、Unity のシーンやアセットと一緒にデータをリアルタイムに表示し、シミュレーションと実データをシームレスに切り替えることができます。
ロボットによる地図構築は難しいものです。地図はバラバラになってしまいますし、ロボットもドリフトを起こします。オドメトリが正しく調整されているのか、それとも最適化ベースの SLAM アルゴリズムが破綻して、地図が壊れて半分になってしまったのか、そうしたこともよく分かりません。Unity の Robotics Visualizations Package では、占有グリッド、トランスフォーム、局在化、LiDAR の点群をすべて重ねて可視化することができ、アルゴリズムがどこで破綻するかを視覚的に確認することができます。
Robotics Visualizations Package は、トランスフォーム、占有グリッド、3D 点群、マーカー、レーザースキャン、画像(jpeg、png、非圧縮)など、ほとんどの一般的な ROS メッセージタイプをサポートしています。また、独自のデータタイプを表示したい場合は、カスタマイズすることも可能です。
Robotics Visualizations Package は、ユーザーが作成したビジュアライゼーションもサポートしています。必要なものを自在に描画したり、ビルトインのビジュアライゼーションをベースにカスタマイズしたりするための強力なツールセットが含まれています。機能のハイライトは以下の通りです。
Drawing3d は、3D 空間に任意のテクスチャーまたは色の線、形状、メッシュ、ラベルを描画するための使いやすいユーティリティクラスです。例えば、予測した位置に物体のゴーストを描き、そこに到達するまでの軌跡を線で示し、さらにその周りにエラーバーを示す線を描くといった使い方ができます。
PointCloudDrawing は、GPU に最適化された点群レンダラーで、それぞれのサイズと色を持つ最大 1000 万個のビルボード化されたポイントを、インタラクティブな処理が可能な速度で表示することができます。3D スキャンや深度イメージなどのボリューメトリックデータの表示に使用できます。
HistoryDrawingVisualizer テンプレートを使うと、過去のデータの傾向を表示したり、3D で動きの軌跡の描画を描いたりすることができます。このテンプレートは、トピックに送信されたメッセージの履歴を保持します。履歴の長さは設定可能です。その履歴を分析し、好きなように表示することができます。
もちろん、これらはすべて Unity エンジンのパワーと使いやすさに支えられており、ARやVRへの対応、Unity Shader Graphによるカスタムシェーダー、コンピュートシェーダー、クラウドシミュレーションなどの機能を提供しています。
皆さんが Robotics Visualizations Package を使ってどんなことをするのか、その成果を見るのが楽しみです。
Nav2-SLAM tutorial の新しい拡張で、新しいパッケージの使い方を紹介していますので、Robotics Visualizations Package を使い始める際にぜひご参照ください。
Robotics Visualizations Package は、Unity でロボット工学の仕事をできるようにするロボット関連パッケージおよび機能の広がり続けるエコシステムのほんの一部です。 その他のロボット関連のプロジェクトについては、GitHub の Unity Robotics Hub をご覧ください。
フィードバックやご提案のある方は、Robotics フォーラムにご投稿いただくか、unity-robotics@unity3d.com までメールでご連絡ください。