RaspberryPiロボットは 以前 Node.jsとArduinoを利用して作ったのですが、Pythonで動作出来るように改造してみました。
音声入力を使わず、今回はゼスチャーセンサーを利用して操作してみます。まずは3種類の動作をさせてみました。
「Wave」のゼスチャーで、うなずきながらこちらに寄ってきます。
「Forward」のゼスチャーで、首を振りながらあとすざりします。
「Clockwise」のゼスチャーで、ダンスをします。(ちょっとダンスっぽくないけど)
環境
- Raspberry Pi2 ModelB(RASPBIAN JESSIE WITH PIXEL 4.4/Python 3.4.2)
- PLANEX 無線LAN子機 (USBアダプター型) GW-USNANO2A (FFP)
- Raspberry Pi カメラモジュール Raspberry Pi Camera Board
- cheero Canvas 3200mAh IoT 機器対応
- ステレオプラグインスピーカー ASP-2188K
- Arduino工作用の中国製ロボットキット(アクリルボード・モーター・タイヤ・単4電池ケース・超音波センサ・サーボモーター用アームなど)
- PCA9685 16Channel 12bit PWM
- SG90サーボモータ
- 電池ケース 単3×3本用(4.5V)、単3×2本用(3.0V)
- GrovePi
- GROVE - ジェスチャー
- GROVE - RGBバックライト液晶モジュール
- GROVE - I2C モータードライバ
- GROVE - 超音波距離センサモジュール
ずらずらと書きましたが、RaspberryPiにGrovePiを接続し、モーターやセンサー類の制御を行っています。カメラマウント用のサーボモーターは電圧の関係でGroveシステムを使って制御出来ないので、別途モータードライバを用意します。
GrovePi(要はArduino)をRaspberryPiの上部にマウント出来るので少しスリムに出来ました。
Python3
プログラミングは手抜きをして、メーカーが用意しているPythonライブラリを使用します。Groveシステムとサーボモータードライバのサンプルコードを利用してこんな風に記述してみました。
必要なライブラリは以下のライブラリよりインポートします。
サーボモータードライバー
Adafruit_Python_PCA9685/Adafruit_PCA9685/PCA9685.py - GitHub
i2cモータードライバー
GrovePi/Software/Python/grove_i2c_motor_driver/grove_i2c_motor_driver.py - GitHub
ゼスチャーセンサー
GrovePi/Software/Python/grove_gesture_sensor/grove_gesture_sensor.py - GitHub
カラーLCD液晶
GrovePi/Software/Python/grove_rgb_lcd/grove_rgb_lcd.py - GitHub
まとめ
今回はチャットの文字入力や音声入力を利用せずセンサーで動作させてみました。
これだけでは面白くないので、次回ロボットに簡単な感情エンジンを搭載してみたいと思います。(続く)