主にネイティブアプリケーションの開発を担当している上野です。
先日、東京ビッグサイトにて開催された第5回5G通信技術展に出展し、 リアルタイムデジタルツイン及び産業分野別ソリューションなどのいくつかのデモンストレーションを行いました。
この記事では展示したデモの1つである "リアルタイム"デジタルツイン
について、開発を担当していた私が解説をしたいと思います。
そもそもデジタルツイン(DigitalTwin)とは
デジタルツイン(DigitalTwin)とは、現実の世界から収集した様々なデータを、まるで双子であるかのように、コンピュータ上で再現する技術のことです。コンピュータ上では、収集した膨大なデータを元に、限りなく現実に近い物理的なシミュレーションが可能となり、自社製品の製造工程やサービスの在り方をより改善するうえで有効な手段となります。例えば製造ラインの一部を変更する場合など、事前にデジタルツイン上でテスト運営することで、開発期間やコストの削減が見込めます。
引用元: デジタルツインとは?意味・定義 | ITトレンド用語 | ドコモビジネス | NTTコミュニケーションズ
"リアルタイム"デジタルツインとは
前項で デジタルツインは膨大なデータを元に
とある様に実際にデジタルツインで取り扱うデータは大量のデータを扱うことが多く、更新の頻度も数十秒以上かかるものが多いなど高頻度に情報を取り込むのは難しい様です。
弊社では intdash という高速でかつ大容量のデータ伝送を行えるプラットフォームと Visual M2M Data Visualizer のような伝送されたデータを数十~数百ミリ秒の遅延で可視化する製品を持つなど リアルタイム に取り扱うノウハウを持っています。
このデモは、アプトポッドの技術と最近注目されつつあるデジタルツインを組み合わせてなにか出来ないかを調査・検討した プロトタイピングプロジェクトの成果 になります。
※ 今回展示した デジタルツインデモ は、すぐにご提供できる商品ではありません。研究開発成果をご紹介するためのものとお考えください。
デモンストレーション構成
今回デモアプリとして、バーチャル空間上に現実世界の倉庫を再現するデモアプリを開発しました。また現実世界としては、実際の倉庫を用意するまで準備コストをかけられなかったため、代替として物理シミュレーターである Gazebo を使用しました。
デモアプリとGazeboシミュレーターには Turtlebot3 を設置しています。
今回のデモでは
- リアル環境の代替としてクラウド上に設置したGazeboシミュレーターの情報をintdashを用いて伝送し続けています。
- 展示会場には一般的なゲームパッド*1が接続されたRaspberry Piを設置し、Raspberry Piに組み込まれた弊社製品である intdash Edge Agent を用いてintdashのプラットフォームを利用してコントロール情報をGazeboシミュレーターに伝送することでTurtleBotの遠隔制御が可能な状態にしています。
- 伝送され続けているリアル環境データは数十から数百ミリ秒ほどの遅延で開発したデモアプリに表示されています。
- バーチャル空間上では、倉庫内の固定物(棚など)は3Dモデルとして描画しています。一方でダンボールなどの可動物は、事前にモデリングできないため、本来であれば3Dモデルとして描画することはできませんが、今回のデモではわかりやすさのためにワイヤフレームの形式で描画しています。
- 実際の利用シーンでは、ダンボールなどの可動物は Turtlebot3 に搭載した LiDAR などによって検出する想定となるため、LiDARから取得した点群をバーチャル空間にオーバーレイして表示しています。
という内容となっています。
以上、デモンストレーションの内容に関しては動画にて詳しく解説されておりますので是非ご覧ください。
実際にアプリを開発してみて
ここからは開発者目線でのお話をしたいと思います。
今回展示したデモは弊社では初の試みで Unity を用いて開発しております。 近年デジタルツインと始めとする3次元データや3Dモデルの可視化ツールの需要が高まってきており、その開発の主軸としてUnityやUnrealEngineなどの一般的にはゲーム用エンジンと呼ばれる3D開発プラットフォームが注目されています。
Unityを選択した理由
Unity を選択した理由は、インターネット上に存在する情報、特に日本語情報の多さです。さらにUnityの主な開発言語はC#で、C#はゲーム以外にも利用される言語であるため、今回のようなゲームではない産業アプリケーションの開発に関する情報も多いと考えました。また、C#での開発で不足があればC++を使用することも可能です。一般的なゲーム開発から少し外れる今回の開発プロジェクトでは、こういった情報量の多さや開発の自由度の高さがプラスに働くと考えました。
位置測位精度の課題
実は今回のデモでは、ロボットの位置はGazeboシミュレーターが出力する値を直接取得して使用しています。実際の現実世界でこのデモを使用する場合には、例えば SLAM(Simultaneous Localization and Mapping) のような位置測位技術を使用して、様々なセンサーから算出した推定位置を使用しなければなりません。今回のデモではTurtleBotに搭載されたLiDARによりダンボールなどの障害物を検出してバーチャル空間上にマッピングしていますが、このマッピングが極めて正確に行えるのは、完全な位置情報が推定されている状態だったためです。
実際の現実世界で今回のデモのように正確に障害物の位置をマッピングするには、相当精度のよい位置測位技術が必要となりますが、現在屋内における位置測位技術は屋外におけるGPSのようなスタンダードが確立していない状況です。もし屋内位置測位技術として、汎用的かつ精度の高い技術をお持ちの場合は、ぜひお声がけください。
また、以前私が執筆した記事*2ではiPhoneを用いて地形をマッピングする様なデモを行いましたがあれらはAppleが提供する高度な自己位置推定機能と位置測位技術をユーザーへ提供しているからこそ実現しています。
取得できた点群データをサーバへ送信し、別PCの3D仮想空間上に表示してみた #iPhone12Pro #LiDAR #ARKit #PointCloud #Demo pic.twitter.com/ioxaAQtIfa
— aptueno (@aptueno) 2020年12月16日
デジタルツインにおいてこの 自己位置推定の課題 は大きいと言えます。
Unityによる業務アプリケーション開発の難しさ
今回のデモアプリケーションは、業務アプリケーションとして使用できるように、各種ウィンドウやマウスクリックで操作する画面要素(テキストボックスやドロップダウンリストなど)もUnityで表現することにチャレンジしてみました。iPhoneアプリやWebアプリケーション開発であれば標準コンポーネントとして簡単に導入できる画面要素でも、ゲームであまり使用されないものはUnityには存在しなかったため、スクラッチから開発する必要がありました。
また、Unityでは2Dの画面をただ描画するだけでも、裏側には必ず3Dの要素を保つ必要があり、想定以上にコンピューティングリソースが必要になるという問題もありました。現在ゲームエンジンの産業利用は進んできていますが、業務アプリケーションのような単純な画面構成を開発する用途には、まだまだ最適化されていない感じることが多くありました。
今後について
弊社のプロダクトにUnityを組み合わせることで実現される、ユースケースの広がりを想像いただけましたでしょうか。
今回のデモで得られた知見は、今後お客様からご依頼いただく開発プロジェクトにも活かしていきたいと思っております。
- デジタルツインシステムを作ってみたいが、何から手を付けてよいか分からない
- 既存のデジタルツインシステムにもっとリアルタイム性をもたせたい
- AGVや自動運転車両のリアルタイム監視を行いたい
- 監視だけでなく遠隔操作も行いたい
- データ伝送の必要なアプリケーションを作りたいが、通信プロトコルに詳しくない
- Unity を使って業務アプリケーションを作ってみたい
- 大量データを扱えるハイパフォーマンスな可視化アプリケーションを開発したい
などなど、アプトポッドではIoTに関する豊富な実績と高い技術力で、お客様の課題解決にご協力いたしますのでお気軽にお問合せください。