ugo Tech Blog

ugoの日々の開発・生産について

Unityを活用したロボット現場シミュレーター環境の構築

こんにちは、白鳥です。

今回はロボット(ugo)を開発する上で使用しているシミュレーターについて紹介いたします。

ロボットに限らず、開発では作成した物、コードの検証が必要です。ugoでは、小さいながらも実験スペースを確保し、日々試験をしています。

しかし、実際にugoを動かすためには、十分な広さや安全を考慮しないといけません。また、長い距離を走らせようと思っても、走行できる環境はなかなか見つかりません。

そのため開発時は、シミュレーターを使った気軽に動かせる環境があると、効果的な動作確認が可能となります。シミュレーターをUnityで構築すれば、実機を動かさなくてもどこでも開発できるようになります。

Unityのアセットストアには、非常に便利なアセットがたくさん公開されているため、 部屋にオブジェクトの追加や人を歩かせたりすることが簡単にできます。ugoのシステムをローカルで実行してハードウェア部分(LiDARや移動、カメラ映像など)だけUnity側で仮想空間をエミュレートすれば、 ブラウザでugoを簡単に操作できる「ugo Portal」から仮想空間内に入って操作できるようになります。

では、Unityを活用したロボット現場の仮想空間を構築するシミュレーター環境の構築内容をご紹介します。

作成方法は以下の手順で実施します。

1) LiDARや超音波センサなどはRaycastを使って障害物までの距離を測定して、センサーデータを生成します。

2) 移動コマンドを受け取ったらugoのGameObjectに前後左右に移動や回転をさせます。

3) カメラのストリーミングはmrayGStreamerUnityというUnityプロジェクトがあり、 カメラの映像のストリーミングデータをGStreamerで処理できるようになります。 https://github.com/mrayy/mrayGStreamerUnity

4) あとは部屋のデータをiPhoneのLiDARスキャナアプリで撮りUnityにインポートするだけで、 撮影した環境で走らせることができます。

弊社の会議室を模した3D空間

これで遠隔操作や自動走行などもPC1台で完結します。Unityなので歩行者なども追加できますし、長い走行経路を試したり自由にできます。アセットストアにあるアセットを使っても走らせることもできます。

ugoの遠隔操作画面から見ると、このような映像がUnity上でリアルタイムレンダリングされて操作者側に配信されます。これにより、ロボットの操縦や自動化設定をあたかも実環境と同じように仮想空間上でシミュレーションできるようになります。

またHD レンダーパイプライン(HDRP)を使えばリアルな描画でシミュレーター操作できるようになります。

© Unity Technologies Japan/UCL

ugoでは、一緒にロボットを社会実装していく仲間を絶賛募集中です。
詳しくはこちら👇まで。