Turtlebot3をPS4コントローラーDUALSHOCK 4で動かしてみた(有線接続)

スポンサーリンク

e-ManualではPS3XBoxWii Remoteのコントローラーを使ってTurtlebot3を操作する方法が紹介されている。昔は全部持ってたけど、今は残念ながらどれ一つ持ってない。手持ちのPS4コントローラー DUALSHOCK 4を有線接続で試してみたら動いたので、その記録です。

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

$ sudo apt-get install ros-melodic-joy ros-melodic-joystick-drivers ros-melodic-teleop-twist-joy

下準備

ほとんど前回と一緒だけど、必要になるのでまた記載。

PCでroscoreを起動

$ roscore

SBC(Turtlebot3上のラズパイ)でTurtlebot3のアプリを起動

PCからsshで接続する場合は「ssh pi@192.168.11.23(IPアドレスは環境によって異なる)」で接続。
SBC上でTrutlebot3のアプリを起動。

$ roslaunch turtlebot3_bringup turtlebot3_robot.launch

Turtlebot3をPS4コントローラーで操作(有線接続)

まずは接続を確認。
コントローラーとPCをUSBケーブルで接続。

コントローラーのLEDの色別の状態は次の通り。

LEDの色 状態
消灯 接続できてない
オレンジのゆっくりした点滅 充電中
青色点灯 OSが認識している状態

次にコントローラーの接続後にjsのデバイスファイルが増えていれば、OSレベルでの認識はOK。

jsのデバイスファイル確認方法

$ ls /dev/input/js*
/dev/input/js0

joy_nodeを起動(/dev/input/js0を使う場合)

$ rosrun joy joy_node

joy_nodeを起動(/dev/input/js1を使う場合)

$ rosrun joy joy_node _dev:=/dev/input/js1

「[ERROR] [1565618736.630237693]: Couldn't open joystick force feedback!」と表示されるけど気にしない。 軽く調べてみたけど、feedbackが使えないだけで問題ないとのこと。

別タブで/joyというトピックがあるかどうか確認して、内容を表示してみる。

$ rostopic list
$ rostopic echo /joy
$ roslaunch teleop_twist_joy teleop.launch

ここでも「[ERROR] [1565598725.947230821]: Couldn't open joystick force feedback!」と表示されるけど、これも気にしない。
teleop_twist_joy自体が標準ジョイスティックで操作するためのものなので、別にPS3ジョイスティックでなくても問題ないみたい。

あとは、PSボタン(もしくはSHAREボタン)を押しながら左スティックを操作すると、Turtlebot3が動いた。

メモ

どんな感じでノードがつながっているのか、rqt_graphで確認。

$ rqt_graph

f:id:sato_susumu:20190813203029p:plain

環境

PC
ホストOS: macOS Mojave 10.14.6
仮想環境ソフト: Parallels Desktop 14
ゲストOS: Ubuntu 18.04
ROS: Melodic

SBC(Turtlebot3上のラズパイ)
OS: Raspbian
ROS: Kinetic