以下のps4コントローラー+Bluetooth USBアダプタを使用する
基本的には以下手順を参考にさせていただいた
インストール
sudo apt-get install ros-melodic-joy -y
sudo apt-get install ros-melodic-joystick-drivers -y
sudo pip install ds4drv
有線で接続
PS4コントローラーを有線で接続するには、マイクロusbで直接pcとコントローラーを接続する。
(正しく接続するとpd4側のledが光り、/dev/input/js0
デバイスが生えている。マイクロusbによっては繋がらないものがあるみたいなので注意)
別々のターミナルで実行する
roscore
rosrun joy joy_node
rostopic echo /joy
joyトピックが流れていたらとりあえず接続OK
無線で接続
マイクロUSBで接続しているPS4コントローラーを外して、以下を実行する
$ sudo ds4drv
[info][controller 1] Created devices /dev/input/js0 (joystick) /dev/input/event17 (evdev)
[info][bluetooth] Scanning for devices
PS4側の「PS」「SHARE」の2つのボタンを押下し続けると、光が点滅して以下Found device
ログが現れればOK
これで有線接続時と同様に、/dev/input/js0
からコントローラーの入力を取得できる。
$ sudo ds4drv
[info][controller 1] Created devices /dev/input/js0 (joystick) /dev/input/event17 (evdev)
[info][bluetooth] Scanning for devices
[info][bluetooth] Found device A4:53:85:49:05:B0
確認は、有線接続時と同じ手順で以下を実行する
roscore
rosrun joy joy_node
rostopic echo /joy
joyトピックが流れていたらとりあえず接続OK
備考
[error][bluetooth] Unable to connect to detected device: Failed to set operational mode: [Errno 107] Transport endpoint is not connected
調子が悪くて切断されたみたいだったので、PS4側の「PS」「SHARE」の2つのボタンを押下し続けると接続できた
[info][controller 1] Battery: 0%
[info][controller 1] Disconnected
コントローラ側のバッテリーがないので充電して下さい