Turbot中级教程-控制-实现xbox控制
Turbot中级教程-实现xbox360手柄控制
说明
利用xbox360手柄控制配合PC接收器控制Turbot运动
xbox360无线游戏杆
xbox360无线游戏杆PC接收器,或叫USB适配器
前提准备
- [Remote PC && Turbot] 安装驱动
$ sudo apt-add-repository ppa:rael-gc/ubuntu-xboxdrv
$ sudo apt-get update && sudo apt-get install ubuntu-xboxdrv
手柄和接收器配对过程
1、PC接收器连好电脑,并且确保安装好驱动程序
2、手柄打开,按中间大圆按钮,俗称西瓜键,如果没有匹配上,灯会闪烁
3、按图2手柄前面靠左的小圆按钮,手柄西瓜键灯闪烁旋转,进入匹配状态
4、按图2接收器的小圆按钮,手柄灯闪烁也进入匹配状态
5、几秒之后自动匹配好,手柄西瓜键灯会亮1/4,接收器也停止闪烁。说明匹配成功
注意:一个PC接收器最多可以对应4个XBOX360手柄
- 检查手柄接入
- [Turbot] 游戏杆插入到Turbot上的USB-Hub上,检查是否发现设备
$ ls /dev/input/js*
- 查看是否有显示或jsX,X为数字:
/dev/input/js0
- [Turbot] 测试设备是否可用
$ sudo jstest /dev/input/js0
- 显示,移动游戏杆数据会变化:
Driver version is 2.1.0.
Joystick (Logitech Logitech Cordless RumblePad 2) has 6 axes (X, Y, Z, Rz, Hat0X, Hat0Y)
and 12 buttons (BtnX, BtnY, BtnZ, BtnTL, BtnTR, BtnTL2, BtnTR2, BtnSelect, BtnStart, BtnMode, BtnThumbL, BtnThumbR).
Testing ... (interrupt to exit)
Axes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off
- [Turbot] 查看权限, ROS的joy node需要访问设备的权限
$ ls -l /dev/input/jsX
crw-rw-XX- 1 root dialout 188, 0 2009-08-14 12:04 /dev/input/jsX
如果XX是rw: js设备配置正确的
如果xx是--: js设备配置不正确需要更改权限:
$ sudo chmod a+rw /dev/input/jsX
- [Turbot] 配置需要使用的设备,默认是js0:
$ rosparam set joy_node/dev "/dev/input/jsX"
- [Turbot] 启动joy节点
$ rosrun joy joy_node
显示如:
[ INFO] 1253226189.805503000: Started node [/joy], pid [4672], bound on [aqy], xmlrpc port [33367], tcpros port [58776], logging to [/u/mwise/ros/ros/log/joy_4672.log], using [real] time
[ INFO] 1253226189.812270000: Joystick device: /dev/input/js0
[ INFO] 1253226189.812370000: Joystick deadzone: 2000
- [Turbot] 在新终端下查看joy主题
$ rostopic echo joy
---
header:
seq: 9414
stamp:
secs: 1325530130
nsecs: 146351623
frame_id: ''
axes: [-0.0038758506998419762, -0.0038453321903944016, -0.0, -0.999969482421875, 0.0, 0.0]
buttons: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
---
- linux下的MicrosoftXbox360无线游戏杆的按钮及轴和索引号对应关系, 参考教程
操作步骤
- [Turbot] 新终端,启动turbot
$ roslaunch turbot_bringup minimal.launch
- [Turbot] 新终端,设置设备并启动游戏杆遥控支持
$ rosparam set /joystick/dev "/dev/input/js0"
$ roslaunch turtlebot_teleop xbox360_teleop.launch
- 测试使用,按住左边的LB按钮激活游戏杆并移动左遥控杆,turbot应该就有反应
演示视频
参考资料
- http://wiki.ros.org/joy/Tutorials/ConfiguringALinuxJoystick#Configuring_the_Joystick
- http://wiki.ros.org/joy
- https://ekpyroticfrood.net/?p=115
- http://www.omgubuntu.co.uk/2014/06/ubuntu-xbox-controller-support-xboxdrv-driver
- http://www.omgubuntu.co.uk/2013/07/dealing-with-xbox-controllers-in-ubuntu
- http://pingus.seul.org/~grumbel/xboxdrv/
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号