xbox360无线控制turtle bot

时间:2020.9.22
目的:控制turtle bot(AiDrivin racebot)运动,进行测试
本文主要是记录xbox360控制小车的调试过程,此前小车已经将驱动都已安装好,下述驱动安装仅为记录。

一、XBOX360驱动安装

1、xbox360驱动安装
本文使用的小车开发板为Jetson TX2,系统为Ubuntu16.04,ROS版本为kinetic。开机后,打开一个终端,输入以下命令安装xbox360驱动

sudo apt-add-repository ppa:rael-gc/ubuntu-xboxdrv
sudo apt-get update && sudo apt-get install ubuntu-xboxdrv

2、编译TX2内核,增加手柄的支持
(1)新建目录,下载驱动脚本

 mkdir ~/kernel
 cd ~/kernel
 git clone https://github.com/jetsonhacks/buildJetsonTX2Kernel.git
 cd buildJetsonTX2Kernel

(2)下载源码并解压到/usr/src/kernel.

./getKernelSources.sh

可能出现问题:L4T Kernel Version Mismatch(下载的驱动文件与该内核版本出现不兼容的问题)
解决方法:1、检查自己的内核版本

uname -r

如果显示4.4.15则说明,你的内核版本为L4T 27.1,则你需要在本步骤之前对其进行选择:

git checkout vL4T27.1

然后运行./getKernelSources.sh则可以顺利解决问题。

(3)源码下载解压完成后脚本将在内核配置文件中打开一个编辑器,我们需要在编辑器中配置修改内核;首先增加usb支持(一般来讲都已经配置好了),然后修改Genral Setup->Local version - append to kernel release 双击在文本框内输入-jetsonbot-v0.1,输入完后记得回车;设置完成后如图所示:
图片1

图片2
(4)增加joysticks支持,在Device Drivers中找到Input device support 点击后在右侧列表中找到Joystick interface 在前面的方框中打勾,注意:显示的是打勾不是小圆点 。如图所示:
在这里插入图片描述
(5)增加xbox支持,在列表中找到Joysticks/Gamepads选项,打开后找到下图所示,xbox的选项框,勾选:

在这里插入图片描述
设置完成,即可保存退出。
(6)接下来对安装之后的内核进行编译:

./makeKernel.sh

(7)复制最新构建的镜像和zImage文件到/boot目录

./copyImage.sh

(8)重启后新内核即可生效。

sudo reboot

至此,关于手柄的驱动安装就完成了。

二、XBOX360控制小车运动

在这里插入图片描述

在这里插入图片描述

  1. 手柄与PC接收器配对
    (1)将PC接收器(图2)插入TX2的usb接口上,其指示灯会闪烁
    (2)按住手柄西瓜键,开启后灯开始闪烁
    (3)按压手柄前面的左面的小圆按钮,同时按压PC接收器的小圆按钮,此时西瓜键的灯开始旋转,进入匹配状态
    (4)等待几秒钟,西瓜键左上角1/4的灯亮起,PC接收器的指示灯常亮,即表示顺利配对。
  2. 检测手柄是否正常使用
    (1)检测手柄是否被识别
 ls /dev/input/js*

识别后,显示为:

/dev/input/js0 /dev/input/js1 /dev/input/js2 /dev/input/js3 /dev/input/js4

(2)测试设备是否可用,以及对应哪个端口

sudo jstest /dev/input/js1(js0、js2、js3.

修改js端口,摇动手柄,看Axes有数据变化,有变化的为对应端口号
一般显示为:

Driver version is 2.1.0.
Joystick (Xbox 360 Wireless Receiver (XBOX)) has 6 axes (X, Y, Z, Rx, Ry, Rz)
and 15 buttons (BtnX, BtnY, BtnTL, BtnTR, BtnTR2, BtnSelect, BtnThumbL, BtnThumbR, ?, ?, ?, (null), (null), (null), (null)).
Testing … (interrupt to exit)
Axes: 0: -5086 1: 0 2:-32767 3: -1291 4: 1066 5:-32767 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 12:off 13:off 14:off

此时joy_teleop.yaml文件中的端口号(dev:)也应该与该端口号一致,具体修改方法为:

rosed racecar joy_teleop.yaml

其内容应该为:

joy_node:
deadzone: 0.01
autorepeat_rate: 20
coalesce_interval: 0.01
dev: /dev/input/js1

(3)检查权限,并设置权限(调用ros节点需要权限)

$ls -la /dev/input/js1
显示为:
crw-rw-r--+ 1 root root 13, 1 Nov  5 15:48 /dev/input/js1
$ sudo chmod a+rw /dev/input/js1 //修改
$ ls -la /dev/input/js1
显示为:
crw-rw-rw-+ 1 root root 13, 1 Nov  5 15:48 /dev/input/js1

(4)关闭原有终端,启动新终端,运行roscore,然后再开新终端设置设备并启动joy节点:

rosparam set joy_node/dev "/dev/input/js1"
rosrun joy joy_node

(5)查看手柄数据变化,可使用以下命令:

rostopic echo joy

显示为:

header:
seq: 429
stamp:
secs: 1415227355
nsecs: 833352850
frame_id: ‘’
axes: [0.19235174357891083, -0.0, 1.0, -0.04268254339694977, -0.048208002001047134, 1.0]
buttons: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

一切正常即正式开始小车运动测试。

  1. 手柄控制小车运动(关闭前面打开的所有终端)
    (1)开新终端运行roscore,再开新终端启动小车底盘
 roslaunch turtlebot_bringup minimal.launch

(2)启动手柄

roslaunch racebot joy.launch

(3)实时查看手柄数据变化

rostopic echo /vesc/joy

操作:
左手食指按住手柄的dead键,左手拇指控制左边摇杆前后用于控制速度,右手拇指控制右边摇杆用于控制方向(摇杆上下移动)

小车最好架起来,车轮不要着地,测试小车前进后退,左右转。

参考文献:
https://blog.csdn.net/lybhit/article/details/78659869
https://www.ncnynl.com/archives/201610/916.html

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值