音メディア処理研究室

 
01月

LeapMotionを用いたEV3のジェスチャー操作

 米LeapMotion社から発売されているLeapMotionで認識できる手の動きやジェスチャーを用いてロボットを操作します。LeapMotionはUSBケーブルで、ロボットはBluetooth通信でそれぞれPCに接続しています。使用しているロボットはレゴ社が発売している教育用ロボット”LegoMindstormEV3”です。

http://youtu.be/9pOS0eGaUr0

■システム構成

  • 開発言語・・・C#
  • OS    ・・・Windows7
  • アプリケーション開発環境・・・Visual Studio Professional 2013
  • センサ ・・・LeapMotionController
  • ロボット・・・LegoMindstormEV3
  • LeapMotionSDK 2.1.6+23110
  • LEGO MINDSTORMS EV3 API v1.0 (https://legoev3.codeplex.com/)
  •  

    ■システム概要

     LeapMotionから読み取った手の座標を利用してロボットのモータパワーを決定し、ロボットに送信します。システムの流れは図1のようになります。モータパワーの算出方法は図2のようになります。

    LeapMotion_操作図2

    図1 システムの概要図

    LeapMotion_MotorPower

    図2 手の位置からのモータパワーの算出

    <参考文献>

    • LegoMindstormsEV3  (http://www.afrel.co.jp/lineup/mindstorm-ev3)
    • Kinect×教育版LEGOMindstormsEV3 開発ガイドブック (同上)
    • LEGOMINDSTORMS EV3 API (http://legoev3.codeplex.com/)
    • LEAPMOTION  (https://www.leapmotion.com/?lang=jp)
    • LEAPMOTION Developer Portal (https://developer.leapmotion.com/)
    • LeapMotionDeveloperSDKで開発できる環境を整える(WindowsC#編)(http://www.naturalsoftware.jp/blog/8389)
    • LeapMotionで指の先を画面に表示する(https://code.msdn.microsoft.com/windowsdesktop/LeapMotion-c52eb8a8)

     

    音声データを扱ったゲーム

    2014年12月19日に行われた3年生デモ大会での発表内容です。
    今回のデモでは音声データ(今回は.wavと.mp3データやマイク)を読み込みスピーカやマイクを移動させていくゲームを作成した。

     スピーカは音量によって高さが変化するように作り、マイクは声の高さ(周波数)の高さによって操作できるようにゲームを作成していった。
    音符の速度は一定速度で進んでいくように設定していった。

    使用した環境
    ・Windows7
    ・processing-2.2.1-windows64bit

    実際の動作は以下の動画に載せます。

    Q.なぜ音量が大きいときに音符の間隔を狭くしていくように設定したのか
    A.音量が大きいときは、曲が盛り上がっていると判断し、盛り上がっているときは音符の数を増やしていったほうがゲームとして楽しくなると考えたためである。

    Q.なぜ300Hzで一番上の位置近くに行くように設定したのか
    A.300Hzは3オクターブのDとD#の声の間にあり、テノールはC3~C5の範囲の声域を持ち、普段の生活で300Hz以上の声を出す機会がないと考え、今回は300Hz程度で一番上に行くように設定した。

    まとめ
    今回は声を出すということを用いてマイクを操作する方法を採ったが、実際に操作するとなるとマイクの位置が不安定になり、理想的な場所に持っていけないなどの問題があったので、ゲームとして楽しむためにはマイクの操作性について検討していく必要があると感じた。

    補足
    ゲームとして楽しむために点数を出すようにしたり、最後にクリア画面などを出すようにした。