Wiki
手柄JOY
約 3 分鐘閱讀
本文由簡體中文內容確定性轉換,並受版本化術語表保護。
1.簡介
2.檢測設備
你可以在沒插手柄的時候看一下:
ls /dev/input/
插上手柄再看一遍。
注意看js0,event15這種有沒有多。

如上圖,對於我來講我是js1和event24。
可以用下面這條命令確認下設備名稱:
cat /proc/bus/input/devices
按順序找到event24:

3.Linux測試手柄
# Ubuntu或者Debian
sudo apt install joystick
# Fedora
sudo dnf install joystick

然後
jstest /dev/input/js1
可以撥動搖桿測試下:

4.ROS Joy節點
安裝joy和joy-linux包,這倆包分別是倆不同的joy節點。
sudo apt install ros-$ROS_DISTRO-joy
sudo apt install ros-$ROS_DISTRO-joy-linux
4.1.Joy
啓動節點:
ros2 run joy joy_node --ros-args -p device:=/dev/input/js1
可以看到圖裏的提示,已經連接到xbox手柄了。

查看話題數據:
ros2 topic echo /joy
查看話題的頻率:
ros2 topic hz /joy --window 20
--window 20的瞬態更準,他會拋棄上面更老的數據,window=20 很快就會把舊的樣本丟掉。
我這個頻率在 3200 Hz上,明顯太高了。

4.2.Joy_Linux
試試另一個包:
ros2 run joy_linux joy_linux_node --ros-args \
-p dev:=/dev/input/js1
可以看到圖裏的提示,已經連接到xbox手柄了。

查看話題數據:
ros2 topic echo /joy
查看話題的頻率:
ros2 topic hz /joy --window 20
在這個包下,頻率靜止時在 20 Hz,手柄活躍後在 500 Hz上。

ros2 run joy_linux joy_linux_node --ros-args \
-p dev:=/dev/input/js1 \
-p autorepeat_rate:=50.0 \
-p coalesce_interval:=0.01
使用上述命令後頻率下降到50-100Hz,這是ROS最舒服的一段頻率了
