校准车辆
校准车辆的目的是使其能够始终稳定行驶。如果您使用的是舵机,则Donkey需要知道与完全左转和完全右转相对应的PWM值。如果您使用的是电调,则Donkey需要知道完全前进油门、停止和完全后退油门的PWM值。您可以在校准过程中确定这些值,然后将它们保存到您的myconfig.py文件中,以便在车辆行驶时使用。
某些类型的传动系统不需要进行校准。如果您使用的是使用L298N电机控制器或类似设备(而不是电调)的任何传动系统,则无需进行校准;这些传动系统不使用PWM;它们使用不需要校准的占空比。大多数差分传动系统(名称以DC_TWO_WHEEL
开头)属于这种类型。如果您的传动系统在油门上使用L298N电机控制器或类似设备,但在转向上使用舵机,则您需要校准转向,但不需要校准油门。
关于传动系统的更详细讨论,请参阅马达。
如何调整车辆设置
您需要通过SSH登录到树莓派来进行校准。
车辆的所有默认设置都在config.py
文件中。您可以通过编辑车辆目录中的myconfig.py
脚本来覆盖默认设置。这个文件是在运行donkey createcar --path ~/mycar
命令时生成的。您可以通过以下命令在车辆上编辑此文件:
nano ~/mycar/myconfig.py
转向校准
确保您的车辆离地以防止失控的情况发生。
- 打开您的车辆。
- 找到舵机的3针电缆,并确保它正确连接到PWM输出引脚。
- 如果使用Donkey Hat,3针舵机电缆将插入到Hat上。有关连接的完整说明,请参阅使用RC Hat控制ESC和舵机。
- 如果使用PCA9685,舵机电缆将连接到PCA9685的一个3针输入通道上。有关说明,请参阅将舵机连接到树莓派。
-
运行
donkey calibrate ...
命令,并提供参数来指定将产生PWM的引脚。- 当校准使用引脚指定的传动系统(如
PWM_STEERING_THROTTLE
)时,使用--pwm-pin
参数来指定目标引脚,例如RPI_GPIO.BOARD.33
或PCA9685.1:40.13
。如果您使用的是Donkey Hat,则可以使用donkey calibrate --pwm-pin=PIGPIO.BCM.13
来校准转向。有关引脚和引脚指定符的更详细讨论,请参阅Pins。 - 当使用过时的PCA9685传动系统(如
I2C_SERVO
,代码里标识为过期)时,请指定PCA9685通道(电缆连接的3针连接器的索引)和PCA9685连接的I2C总线;donkey calibrate --channel <your_steering_channel> --bus=<your_i2c_bus>
, 如果按照前面组装,转向舵机是接在PCA9685的通道1上,所以我们就可以如下执行donkey calibrate --channel 1 --bus=1
- 当校准使用引脚指定的传动系统(如
-
首先,找到将轮子完全转向左侧的值。在校准转向时,您要选择刚好能使车轮达到最大转向角度的值;车轮应该完全转向,但是舵机不应发出嗡嗡声。尝试值
360
,您应该看到您的车轮稍微移动。如果没有,请尝试400
或300
。接下来,输入起始值加减10以找到使您的车辆完全向左转的PWM设置,再次确保电机没有发出嗡嗡声。记住这个值。 - 接下来,找到将轮子完全转向右侧的值。输入起始值加减10以找到使您的车辆完全向右转的PWM设置,再次确保电机没有发出嗡嗡声。记住这个值。
编辑您车辆上的myconfig.py
脚本,并分别将这些值输入为STEERING_LEFT_PWM
和STEERING_RIGHT_PWM
。
STEERING_LEFT_PWM
= 左转的PWM值STEERING_RIGHT_PWM
= 右转的PWM值
油门校准
- 找到电调的3针电缆,并确保将其正确连接到PWM输出引脚上。
- 如果使用Donkey Hat,电调的3针电缆将插入到帽子上。请参阅使用RC Hat控制电调和舵机以获取有关连接的完整说明。
- 如果使用PCA9685,电调的3针电缆将连接到PCA9685的一个3针输入通道上。请参阅将舵机盾连接到树莓派以获取说明。
- 运行
donkey calibrate ...
命令,并提供参数来指定产生PWM的引脚。 - 当校准使用引脚标识符的驱动系统(例如
PWM_STEERING_THROTTLE
)时,使用--pwm-pin
参数指定目标引脚,例如RPI_GPIO.BOARD.33
或PCA9685.1:40.13
。如果您使用的是Donkey Hat,则可以使用donkey calibrate --pwm-pin=PIGPIO.BCM.18
来校准油门。有关引脚和引脚标识符的更完整讨论,请参阅Pins。 - 当使用传统的PCA9685驱动系统(如
I2C_SERVO
)时,请指定PCA9685通道(电缆连接的3针连接器的索引)和PCA9685连接的I2C总线;donkey calibrate --channel <your_throttle_channel> --bus=<your_i2c_bus>
如果按照前面组装,电调ESC是接在PCA9685的通道0上,所以我们就可以如下执行donkey calibrate --channel 0 --bus=1
- 当提示输入PWM值时,输入
370
。 - 您应该听到电调的蜂鸣声,表示已经校准完成。
- 输入
400
,您应该看到车轮开始向前转动。如果没有,很可能是反向的,请尝试输入330
。 - 不断尝试不同的值,直到找到一个合理的最大速度,并记住这个PWM值。
对于遥控车的倒车,稍微有些复杂,因为电调必须接收到一个反向脉冲、零脉冲、反向脉冲才能开始向后行驶。要校准反向的PWM设置...
- 使用上述相同的方法将PWM设置为零油门。
- 输入反向值,然后是零油门值,然后再次输入反向值。
- 输入反向值的正负10的范围内的值,以找到一个合理的反向速度。记住这个反向PWM值。
现在打开您的myconfig.py
脚本,将汽车的PWM值输入到throttle_controller
部分:
THROTTLE_FORWARD_PWM
= 全油门前进的PWM值THROTTLE_STOPPED_PWM
= 零油门的PWM值THROTTLE_REVERSE_PWM
= 全反向油门的PWM值
微调校准
现在您的车大致校准完成,您可以尝试驾驶它以验证其行驶是否符合预期。以下是微调汽车校准的步骤。
首先,最重要的是,确保您的车在没有转向输入时能够完全直行。
- 运行
python manage.py drive
启动您的车辆。 - 在浏览器中打开
<your_cars_hostname.local>:8887
。 - 按键盘上的
i
键几次,使车辆向前行驶。最好在非常平坦的地板上进行此操作,并使用某种网格来判断车辆是否直行。注意不要将车辆的角度与沿弧线行驶混淆。车辆的倾斜可能只是因为您在启动时将车辆指向了一个角度。如果车辆行驶的是一条弯曲的弧线,则表示车辆正在转向。 - 如果您的车辆在没有转向输入时倾向于向左转,则在 myconfig.py 文件中更新
STEERING_LEFT_PWM
的值,使其更接近中性。例如,如果STEERING_LEFT_PWM
是 460,STEERING_RIGHT_PWM
是 290,那么可以稍微减小STEERING_LEFT_PWM
,例如改为 458。 - 如果您的车辆在没有转向输入时倾向于向右转,则在 myconfig.py 文件中更新
STEERING_RIGHT_PWM
的值,使其更接近中性。例如,如果STEERING_LEFT_PWM
是 460,STEERING_RIGHT_PWM
是 290,那么可以稍微增加STEERING_RIGHT_PWM
,例如改为 292。 - 重复此过程几次,直到您的车辆能够直行。
接下来,尝试使车辆的全左转和全右转具有相同的转向角度(在完全绕圈时形成相同直径的圆)。
注意:可选步骤
- 运行
python manage.py drive
启动您的车辆。 - 在浏览器中打开
<your_cars_hostname.local>:8887
。 - 按下
j
键直到车辆的转向达到最大右转。 - 按键盘上的
i
键几次,使车辆向前行驶。 - 测量转弯的直径,并记录在电子表格中。
- 对于不同的转向值,重复进行此测量以测量每个方向的转弯。
- 绘制图表,以便您可以看到车辆在每个方向上的转向是否相同。
校正方法:
- 如果车辆在80%转向和100%转向时转向角度相同,请将该转向方向的PWM设置更改为80%时的PWM值。
- 如果车辆倾向于向一个方向转向,请在偏向相反方向的转向中更改PWM值。
微调完成后,您的转向图表应该类似于以下示例。
您可能需要迭代进行调整,确保车辆直行并且左转和右转的角度相同。优先确保车辆直行。