ブログ記事で何度か紹介いたしましたStructure Sensorのアプリケーション開発を行いました。
■Structure Sensor アプリ概要
PCCの活動として今後のビジネス展開を視野に入れアプリケーションの開発を行いました。
Structure Sensorを使用して画面の計測領域内にあるオブジェクトの幅、高さ、奥行きの最大サイズをリアルタイムで計測できるiPadアプリです。
現状は試作版のため以下の機能のみを実装しています。
・計測領域内にあるオブジェクトの幅、高さ、奥行きの最大サイズを計測。
・Scanボタンを押すことでトラッキングを行い色付3Dメッシュデータ化。
・計測領域内の床面を除いた点群データを取得し、PCDデータとして保存。
■アプリ開発について
<1>Structure Sensorとは
Structure Sensorにつきまして前のブログ記事(
Occipital の Structure Sensor 使用レポート)でも紹介いたしましたがアメリカのOccipital社より販売されているiPadに装着して使用できるRGB-Dモバイル3Dセンサーです。
Structure Sensor公式ページ
Structure Sensorの詳細につきましては林氏の
マイナビ記事でも紹介されております。
<2>Structure SDK
Structure Sensorを購入しDevelopers登録をすることでSDKデータを入手することができます。
SDKデータをもとに開発を行うことである程度開発の短縮になるようです。
ただし、SDKの情報が乏しいため開発の難易度は高いものと思われます。
当然ですが日本語サイトは無いため英語サイトがメインとなるようです。
<3>開発環境
Structure SensorはiOSアプリなのでMacのXcodeによる開発となります。
実装するiPadのOSバージョンに合わせてXcode、OSXのバージョンを合わせて開発を行う必要があります。今回実装を行うiPadのバージョンがiOS8.1だったため開発環境はOS X、Xcode共に最新版を使用して開発しました。
Structure SensorにはHacker Cable(SensorをUSBでPCにつなぐケーブル)が付属しておりましたがStructure SDKがiOS内でしか動作しないらしいのでケーブルを使用しませんでした。アプリの動作確認を行う場合は毎回iPadにアプリを入れて検証しなければならないので少し不便でした。
■サイズ計測アプリの使い方
<1>アプリを起動してサイズ計測
アプリを起動するとカメラからの映像が表示されます。
平面を認識画面上の立方体のラインが平面(床面)に吸着するように配置されます。
ヒートマップ表示部分が計測領域となりますので計測領域にオブジェクトが入るように調整します。
計測領域はピンチインアウトで拡大縮小できます。
画面下にオブジェクトのサイズがリアルタイムで表示されます。計測領域内のオブジェクトが変わるとリアルタイムで数値が変化します。
上画像では310×325×220サイズのゴミ箱を計測領域に表示させたときの計測サイズ結果となります。
多少の誤差は出ますがおよその数値を計測することができます。
以下、実際にオブジェクトをリアルタイムで計測している動画となります。
動画の計測物はW300mm×H300mm×D200mmサイズの箱です。
多少の誤差はありますがリアルタイムで近い数値まで計測できています。
<2>3Dスキャントラッキング(Scanボタンを押す)
3Dスキャン部分の機能はStructure SDKのサンプルデータをそのまま流用しております。
Scanボタンを押すとトラッキングが始まります。
Scanモードでは完了した箇所からメッシュが盛り付けられていきます。
全方向からスキャンすることでオブジェクト全体をスキャンすることができます。スキャンが完了したらComplateボタンを押してプレビューを見ることができます。
・X-Ray View … メッシュポリゴンのワイヤーフレーム表示
・Color View … メッシュにカラーテクスチャが貼られた状態
3Dスキャン機能は公式で配布されているアプリに実装されているものと同じです。
以下動画ではスキャン開始から各View表示までの流れを撮影しております。
<3>PCDデータの保存(PCD Saveボタンを押す)
PCD Saveボタンを押すとPCDデータをiPad内に保存します。
試作版のため保存アクションは特にありませんが最終的には保存完了時のアクション(アラートなど)を実装する予定です。
■今後のアプリ開発について
今回開発のサイズ計測アプリは現状、計測領域に含まれる床面以外のすべての最大サイズを計測するようになっております。
現状オブジェクトが複数ある場合は最大値となってしまうため個々のサイズ計測は実装していません。今後の開発で複数の場合には各オブジェクトを認識してオブジェクトごとのサイズを計測できるようにしていきたいと思っています。
またタップした2点間の距離を計測したり、トラッキング完了後のオブジェクトサイズを計測などの実装ができるよう引き続き開発を進めていきたいと思います。
今回ご紹介いたしましたアプリケーション詳細、開発にご興味のある方はお問合せフォームよりご連絡いただければ幸いです。
有限会社マグネットインダストリー
西内伸太郎