tdrk's diary

とある情報系大学生。主には自分のための備忘録...になる予定

RAPIROで遊ぼう!(その2)

前回の記事ではRAPIROというよりRaspberry Piの設定しかしてなかった。nagisa314.hatenablog.jp

PS3コントローラーで操作する部分を書き起こします。
(RAPIRO自体の設定は他を当たってくださいm(__)m)


まずは公式サイトで書かれているサンプルプログラムをダウンロードしてきます。

mkdir controller
cd controller
curl -O http://www.kiluck.co.jp/rapiro/rapiro_ps3.py

必要なモジュールなどをインストールします。
(この作業、2015/05/22時点では不要になっていたような気がします...)

sudo apt-get install pyserial

RAPIROにセットしたRaspberry PiにPS3コントローラをUSB接続します。
しっかり接続できているか確認しましょう。

lsusb

このコマンドの出力に

Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 006: ID 054c:0268 Sony Corp. Batoh Device / PlayStation 3 Controller

てな感じで「PlayStation 3 Controller」と出ていたらOKです。

これで先ほどダウンロードしたプログラムを動かすとPS3コントローラで操作できるはずです。

python rapiro_ps3.py

コントローラのボタンを押してみると

You pressed the SELECT button
You released the SELECT button
...

などと出力されます。

おそらく、何度かボタンを押しているとエラーが起きてプログラムが終了してしまうと思います。
RAPIRO自身は最後に受け付けた命令を実行し続けていますが...
この原因はRaspberry Piのシリアルコンソール出力が原因のようです。
なので、その対策として次のコマンドを実行します。

sudo wget https://raw.github.com/lurch/rpi-serial-console/master/rpi-serial-console -O /usr/bin/rpi-serial-console && sudo chmod +x /usr/bin/rpi-serial-console
sudo rpi-serial-console disable
sudo reboot

再起動後、プログラムを実行してから何度もコントローラのボタンを押してもエラーが怒らなくなりました。

python rapiro_ps3.py

ここまででPS3コントローラによるRAPIROの操作が可能になりました。
次の記事では、目標である遠隔操作の設定です。
現状ではUSBでつないでいるPS3コントローラを外して、無線(Bluetooth)通信できるように設定した方法について書き起こしたいと思います。