时间: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,输入完后记得回车;设置完成后如图所示:
(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控制小车运动
- 手柄与PC接收器配对
(1)将PC接收器(图2)插入TX2的usb接口上,其指示灯会闪烁
(2)按住手柄西瓜键,开启后灯开始闪烁
(3)按压手柄前面的左面的小圆按钮,同时按压PC接收器的小圆按钮,此时西瓜键的灯开始旋转,进入匹配状态
(4)等待几秒钟,西瓜键左上角1/4的灯亮起,PC接收器的指示灯常亮,即表示顺利配对。 - 检测手柄是否正常使用
(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)开新终端运行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