ROS使用XBOX ONE 手柄
前言
- 基礎知識
參考
ros wiki
Tutorial
Msg Remapper
Linux Configuration
JoyStick_drivers
Configuring a Multiple Joystick System
How to Write a Generic Teleoperation Node
teleop_twist_joy
xbone BT wireless controller issue with ubuntu
學習記錄
安裝相關包
sudo apt install ros-kinetic-joy-teleop ros-kinetic-teleop-tools ros-kinetic-teleop-twist-joy ros-kinetic-teleop-twist-keyboard
配置Linux
ls /dev/input/
# 手柄被標識為js2,js1居然是筆記本的加速度計!
sudo jstest /dev/input/js2
# 可以看到數據在變化
Driver version is 2.1.0.
Joystick (Microsoft X-Box One pad) has 8 axes (X, Y, Z, Rx, Ry, Rz, Hat0X, Hat0Y)
and 11 buttons (BtnX, BtnY, BtnTL, BtnTR, BtnTR2, BtnSelect, BtnThumbL, BtnThumbR, ?, ?, ?).
Testing ... (interrupt to exit)
Axes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 7: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9
# 查看此設備的訪問權限,為ROS程序(用戶域)添加權限
ls -l /dev/input/js2
sudo chmod a+rw /dev/input/js2
ROS包使用
- 使用joy和teleop_twist_joy包
手柄控制P3AT的roslaunch文件
<launch>
<node pkg = "joy" type = "joy_node" name = "joy_node" output="screen">
<param name="dev" value="/dev/input/js2" type="string"/>
<param name="deadzone" value="0.05"/>
<param name="autorepeat_rate" value="0.0"/>
<param name="coalesce_interval" value="0.001"/>
</node>
<node pkg = "teleop_twist_joy" type = "teleop_node" name = "teleop_node" output="screen">
<param name="enable_button" value="0"/>
<param name="enable_turbo_button" value="-1"/>
<param name="axis_linear" value="1"/>
<param name="scale_linear_turbo" value="1.0"/>
<param name="axis_angular" value="0"/>
<param name="scale_angular" value="1.0"/>
<remap from="cmd_vel" to="RosAria/cmd_vel" />
</node>
</launch>
- 使用方法
- 按住A按鈕,控制左軸,移動平台就可以動了
自定義使用
- 請查看參考頁面,編程實現JOY消息處理和多手柄遙操作
關於xbone BT wireless controller
- Linux內核還沒有更新與手柄連接的驅動程序,所以藍牙不能正常連接