はじめに
Windows10上のVirtual BoxのROS2 Dashingにコントローラをつなぐ際、デバイスIDは自動的に
js2以降からとなってしまう。しかし、ROS2 Dashingのコントローラの値取得用のトピックであるjoyは
デフォルトではjs0で起動してしまい、js1以降を指定できない。
parameter設定をすれば済む話なのだが、方法がROSのバージョン間でかなり違っており、Webでも
簡単に確信的な情報を見つけられず、かなり苦労したのでここに残しておく。
実行環境
ホストOS | Windows 10 HOME 21H2 |
仮想化ソフト | Virtual Box 6.1.22 |
ゲストOS | Ubuntu 18.04.6 LTS |
ROS | ROS2 Dashing Diademata |
JOYSTICK | PS4 DualShock4 Bluetooth接続(※1 |
※1 Bluetooth接続は、ds4drv等使う記事が出てくるが、私の環境では必要なく
UbuntuにBluetooth接続するだけでOKだった。
joyトピックをjs0以外で使うParameter設定の仕方
1. joy-params.yaml を作成
この際、拡張子が".yaml"であれば名前は何でもいい
私の環境では、コントローラがjs2に認識されたので下記のように設定した。
joy-params.yaml
joy_node:
ros__parameters:
dev: "/dev/input/js2"
今回は保存場所を~/ とした。
2. yamlファイルを指定してターミナルでノードを実行
"__params:=" 以降にPATHを指定。絶対でも相対でもOK。
$ ros2 run joy joy_node __params:=./joy-params.yaml
下記のようにレスポンスが帰ってくれば成功している。
[INFO] [joy_node]: Opened joystick: /dev/input/js2. deadzone_: 0.050000.
参考