RapiroをPS3のDUALSHOCK3で動かしてみる

前回ではRapiroを組み立ててアクションさせる所までやってみましたが、今回はDUALSHOCK3でRapiroを操作してみました!DUALSHOCK3であやつっている事がよくわかりませんが、動画も一応のせてみました。左足がけがしてるみたいですね。あと、いろいろRaspberry Piを触る都合上Rapiroの頭はとったまま撮影しています。以下では実際にどのような設定をしたか具体的な設定内容を記載致しました。RapiroでDUALSHOCK3で動かす方は参考にして頂ければと思います。  

Raspberry Piをネットワークにつないでノートパソコンからログインする

 Raspberry Piをはじめよう (Make: PROJECTS)をみてRaspberry Piの基本的な設定(SDカードを刺してOSインストール)は終わらせておきました。その後、作業しやすいようにLANケーブルをRaspberry Piに刺してノートパソコンからリモート(SSH)で接続できるようにしました。DHCPでIPアドレスを取得するとIPアドレスが取得時にコロコロ変わるためSSHで接続しやすいようにavahi-deamonをインストールしておきます。
$ vi /etc/hostname
-----
todoroki.local
-----
$ vi /etc/hosts
-----
127.0.0.1 todoroki.local
-----
$ sudo apt-get update
$ sudo apt-get install avahi-daemon
上記設定を行っておくと他のPCの端末(ちなみに)から
$ ssh pi@todoroki.local
で接続できるようになります。ちなみに無線LANアダプタをraspberry piに刺してsshで作業しようとしましたが、あまりにもネットワークがちょいちょい切れるため作業するときは有線LANでraspberry pをネットワークに接続して作業した方がよいようです。  

DUALSHOCK 3 で Rapiro をいよいよ操作してみる

 rapiroダウンロードページの「Sony Dualshock 3 ゲームコントローラーでRAPIROを操作するためのサンプルプログラム(Raspberry Pi)」のプログラムを動かすために幾つか設定が必要です。このプログラムはpythonで作成されているのでRaspberry Piにpythonの環境を整えます。virtualenvは使わないで素でインストールしていきます。作業はrootで行っていきます
# apt-get install python-setuptools
# easy_install pip
 rapiroをPS3のコントローラで動かすためまずrapiroのHPのサンプルソースを落として
# curl -O http://www.kiluck.co.jp/rapiro/rapiro_ps3.py
その後にこのプログラムを動かしてみると
# python rapiro_ps3.py
Traceback (most recent call last):
  File "rapiro_ps3.py", line 2, in <module>
    import serial
ImportError: No module named serial
エラーがお約束のようにでます!これはpyserialというモジュールがないためのエラーなので、これをインストールします。
# pip install pyserial
上記がおわったら一旦、PS3のコントローラー(DUAL SHOCK 3)をRaspberry piのUSB口に差し込んでみました。(わかりずらいですが、左下のLANケーブル下の黒い線がそうです)
 そして、PS3のコントローラーがここで認識されているか確認。
# 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 014: ID 054c:0268 Sony Corp. Batoh Device / PlayStation 3 Controller
Bus 001 Device 005: ID 413c:2003 Dell Computer Corp. Keyboard
PlayStation 3 Controller とでてるため認識されてますね(下から2番目)。そして再度 rapiro用のプログラムを実行したあとに、PS3のコントローラーのボタンをおしてみると
# python rapiro_ps3.py
You pressed the UP button
You released the UP button
You pressed the CIRCLE button
You released the CIRCLE button
You pressed the CROSS button
You released the CROSS button
You pressed the SQUARE button
You released the SQUARE button
You pressed the SQUARE button
You released the SQUARE button
You pressed the SQUARE button
You released the SQUARE button
ちゃんと認識されているようです!ボタンをおすと反応してターミナル画面上に「You pressed the CROSS button」などと出力されました。押したボタンによって出力文字が変わりました! 

いよいよ PS3コントローラーからrapiroを動かしてみる

rapiroにRaspberry Piを接続してLANケーブルを刺したまま、PS3コントローラーをUSBに接続しました。この状態でrapiroのスイッチをON。その後、Raspberry Piに他のPCからsshで接続した後プログラムを実行
# python rapiro_ps3.py
  そして、おそるおそるPS3コントローラーのボタンをおしてみると、、、     お、反応した!!!     ボタン押すと様々なコマンド(#0〜#9)を実行してくれました!・・・とおもいきや・・・ん???    ボタンにrapiroが途中から反応しなくなった。。。なぜだ???    ふとコンソールを見てみると、何やらエラーをはいて落ちています。プログラムが停止してしまっているので、これではDUALSHOCK3の信号を受け取る事ができません。
# python rapiro/rapiro_ps3.py
You pressed the CROSS button
You released the CROSS button
You pressed the TRIANGLE button
Traceback (most recent call last):
File "rapiro/rapiro_ps3.py", line 79, in <module>
com.write("#M5")
File "/usr/local/lib/python2.7/dist-packages/serial/serialposix.py", line 518, in write
raise SerialException('write failed: %s' % (v,))
serial.serialutil.SerialException: write failed: [Errno 5] Input/output error
他の方もブログでもとりあげられていますが、おなじようなエラーをはいてとまってしまうようです。。。   いろいろ自分で調べていたのですがわからず、Rapiro Forum をみるとConsole を disableしないと、エラーでとまるという記事がのっていたのでこれは同じ現象なんじゃないかと考え早速記事の内容を試してみることに。 Rasberry Pi のシリアルコンソールを出力してしまている事が原因らしいので、このシリアルコンソールの出力を止めるライブラリをインストール
# 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
インストールに成功したら以下でシリアルコンソール出力をとめる
# rpi-serial-console disable
Serial console has been disabled, a reboot is required to make this take effect
reboot しろと出力されたので reboot してみる。
# reboot
そのあと、もう一度rapiro の電源を再度入れなおして、プログラムを実行
# python rapiro_ps3.py
 DUALSHOCK3でボタンを何度も押してみると・・・     無事エラーがでなくなりrapiroが動作し続けました!!!!!!!!!!Rapiro Forum のコメント書いてくれたkenichi.ogasawara.35さんには感謝です!   さて、次回はDUALSHOCK3を差したままでRapiroを動かしているので、いよいよBluetoothをつかってリモートでRapiroを動かせるようにしてみたいと思います。    

Makuake

プロジェクトを始めたい方、支援したい方に情報を発信中! イベント情報やリリース情報などもお届けします。 FB・TW・Instagram・LINE でも発信中! http://blog.makuake.com/posts/919350

0コメント

  • 1000 / 1000