RC遥控器

Donkey RC连接 (仅适用于Raspberry Pi。Jetson Nano不提供必要的GPIO引脚支持)

您可以仅使用您的汽车可能配备的RC遥控器来驾驶Donkey!秘密在于,由于强大的Pigpio库,Raspberry Pi引脚可以读取和生成RC信号,以读取您的RC接收器并驱动舵机和电机控制器。

要实现这一点,您需要将一些杜邦线从您的RC接收器连接到RPi的GPIO引脚,然后对您的舵机和电机控制器执行相同的操作(这有点麻烦,但完全可行),或者使用我们的Donkeycar RC Hat(如上图所示),它是即插即用的,并且还包括其他一些很好的东西,如OLED屏幕、风扇、编码器支持,甚至还有一个紧急停止选项(类似于远程切断开关),如果您恰好有一个3通道(或更多)的RC发射机。

硬件设置

如果您使用的是上面的RC Hat,您可以跳过这部分硬件设置——这个Hat会为您完成一切!

请注意,在使用RC控制Donkeycar之前,您需要对RC遥控器进行良好的调整。您需要调整油门、转向和转向范围的修剪;请参阅此视频了解如何进行调整。

您可以使用GPIO引脚进行RC输入、输出或两者兼而有之。在RC输入的情况下,RC遥控器替代了蓝牙手柄。在RC输出的情况下,它替代了I2C舵机驱动板。

连接RC的最简单方法是使用我们设计的自定义"帽子"(如上所示)。但如果您自己操作,请按照以下接线指南进行操作。如果同时进行输入和输出,可能会有一堆杜邦线,但请记住,您只需要将一个地线和V+线连接到RC接收器(在任意通道上),而不是每个通道都连接一根。

还要注意,RC接收器应连接到3.3V引脚,而输出舵机和电机控制器应连接到5V引脚。

警告: RC接收器的PWM信号是由接收器输入电压生成的,因此将RC接收器连接到来自ESC的5V甚至6V电压将会损坏RPi!

这是RC接收器的连接示意图:

Donkey RC连接

以下是RC接收器的实际连接示意图:

Donkey RC连接

软件设置

首先,请确保已安装PIGPIO;请参阅引脚PIGPIO。您可能希望在Raspberry Pi启动时启动PIGPIO守护程序。在命令行中输入以下内容,将PIGPIO守护程序设置为始终在启动时运行:

sudo systemctl enable pigpiod & sudo systemctl start pigpiod

接下来,在您的mycar目录中,按以下方式编辑myconfig.py文件:

  • 对于RC输入,请在myconfig.py文件中选择pigpio_rc作为您的控制器类型。取消注释该行(删除前面的#),并进行如下编辑:
CONTROLLER_TYPE = 'pigpio_rc'

还要将use joystick设置为True

USE_JOYSTICK_AS_DEFAULT = True
  • 对于RC输出,请在myconfig.py文件中选择PWM_STEERING_THROTTLE作为您的驱动系统类型。取消注释该行(删除前面的#),并进行如下编辑:
DRIVE_TRAIN_TYPE =  "PWM_STEERING_THROTTLE"

对于这两种设置,您可以进行其他设置更改,例如反转输出的方向或连接的引脚:

输入选项:

# PIGPIO RC控制
STEERING_RC_GPIO = 26
THROTTLE_RC_GPIO = 20
DATA_WIPER_RC_GPIO = 19
PIGPIO_STEERING_MID = 1500         # 如果您的车不能直线行驶,请调整此值
PIGPIO_MAX_FORWARD = 2000          # 最大前进油门。数值越大,速度越快
PIGPIO_STOPPED_PWM = 1500
PIGPIO_MAX_REVERSE = 1000          # 最大倒车油门。数值越小,速度越快
PIGPIO_SHOW_STEERING_VALUE = False
PIGPIO_INVERT = False
PIGPIO_JITTER = 0.025   # 低于此阈值将不报告信号

如果您使用的是RC Hat,则必须使用下面显示的PWM输出引脚(并在myconfig.py中默认设置)。如果您不使用RC Hat,则可以选择不同的PWM输出引脚。 注意:您必须安装pigpio才能使用此配置。请参阅PIGPIO

输出选项:

PWM_STEERING_PIN = "PIGPIO.BCM.13"           # 转向舵机的PWM输出引脚
PWM_THROTTLE_PIN = "PIGPIO.BCM.18"           # 电调的PWM输出引脚

STEERING_LEFT_PWM = int(4096 * 1 / 20)       # 最左转向的PWM值(1ms脉冲)
STEERING_RIGHT_PWM = int(4096 * 2 / 20)      # 最右转向的PWM值(2ms脉冲)

THROTTLE_FORWARD_PWM = int(4096 * 2 / 20)    # 最大前进油门的PWM值(2ms脉冲)
THROTTLE_STOPPED_PWM = int(4096 * 1.5 / 20)  # 停止运动时的PWM值(1.5ms脉冲)
THROTTLE_REVERSE_PWM = int(4096 * 1 / 20)    # 最大倒车油门的PWM值(1ms脉冲)

故障排除

如果一个通道反向(转向左转右,等等),可以在RC发射器上反转该通道(通常是一个开关或设置),或者通过将上述输出选项中该通道的PWM_INVERTED值更改为True来进行更改。