
文章目录
上一篇文章介绍了用web界面来控制小车移动,这篇文章介绍用蓝牙游戏手柄来控制小车的移动。物理手柄的控制会更加得心应手,不会受网络延迟的影响。
1. 蓝牙游戏手柄
笔者使用的一款价格约100元的小鸡蓝牙手柄,理论上所有带蓝牙功能的手柄都支持,如PS3, Xbox One等等。

1.2 手柄配置
不管什么型号的手柄,一般都有相似的功能按钮,分为以下两类:轴和按钮。
轴(axis):
能输出连续变化的值,如:
- L2, R2是根据按压的力度输出从0~32767的值;
- 左右摇杆(left_stick, right_stick)是输出两个方向从-32767~32767的值:up_down、left_right,摇杆不动(居中)的值是0。
按钮(button):
只有0或1的值,按下去为1。如D Pad的上下左右4个按钮,L1, R1;L2和R2也能同时输出是否被按下。
从手柄设备的设备文件(如/dev/input/js0)可以读出手柄的控制信号,信号包含操作的按钮/轴和它的值。按钮/轴由一个16进制的数字来标识。不同厂商/型号的手柄的数字标识是不一样的,需要在配置文件指定。如config/joystick_drive.yml里的配置就是我的小鸡手柄G3的映射值。
Joystick类定义了通用的按钮名,你只需要配置不同按钮的标识就可以了。
joystick:
axis_keys:
'left_stick_horz': 0x00 # 左摇杆的水平方向
'left_stick_vert': 0x01 # 左摇杆的垂直方向
'right_stick_horz': 0x02

本文介绍如何使用蓝牙游戏手柄控制小车移动,避免网络延迟影响,提供手柄配置及代码实现细节,同时附带视频录制功能。

3110

被折叠的 条评论
为什么被折叠?



