Microsoft KinectをRaspberry Piと統合しSonbiロボットでリアルタイム人物検出
A. 目的
SonbiロボットのRaspberry Piにフル機能ソフトウェアスタックを組み込み、Microsoft Kinectを接続し、センサー前方に立つ人間を検知した際にロボットが腕を振って挨拶する機能を実現すること。
B. ハードウェアシステム
- 8GBフラッシュストレージ搭載Raspberry Pi
- Pololu Maestro 24チャネルサーボコントローラー
- Microsoft Kinect(RGBカメラ、深度センサー、IRエミッター、マルチマイクアレイ、加速度計)
- ATX 500W電源
- プロトタイピングボード、配線、機械部品
Raspberry Pi仕様
- 700MHz ARM1176JZF-Sコアプロセッサー
- 512MB SDRAM
- MicroUSB 5V電源入力
- Ethernet、HDMI、周辺機器用USBポート2つ
- Raspbian OS稼働 – 豊富なコミュニティサポート
Pololu Maestro 24
- 24独立サーボチャネル
- パルスレート最大333Hz
- スクリプトメモリ最大8KB
- チャネルあたり最大1.5A
- USBまたは電源ヘッダー入力対応
- ネイティブAPIまたはカスタムファームウェアでスクリプト可能
Raspberry PiとPololuの接続
- シンプルなTTLシリアル配線:電源、グラウンド、Tx-Rx、Rx-Tx
/etc/inittabと/boot/cmdline.txt編集でPiのデフォルトシリアルコンソールを解放- 詳細手順はこのチュートリアル参照
Microsoft Kinect機能
- RGBカメラ(1280×960解像度)でカラー画像
- IRエミッターと深度センサーで3D距離マッピング
- 4マイクアレイで音声取得と音源定位
- 3軸加速度計(±2G)で姿勢検出
- 垂直チルト範囲:27°
- 30fpsフレームレート
C. KinectとRaspberry Piの統合
KinectのネイティブドライバーはWindows専用のため、LinuxベースのRaspberry Piに必要ライブラリをインストールするのは時間がかかるが必須。以下に手順を概説。
1. Kinectドライバーインストール
- Libfreenect(ユーザースペースドライバー)かOpenNI(高レベルフレームワーク)を選択。最大柔軟性のため両方インストール。
- LibfreenectはRGB/深度画像、モーター制御、加速度計、LED対応。オーディオは実験的。
- OpenNIは深度、オーディオ、スケルトントラッキングのクロスプラットフォームSDKサポート提供。
2. Libfreenectビルド
sudo apt-get install git-core cmake pkg-config build-essential libusb-1.0-0-dev
git clone https://github.com/OpenKinect/libfreenect
cd libfreenect
mkdir build
cd build
cmake -L ..
make # オプション: cmake --build .
3. OpenNIビルド
sudo apt-get install g++ python libusb-1.0-0-dev freeglut3-dev
cd Platform/Linux/CreateRedist
./RedistMaker
sudo ./install.sh
# オプション: make mono_wrapper && make mono_samples
D. ソフトウェアスタックとランタイム
ロボット起動時、bootscript_sonbi.shスクリプトが顔検出モジュールを起動:
python facedetect.py --cascade=face.xml 0
事前学習済みHaarカスケードファイルはこちらからダウンロード:face.xml。スクリプトはKinectのRGBフィードをストリーミングし、リアルタイムで顔を検出、Sonbi実行ファイルに信号を送りサーボモーターでフレンドリーな手振りを実行。
E. アクションまとめ
人間検知時、Kinectが深度対応画像を取得、検出アルゴリズムが顔を確認、Pololu MaestroがSonbiロボットのアームサーボに指令し歓迎の手振りを実行。この統合は、コンシューマーハードウェアをインタラクティブロボティクスに活用する実現可能性を示します。
製造プロセス
- シームレスMQTT統合:NodeMCU DHT22センサーとRaspberry Pi 3 B+ブローカー
- Python、SQLite、LabVIEWによるRaspberry Pi高精度温度プロファイリング
- オプトカプラとRaspberry Piで24Vサーモスタットのイベントをログ記録・グラフ化
- Raspberry PiとPythonでリモート温度センサーを構築 – ステップバイステップガイド
- Raspberry Pi 3とPubNubでリモート気象監視
- TI SensorTagをNode-RED経由でBlynkと統合 – Raspberry Pi Zero編
- Raspberry PiでPIRモーションセンサーとLEDを制御
- Raspberry PiとDS18B20でマルチセンサー温度・光監視システムを構築
- Raspberry PiとTwilioで実現するトイレ占有センサー:音声通話とSMSで通知
- Raspberry Piでセンサーとアクチュエータを制御:加速度計、サーボ、データストリーミング
- LIRCなしでRaspberry PiにIRリモコンを接続 - Python UARTアプローチ