本教材はUnityとROSを組み合わせたロボット開発のための入門用教材です。
ROSで制御された移動ロボットをシミュレータ上で動かし、 Unityを用いてロボット操作用のUIを作成します。
使用するロボットがシミュレータ上で動作するので PC1台で全てのサンプルプログラムの動作を確認することができます。
使用するPCのOSはWindows PCを対象にしていますが 環境に合わせて適宜読み替えていただければmacOSやUbuntuでも実行可能です。
Unityでシミュレータ環境を構築する際はぜひ Unity Robotics Hub をご覧ください。
本教材で扱う内容は以下の通りです。
- DockerによるROS、Gazebo(シミュレータ)の環境構築
- ロボットモデルの表示
- フィールドモデルの表示
- ロボット操作用ボタンの作成と速度指令値の送信
- ロボット位置姿勢の可視化
- オドメトリの可視化
- LiDARデータの可視化
- カメラ映像の可視化
使用するロボットのハードウェアやROSなどのツールについて詳細な解説は省いています。
特にソフトウェアのインストール手順などは頻繁に変更が生じるため、適宜外部のドキュメントへのリンクを案内しています。
本教材はUnityとROSとの通信とUI開発に特化しており、Unityによる物理演算や距離計測などのシミュレーションは行っていません。
本教材の対象として以下の方を想定しています。
- Unityの開発経験がありロボット制御に興味のある方
- ROSの開発経験がありUnityを使ったUI開発に興味のある方
- Unity、ROSの開発経験がなくロボットのUI開発に興味のある方
UnityとROSが連携したシステムを開発するためには両方の知識が必要になりますが、 連携部分をサンプルプログラムとして用意したので入門者でも扱いやすい内容となっています。 サンプルに含まれていないデータのやり取りをしたい場合も、多くの場合はサンプルを少し書き換えることで対応可能です。 本教材で学んだ後は、ぜひオリジナルのUI作成に挑戦してみて下さい。
ROS対応しているロボットのUI開発において RVizなどが広く用いられていますが、 本教材ではこれらをUnityにおきかえることで高精細なグラフィックや 多様なインターフェースを実現することが出来ます。
こうしたUnityの特徴は現実で動作するロボットの状態を端末から確認するといった いわゆるデジタルツイン分野においても非常に有効です。
INTRO1ではROSとUnityが連携することの利点として Unityの強みを少し掘り下げてご紹介します。