ETSIITテクニカル チャレンジ:学生から起業家へ、Locaviewerの挑戦
1年前、私たちは第4回ETSIITテクニカル チャレンジ(動画)に挑みました。私たちはスペイン・グラナダ大学の電気工学とコンピュータ サイエンスを専攻する4人の学生です。
私たちのチーム「プロメテウス」は、RTIスポンサーのテック チャレンジで優勝しました。4〜5人のチームが、外部パートナーから出される実社会の課題を解決する製品を作るというものでした。今年のテーマは「マルチエージェント ビデオ分散システム」です。
実践的な経験を得るために参加しました。1年後、まだ学生ながら商機を見出し、競争力のある製品「Locaviewer」を設計し、市場戦略を立て、動作するプロトタイプを構築しました。すべて学業と並行してです。
Locaviewer
多くの親が、保育園での子どもの健康と成長を心配しています。Locaviewerは、親に子どものリアルタイムな様子を提供します。プロモーション動画を制作し、ソースコードをMITライセンスでGitHubに公開しています。
チーム編成とスケジュール
プロジェクトには約250時間を費やしました。週1回最低4時間、最終月は週20時間まで増やしました。効率化のため、室内Bluetooth位置測位アルゴリズム担当と、ビデオ撮影・エンコード/デコード・RTI Connext DDSによる配信担当の2つのサブチームに分かれました。
位置測位アルゴリズム
ソリューションの核心は、保育園内の各児童の位置特定でした。各児童はBluetoothセンサー内蔵のリストバンドを着用し、部屋の壁に設置された固定ドングルにRSSI(受信信号強度)を継続的に報告します。RSSI値を距離にマッピングし、信頼性の高い関係を確立しました。
RSSI読み取り値は、三角測量アルゴリズムを実行するミニコンピューター(Raspberry PiまたはMK802 III)に送信され、各児童の位置を特定します。カメラ位置がわかっているため、各児童に最適なカメラを選択できます。
ビデオ録画アプリケーション
GStreamer for Javaを使用して、リアルタイムのビデオ撮影、エンコード、デコード、表示を処理しました。vlcjなどの代替案はRaspberry Piをサポートしていないか、レイテンシ要件を満たしませんでした。広範な調査の結果、GStreamerが適していることがわかり、AppSinkとAppSource要素を通じてエンコード済みビデオ バッファにアクセスし、DDSトピックに発行できました。
VP8(WebM)エンコーダーを選択。JavaラッパーがGStreamer 0.10との互換性のため、解像度を下げてプラットフォームの制約に合わせました。テスト構成ではRaspberry Piを使用し、コストを抑えつつ処理能力の高いMK802 IIIへの移行を計画しています。
以下のJavaスニペットでVP8エンコーダーを作成します:
Element codec = ElementFactory.make("vp8enc", null); codec.set("threads", 5); codec.set("max-keyframe-distance", 20); codec.set("speed", 5); Element capsDst = ElementFactory.make("capsfilter", null); capsDst.setCaps(Caps.fromString("video/x-vp8 profile=(string)2"));
クライアント側のパイプライン設定は以下の通りです:
VP8デコーダーのJavaコード:
String caps = "video/x-vp8, width=(int)320, height=(int)240, framerate=15/1"; Element capsSrc = ElementFactory.make("capsfilter", null); capsSrc.setCaps(Caps.fromString(caps)); Element queue = ElementFactory.make("queue2", null); Element codec = ElementFactory.make("vp8dec", null); Element convert = ElementFactory.make("ffmpegcolorspace", null);
JPEGエンコーディングも試しましたが、パケットサイズが大きくリアルタイム ストリーミングには非現実的でした。
DDSアーキテクチャ
パブリッシュ・サブスクライブ モデルがソリューションの中核であり、ソケット接続を手動で管理する必要がありません。独自のラッパー ライブラリ「DDStheus」でDDS操作を抽象化しました。
最終システムは、3つの言語で実装された6つのプログラムが3つのトピックを共有する構成です:
- Python:低レベルBluetooth処理
- MATLAB/Octave:三角測量スクリプト
- Java:RTI Connext DDS統合とGUI開発
部屋内のすべてのRSSI値が必要だったため、ドングルを設定しRSSIデータを収集するスクリプトを作成。これらの値をローカル ソケット経由でJavaプログラムに転送し、Sensor Dataトピックに発行しました。データには児童ID(センサーMAC)、ドングルID、位置、現在の部屋(フィルタリング用キー)、RSSI値、有効期限が含まれます。
ビデオ撮影とエンコード後、Javaプログラム「Gava」がVideo Dataトピックでストリームを送信。各パケットにカメラIDと部屋情報をタグ付けし、ContentFilteredTopicでカメラ位置と部屋によるストリーム フィルタリングを実現しました。
カメラ メタデータ(ID、部屋、位置)は各パブリッシャーのUSER_DATA QoSフィールドに格納。三角測量ミニコンピューターは、部屋内のすべてのカメラを検出し、新規/オフラインカメラをリアルタイムで検知し、カメラ選択アルゴリズムを調整できます。
最終ステップでは、センサーとビデオデータをChild Dataトピックに集約。部屋サーバー(Raspberry PiまたはMK802 IIIで実装)が児童の位置を三角測量し、最適なカメラを選択。部屋でセンサーをフィルタリングし、カメラ情報を取得し、Octaveスクリプトで児童の位置と最適カメラを計算し、結果をクラウドに発行。児童IDとビデオ品質をフィルタキーとして効率的なサブスクリプションを実現しました。
リソース使用を最適化するため、部屋サーバーは特定の児童のデータをサブスクライバーが要求したときのみ三角測量スクリプトを実行します。これはサブスクライバー検出とContentFilteredTopicフィルターで判断します。
フォールト トレランス機構も実装:各ミニコンピューターがUSER_DATAに優先度IDを発行。最も低いIDのノードがアクティブ サーバーとなり、さらに低いIDの新ノードが参加するまでその役割を担います。
ユーザー アプリケーション
2つのエンドユーザー アプリケーションを開発しました。1つは親がリアルタイムで子どもを閲覧するためのもの。もう1つは保育園スタッフが全カメラを監視し、親のアクセス管理と出席管理を自動化するためのものです。
最後に
2つの大きな課題に直面しました:
- 低コストBluetoothデバイス(約5ドル)から正確なRSSI値を取得すること。位置誤差を3mから0.5mに削減するアルゴリズムを開発。Javaに低レベルBluetoothサポートがなかったため、Python(pybluez経由)とJavaを連携させてデータ交換しました。
- ビデオ エンコードの最適化。エンコード済みバッファを公開するライブラリの発見が難しく、Raspberry Pi上でのGStreamer 0.10のチューニングも困難でした。最終構成では3〜5秒のレイテンシを達成。Raspberry PiをMK802 III(Wi-Fi搭載、デュアルコアCortex-A9)に置き換えることで性能向上が見込めます。
RTI Connext DDSは、ネットワーキング、シリアライゼーション、QoSを処理することで、私たちの工数を大幅に削減してくれました。このビジネス チャレンジに取り組む機会とリソースを提供してくれた工学部とRTIに感謝します。
さらに詳しく:
自律走行車両の生産 »
自律システムにおける接続性 »
IIoTとは? »
DDSとは? »
モノのインターネットテクノロジー
- レバノンのお客様が来場:CNC、プラズマ、レーザー機械の操作研修を実施
- ヨルダンのお客様が来場、3軸木工機械を体験
- カナダのお客様が先進1530空圧CNC工場を見学——3スピンドルルーターの内部
- 専門エンジニアがドバイでELE2140カルーセルATC CNCルーターの先進研修を実施
- カタールのお客様が来場——1530 ダブルスピンドルCNCルーターを披露
- ベンガルのお客様が新規CNC木工ルーターを検査来場
- インドのお客様が工場視察、カスタムELE1325 CNCルーターを発注
- 韓国の産業視察団がCNCルーター生産施設を来訪
- リモートアクセス ウェビナー FAQ – 包括的な回答集
- CEOからのメッセージ:勇気と信頼がIXONの成長を牽引する
- GBCC、シフト勤務者対応で先進複合材製造認定プログラムに午前クラスを新設