LoginSignup
1

More than 1 year has passed since last update.

posted at

updated at

ps4コントローラーをJetsonNano+ros melodicで使用する

以下のps4コントローラー+Bluetooth USBアダプタを使用する

ワイヤレスコントローラー(DUALSHOCK 4)
エレコム Bluetooth USBアダプタ

基本的には以下手順を参考にさせていただいた

ROS講座07 joyプログラム

インストール

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

コントローラ側のバッテリーがないので充電して下さい

参考

ROS講座07 joyプログラム

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
1