跳到正文

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最舒服的一段頻率了