Jetson nanoにDualshock3を無線接続する

はじめに

Jetson nanoを秋月で買いました.

f:id:FMR_CHN:20190629085115j:plain:w300

akizukidenshi.com

Jetson nanoにDualshock3を無線接続してROSで使えるようにします.

Jetson nanoにはBluetoothが搭載されていないため,以下のようなドングルを用意する必要があります.

PLANEX Bluetooth USBアダプター Ver.4.0+EDR/LE(省エネ設計)対応 BT-Micro4

PLANEX Bluetooth USBアダプター Ver.4.0+EDR/LE(省エネ設計)対応 BT-Micro4

上記のドングルをJetson nanoに挿しましたが,特に設定をする必要もなく使えてます.

Jetson nanoへのROSのインストールは以下の記事を参考にしました.特に問題なく正常にインストールできました.

www.stereolabs.com

必要なパッケージのインストール

USBとBluetoothの開発をするためのパッケージを以下のコマンドでインストールします.

sudo apt install libusb-dev libbluetooth-dev

sixpair

次に,BluetoothドングルとDualshock3をペアリングするためのツールをダウンロードし,ビルドします.

ソースコードをダウンロード

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

ビルド

gcc -o sixpair sixpair.c -lusb

sixad

次に,Dualshock3を使えるようにするためのツールをインストールします.
sixadは以下のUbuntuPC用のdebパッケージが用意されていますが,Jetson nano(TK1やRaspberryPiなども含む)のようなARM系ではインストールできません.

Sixaxis - Community Help Wiki

sixpair同様,ソースコードをダウンロードしてビルドします.
他の方のブログにも方法が記載されていますが,Jetson nano上でビルドした時に一発で成功したものを紹介します.

GitHubにあるレポジトリをクローンしてビルドします.これでsixadコマンドが使えるようになります.

git clone https://github.com/falkTX/qtsixa
cd qtsixa/sixad
make
sudo make install

動作確認

まず以下のコマンドでペアリングをします.この時,Dualshock3をUSBケーブルでJetson nanoに接続してください.

sudo ./sixpair

これでドングルとDualshock3のアドレスが表示されれば,ペアリング完了です.USBケーブルを抜いても問題ありません.
1回目の実行ではドングルとDualshock3が違うアドレスが表示されると思いますが,ペアリングできています.
心配な方はもう一度コマンドを実行し,両者のアドレスが一致していることを確認してください.

次にsixadコマンドでDualshock3を無線接続します.

sixad --start

「sixad started, press the PS button now」と表示されれば,Dualshock3の真ん中のPSボタンを押してください.
Dualshock3が振動すれば接続成功です!

ボタン情報を正しく読み取れているかを確認するためのツール(jstest-gtk)をインストールします.

sudo apt install jstest-gtk

インストールが完了したら,デスクトップ左上のActivitiesをクリックし,jstest-gtkを検索してください. ツールを起動すると,接続したDualshock3のボタン情報を確認することができます. Dualshock3内蔵の加速度センサやボタンの圧力の値が正常に読み取れていると思います.

接続を終了する際は,sixadコマンドを実行したターミナルでCtrl+Cで強制終了します. Dualshock3が少し振動し,ターミナルに「Force disconnect of (アドレス)」と表示されれば,接続終了となります.

おわりに

以上の方法でJetson nanoにDualshock3を無線接続できるようになりました. あとはROSのjoyパッケージをインストールすれば,ROSでDualshock3を使えるようになります.

qiita.com