e-ManualではPS3、XBox、Wii 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
環境
PC
ホストOS: macOS Mojave 10.14.6
仮想環境ソフト: Parallels Desktop 14
ゲストOS: Ubuntu 18.04
ROS: Melodic
SBC(Turtlebot3上のラズパイ)
OS: Raspbian
ROS: Kinetic
ワイヤレスコントローラー(DUALSHOCK 4) ジェット・ブラック(CUH-ZCT2J)
- 出版社/メーカー: ソニー・インタラクティブエンタテインメント
- 発売日: 2016/09/15
- メディア: Video Game
- この商品を含むブログを見る