一起打造自己的自动驾驶小车mycar - 4.手柄控制小车移动

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

My Car

上一篇文章介绍了用web界面来控制小车移动,这篇文章介绍用蓝牙游戏手柄来控制小车的移动。物理手柄的控制会更加得心应手,不会受网络延迟的影响。

1. 蓝牙游戏手柄

笔者使用的一款价格约100元的小鸡蓝牙手柄,理论上所有带蓝牙功能的手柄都支持,如PS3, Xbox One等等。
GameSir G3

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
      
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值