Sony Dualshock 3 ゲームコントローラーでRAPIROを操作するためのサンプルプログラムのインストール手順について

お世話になります。 
Sony Dualshock 3 ゲームコントローラーでRAPIROを操作するための以下のサンプルプログラム(Raspberry Pi用)についてインストール手順等ありましたらご教授いただきたく。
http://www.rapiro.com/ja/downloads/

raspberry pi内でpythonのサンプルプログラムを実行すると2行目のimport serialの部分でerrorが発生している状況です。 シリアルコンソールはOFFにしてリモートログインし作業しております。
 
よろしくお願い致します。

posted by test1 on 2014-03-03 23:16

大雑把ですが。

■シリアルインターフェースモジュール
sudo apt-get install python-serial     <-エラーの原因はこれ

■Bluetooth
sudo apt-get install bluez-utils bluez-hcidump checkinstall libusb-dev libbluetooth-dev joystick

/etc/init.d/bluetooth start

wget "https://sourceforge.net/projects/qtsixa/files/QtSixA%201.5.1/QtSixA-1.5.1-src.tar.gz/download" -O QtSixA-src.tar.gz
tar zxvf QtSixA-src.tar.gz
cd QtSixA-1.5.1/sixad
make
sudo make install

wget "http://www.pabr.org/sixlinux/sixpair.c" -O sixpair.c

gcc -o sixpair sixpair.c -lusb

sudo ./sixpair

細かいことは、ここの記事を参考にしてください。
http://itpro.nikkeibp.co.jp/article/COLUMN/20130917/504909/?k2

posted by oga on 2014-03-03 23:37

ご教授いただきありがとうございます。
早速試してみます。

posted by test1 on 2014-03-04 22:16

記事を参考に実行してみましたが、サンプルプログラムをpythonで実行すると
以下のエラーメッセージが表示されうまくいきません。
対処方法をご教授いただきたくよろしくお願いします。
Traceback (most recent call last):
File "rapiro_ps3.py", line 6, in
file = open('/dev/input/js0','r')
IOError: [Errno 2] No such file or directory: '/dev/input/js0'

ちなみにUSBケーブルとps3コントローラを再度つないだ時点では
js0ファイルが作成されるので、サンプルプログラムをpythonで実行
するとエラーは表示されませんが、ps3コントローラのボタンを押しても
反応がありませんでした。

posted by kennyZ48 on 2014-03-11 03:26

リンクした後、何らかの原因で/dev/input/js0が消えた場合、そのままだとなかなか解決しなかったので、リブートしてから、再設定していました。私の場合、電源周りに原因があることを掴むまでは、この問題は頻発してました。
不安定さを排除するため、まず電源を確認してみてください。
私の場合、無改造Rapiro基板+12V5AACアダプターで安定動作出来たのは、Rpi+USBドングル1個でした、ドングル2個は誤動作が頻発したので、BTドングル1個、有線LANで確認してました。最終的には、電源周りを改造して安定化を図り、BT-Micro3H2XをRapiro用に買いました。

サンプルコードは、アナログスティックの所が、120°サーボ用ぽかったので、修正してます。一部不明点があり、完全ではないと思いますが、とりあえずそれらしく動作してます。

9,11c9,11
< LLR = 20 #Left analog stick Left - Right
< LUD = 120 #Left analog stick UP - DOWN
< RLR = 100 #Right analog stick Left - Right
---
> LLR = 70 #Left analog stick Left - Right
> LUD = 180 #Left analog stick UP - DOWN
> RLR = 110 #Right analog stick Left - Right
60c60
< com.write("#PS07A040T001")
---
> com.write("#PS07A070T001")
65c65
< com.write("#PS04A080T001")
---
> com.write("#PS04A110T001")
70c70
< com.write("#PS07A080T001")
---
> com.write("#PS07A110T001")
75c75
< com.write("#PS04A040T001")
---
> com.write("#PS04A070T001")
118c118
< com.write("#PS07A060T001")
---
> com.write("#PS07A090T001")
122c122
< com.write("#PS04A060T001")
---
> com.write("#PS04A090T001")
126c126
< com.write("#PS07A060T001")
---
> com.write("#PS07A090T001")
130c130
< com.write("#PS04A060T001")
---
> com.write("#PS04A090T001")
156,159c156,159
< a_data = (int(a_data/2.13) - 120) * -1
< a_data =int(( a_data - 60) * 1.66 + 20)
< if a_data <= 20:
< a_data = 20
---
> a_data = (int(a_data/1.43) - 180) * -1
> a_data =int(( a_data - 90) * 1.66 + 70)
> if a_data <= 70:
> a_data = 70
165c165
< a_data = int(a_data/2.13)
---
> a_data = int(a_data/1.43)
167,168c167,168
< if a_data >= 120:
< a_data = 120
---
> if a_data >= 180:
> a_data = 180
174c174
< a_data = (int(a_data/2.13) - 120) * -1
---
> a_data = (int(a_data/1.43) - 180) * -1
176,177c176,177
< if a_data >= 100:
< a_data = 100
---
> if a_data >= 110:
> a_data = 110
183,184c183,184
< a_data = (int(a_data/2.13) - 120) * -1
< a_data = (a_data - 60 ) * 2
---
> a_data = (int(a_data/1.43) - 180) * -1
> a_data = (a_data - 90 ) * 2

posted by oga on 2014-03-11 21:41

Read Terms of Service upon submitting. 投稿する前に利用規約をお読みください。