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

( Allowed tags: <b> <s> <code> <blockquote> <img> . Automatic URL link.)

Uploaded image is placed to the bottom of the post. To add multiple images, make post once then edit the post.

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