第 14.6.6 节

手柄JOY

作者:董佳辉

简介

检测设备

你可以在没插手柄的时候看一下:

ls /dev/input/

插上手柄再看一遍。

注意看js0,event15这种有没有多。

如上图,对于我来讲我是js1和event24。

可以用下面这条命令确认下设备名称:

cat /proc/bus/input/devices

按顺序找到event24:

Linux测试手柄

# Ubuntu或者Debian
sudo apt install joystick

# Fedora
sudo dnf install joystick

然后

jstest /dev/input/js1

可以拨动摇杆测试下:

ROS Joy节点

安装joy和joy-linux包,这俩包分别是俩不同的joy节点。

sudo apt install ros-$ROS_DISTRO-joy
sudo apt install ros-$ROS_DISTRO-joy-linux

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上,明显太高了。

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