開発中の近接センサーを使用した個人的な経験

すべての人に良い一日を! 私の名前はマキシムです。私はHabilectの主要な開発者です。



すべてのプログラマーの生活の中で、人生の2/3が何に費やされているかを共有したいときがあります-仕事とプロジェクトの説明:)



歴史的に、私の活動の主な分野は非接触センサーに基づくシステムの開発でした。



ほぼ7年間、多くのオプションが試されてきました-Microsoft Kinect(XBOX 360のバージョンとWindows用のKinect Oneの両方)、Intel RealSense(市場で入手可能な最初のバージョンから開始-F200、SR300の継続、現時点では最後のリリース) -D435)、Orbbec(AstraおよびPersee)、Leap Motion(カスタムジェスチャの処理についてここで一度書いたこともあります)。 当然、画像解析、OpenCVなど、通常のWebカメラなしではできませんでした。



興味のある方-猫をお願いします。



念のため、この非接触センサーのトピックに関する短い教育プログラム:



特定の人の行動をプログラムで追跡する必要がある状況を想像してください。



もちろん、通常のウェブカメラを使用できます。これはどの店でも購入できます。 しかし、このユースケースでは、画像を分析する必要があります。これはリソースを消費し、率直に言って重要です(同じOpenCVのメモリ割り当ての問題は依然として関連しています)。



したがって、人をカメラ画像の一部としてではなく、アクティブな距離計を使用する特殊なセンサーによって取得される「スケルトン」として認識する方が最適です。 これにより、人(または複数の人)を追跡し、「スケルトン」の個々の部分を操作できます。



Microsoft Kinect SDKの用語では、これらの個々の部分は「ジョイント」と呼ばれます。 デフォルトのセンサーの場合、ステータスは30ミリ秒ごとに更新されます。



各ジョイントには以下が含まれます。





図は、Leonardo Da VinciのVitruvian Manを例として使用してKinect v2で処理されたジョイントを示しています。



KinectV2Joints






したがって、近接センサーを使用して、開発者は人または人のグループの動作を分析する機会を得ます(たとえば、Kinectでは、フレーム内の6人を同時に追跡できます)。 そして、受信したデータ配列をどうするかは、特定のアプリケーションに依存します。



このようなセンサーの応用分野は無限です。 私の仕事の主な分野は広告と薬です。



広告の方向を考慮してください。 現在、インタラクティブ広告スタンドの運用には、いくつかの基本モジュールが必要です。



  1. 広告資料自体
  2. 特定の広告の表示に訪問者の注意を引く度合いに関する統計情報の収集。これは広告主にとって興味深いものです
  3. 広告スタンドのリモート構成の可能性
  4. インタラクティブスタンドと、コマーシャルやバナーが印刷された従来のテレビを区別する魅力的な効果


広告資料自体ですべてが明らかな場合、センサーを使用して統計を収集します。 たとえば、広告主は、彼の広告に注目した人の数に興味がありますか? 男性、女性、それとも子供? 彼らはほとんど何時に止まりますか? スタンドの横に立って電話に飛び込むだけでなく、広告を見る時間はどれくらいですか? センサーを使用して、これを追跡し、広告主にとって便利な形式でレポートを作成できます。



リモート構成では、最も単純で明白なモデルであるGoogleカレンダーが使用されます。 各カレンダーは特定のスタンドに関連付けられており、サンクトペテルブルクにいるため、世界中のどこでもスタンドを管理できます。



魅力的な効果はまさに機能性であり、そのためスタンドはインタラクティブと呼ばれています。 スポンサーのロゴを使用して人主導のゲームを作成し、センサーの視野に人が現れたときにウェルカムサウンドを実現します。たとえば、人がしばらく立って広告を見た場合、広告主のストアで割引クーポンを使用してQRコードを作成できます。 オプションは主にファンタジーによって制限され、テクノロジーによって制限されません。



医学でセンサーを使用する理由 この質問への答えは簡単です-正確さを維持しながら、検査とリハビリのコストが削減されます。



顕著な例の1つは、スタビロメトリーの分野での開発です。これは、歩行時の重心のずれの科学であり、姿勢、脊椎、および適切な筋肉機能に影響を与えます。 特別なシミュレーターの特別なセンターに行くことができますが、これは非常に高価な手順ですが、常に提供されているわけではありません。 自宅でセンサーとソフトウェアを購入し、テレビに接続して診断テストを実行すると、その結果が自動的に医師に送信されます。



別の例は、家庭のリハビリテーションです。 リハビリテーションに2つの主な問題があることは誰にとっても秘密ではありません。家への医師の高額な電話(週に数回行う必要があること)とリハビリをした人が同様の運動を長時間行うことをためらうことです。 このために、システムのいくつかの基本的な仮定が開発されました。



  1. 実施の遠隔監視のための医師によるリハビリテーションプログラムの遠隔編集。 たとえば、サンクトペテルブルクの医師は、ウラジオストクの患者に処方された運動コースの実施をリモートで監視し、必要に応じて運動を変更したり、クラスの複雑さと強度を増減したり、統計をリアルタイムで学習したりできます。
  2. ゲーミングされた運動プロセス。 最新のシミュレーターが損傷した筋肉や関節を発達させるための基本的な動作の実行に主に焦点を合わせている場合、インタラクティブなリハビリテーションシステムにより、文字通り、楽にエクササイズを実行できます。 たとえば、よく知られているテトリスの助けを借りて、ボタンを押す代わりに、医師が処方した動き(左手を上げる、右脚を動かす、頭を前に傾けるなど)によって制御されます。
  3. 運動パフォーマンス基準の実装。 患者と一緒に作業する場合、医師はヒントと触覚の助けを借りて運動を監視します(たとえば、腕を離すときに肘で腕を曲げることはできません-これは肩関節の仕事に影響します)。 インタラクティブシステムは、関節間の相対角度を推定し、許容範囲を超える場合、ユーザーに警告を発し、運動の誤った実行を考慮しません。


このようなシステムにより、時間(医師と患者の両方-互いの旅行)を削減し、進行に必要な運動の精度を維持することができます。



.NETテクノロジースタックを使用したプロジェクトの実装用。 私はWindowsのみで動作します:)。 はい。このため、ネイティブSDKのラッパーを数回書く必要がありました(鮮明な例として、Intel RealSense SDKのアダプターを作成しました。当時はアンマネージコードのみだったためです)。 かなりの時間、神経、白髪がかかりましたが、Windowsプラットフォームで開発されたさまざまなプロジェクトにライブラリを接続することができました。



メインセンサー(KinectおよびRealSense)が開発にx64を必要とすることは注目に値します。



クライアントアプリケーションの作業を簡素化するために、センサーと連動し、データを私たちにとって便利な形式でパックし、TCPプロトコルを使用してサブスクライバーにデータを送信する、別個のサービスが実装されました。 ところで、これにより、複数のセンサーで動作するシステムを作成することが可能になり、認識精度を大幅に向上させることができました。



KinectMultiSensorModel

簡略図は、複数のセンサーを使用してオブジェクトを追跡する利点を示しています。 青い点(ジョイント)は、1番目と2番目のセンサーによって安定して決定され、緑は2番目のセンサーによってのみ決定されます。 当然、開発されたソリューションは「Nセンサーモデル」の下で実装されます。



KinectMultiSensorWorkflow

複数のセンサーからのデータを処理する詳細なプロセスを上の図に示します。



ほとんどすべての開発において、パフォーマーの主な基準の1つは関心です。 その後、ASP.NETとPHPに同じタイプのWebアプリケーションを数年続けて実装しましたが、新しくてもっとスマートなものが欲しかったのです。 Web開発(まれな例外を除く)では、すべてがすでに発明されています。 まあサイト、まあサービス、まあデータベース。 センサーを操作する場合、たとえば、「TCPを介してセンサーからhdビデオを送信し、システムがハングアップしないようにするにはどうすればよいでしょうか?」など、興味深い曖昧なタスクが常に発生します(昔の例ですが)。 そして、システムの改善と開発のために以下が必要になると予測することは困難です。 グローバルで事前に計画された改善点が説明されている主な開発スプリントがあることは明らかです。 しかし、そのようなローカルサブタスクは、プログラマーの技術の中で最も興味深いものの1つです。



そのような仕事は間違いなく日常的ではありません。 誰かがより詳細な学習に興味がある場合、またはこの分野のどこから始めればよいか知りたい場合、私はコミュニケーションを受け入れます。 質問に答える準備ができています:)そして、力があなたと一緒にいるかもしれません!



All Articles