Jetson nanoにDualshock3を無線接続する
はじめに
Jetson nanoを秋月で買いました.
Jetson nanoにDualshock3を無線接続してROSで使えるようにします.
Jetson nanoにはBluetoothが搭載されていないため,以下のようなドングルを用意する必要があります.
PLANEX Bluetooth USBアダプター Ver.4.0+EDR/LE(省エネ設計)対応 BT-Micro4
- 出版社/メーカー: プラネックス
- 発売日: 2012/02/10
- メディア: Personal Computers
- 購入: 3人 クリック: 9回
- この商品を含むブログを見る
Jetson nanoへのROSのインストールは以下の記事を参考にしました.特に問題なく正常にインストールできました.
必要なパッケージのインストール
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系ではインストールできません.
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を使えるようになります.
やったー!Jetson nanoに無線でDualshock3接続してROSで使えるようになったー! pic.twitter.com/koRxQ5B2q8
— ふまるちゃん (@fmr_chn) June 28, 2019