配置/调试(差速式无人车)
本主题提供了一个分步指南,用于设置你的 差速式无人车。 后续的步骤将启用具有更多自动驾驶仪支持和功能的 驾驶模式。
WARNING
每个步骤都依赖于前面的步骤已完成。 只有在配置好前面的模式后,后续模式才能正常工作。
基本设置
要配置差速式无人车的框架和输出,请执行以下操作:
通过将 PX4 无人车固件版本 刷写到你的飞行控制器上,来启用对无人车的支持。 请注意,这是一个特殊的固件版本,包含了无人车特定的模块。
在 机身类型 配置中,选择“通用差速式无人车”框架:
选择“应用并重启”按钮。
INFO
如果未显示此机身类型,并且你已检查确认正在使用无人车固件(而不是默认固件),那么你也可以通过将 SYS_AUTOSTART 参数设置为
50000
来启用此框架。
:::
- 使用 执行器配置与测试 将电机功能映射到飞行控制器的输出端口。
手动模式
上述基本设置是在 手动模式 下使用无人车所需的全部配置。
特技模式
WARNING
要使此模式正常工作,必须已经完成 基本设置!
要设置 特技模式,请在 QGroundControl 中导航到 参数,并设置以下参数:
RD_WHEEL_TRACK [米]:测量从右轮中心到左轮中心的距离(轮距)。
RD_MAX_YAW_RATE [度/秒]:这是你希望为你的无人车设置的最大偏航速率。 这将定义所有使用闭环偏航控制的手动模式下操纵杆与偏航速率的映射关系,并为所有 自动模式 的偏航速率设定点设置一个上限。
RD_MAX_THR_YAW_R [米/秒]:此参数用于计算闭环偏航速率控制的前馈项。 控制器计算左右电机所需的速度差,以实现期望的偏航速率。 然后,将这个期望的速度差线性映射到归一化的电机指令。 要获得此参数的一个好的起始值,请在手动模式下让无人车全油门向前行驶,并记录车辆的地面速度。 然后将这个值的两倍输入作为该参数的值。
TIP
要进一步调整此参数,首先确保将 RD_YAW_RATE_P 和 RD_YAW_RATE_I 设置为零。
这样,偏航速率仅由前馈项控制,这使得调整更容易。 现在将无人车设置为 特技模式,然后将控制器的右操纵杆向右和/或向左移动,并分别将其保持在几个不同的位置,每个位置保持几秒钟。 使无人车解锁,然后从飞行日志中,将 RoverDifferentialStatus 中的“yaw_rate_setpoint”(偏航速率设定点)和“actual_yaw_rate”(实际偏航速率)绘制在一起进行对比。 如果无人车的实际偏航速率高于偏航速率设定点,则增加 RD_MAX_THR_YAW_R 的值。 如果实际偏航速率低于偏航速率设定点,则减小该参数的值,然后重复上述步骤,直到你对设定点跟踪情况满意为止。
:::
RD_YAW_RATE_P [-]:闭环偏航速率控制器的比例增益。 与控制器的前馈部分不同,闭环偏航速率控制将偏航速率设定点与测量的偏航速率进行比较,并根据它们之间的误差调整电机指令。 比例增益与该误差相乘,得到的值将添加到电机指令中。 通过这种方式,可以补偿诸如不平坦地面或外部力等干扰因素。
TIP
此参数的调整方法与 RD_MAX_THR_YAW_R 相同。
如果你对 RD_MAX_THR_YAW_R 调整得很好,你可能只需要一个非常小的值。
:::
(可选)RD_YAW_RATE_I [-]:闭环偏航控制器的积分增益。 积分增益会随着时间的推移,累积期望的和实际的偏航速率之间的误差(该误差由积分增益进行缩放),得到的值将添加到电机指令中。
TIP
对于偏航速率设定点,积分增益通常不是必需的,因为该设定点通常是一个快速变化的值。
除非必要,否则将此参数保持为零,因为它可能会产生负面影响,例如超调或在设定点附近振荡。
:::
现在,无人车已准备好以 特技模式 行驶。
稳定模式
WARNING
要使此模式正常工作,必须已经配置好 特技模式!
对于 稳定模式,控制器利用一个闭环偏航控制器,当它处于激活状态时,该控制器会创建一个偏航速率设定点来控制偏航:
与闭环偏航速率控制器不同,此控制器没有前馈项。 因此,你只需要调整闭环增益:
RD_YAW_P [-]:闭环偏航控制器的比例增益。
TIP
在稳定模式下,闭环偏航控制仅在直线行驶时(无偏航速率输入)处于激活状态。
要调整它,请将 RD_YAW_I 设置为零,并将 RD_YAW_P 的起始值设为 1。 将无人车设置为稳定模式,然后将控制器的左操纵杆向上和/或向下移动,使无人车向前/向后行驶。 使无人车解锁,然后从飞行日志中,将 RoverDifferentialSetpoint 消息中的“yaw_setpoint”(偏航设定点)和 RoverDifferentialStatus 消息中的“actual_yaw”(实际偏航角)绘制在一起进行对比。 增加或减小该参数的值,直到你对设定点跟踪情况满意为止。
:::
RD_YAW_I [-]:闭环偏航控制器的积分增益。
TIP
对于闭环偏航控制,积分增益是有用的,因为这个设定点通常会在一段时间内保持恒定,而积分器可以消除可能导致无人车永远无法达到设定点的稳态误差。
在 自动模式 中,将进一步阐述为什么偏航控制器需要积分器。
:::
现在,无人车已准备好以 稳定模式 行驶。
位置模式
位置模式 是最先进的手动模式,它利用闭环偏航速率、偏航角和速度控制,并借助位置估计。
要进行配置,请设置以下参数:
RD_MAX_SPEED [米/秒]:这是你希望为你的无人车设置的最大速度。 这将定义位置模式下操纵杆与速度的映射关系,并为所有 自动模式 的速度设定点设置一个上限。
RD_MAX_THR_SPD [米/秒]:此参数用于计算闭环速度控制的前馈项,该前馈项将期望速度线性映射到归一化的电机指令。 一个好的起始值是在 手动模式 下无人车以最大油门行驶时观察到的地面速度。
TIP
要进一步调整此参数,首先确保将 RD_SPEED_P 和 RD_SPEED_I 设置为零。
这样,速度仅由前馈项控制,这使得调整更容易。 现在将无人车设置为 位置模式,然后将控制器的左操纵杆向上和/或向下移动,并分别将其保持在几个不同的位置,每个位置保持几秒钟。 使无人车解锁,然后从飞行日志中,将 RoverDifferentialSetpoint 消息中的“forward_speed_setpoint”(前进速度设定点)和 RoverDifferentialStatus 消息中的“actual_speed”(实际速度)绘制在一起进行对比。 如果无人车的实际速度高于速度设定点,则增加 RD_MAX_THR_SPD 的值。 如果实际速度低于速度设定点,则减小该参数的值,然后重复上述步骤,直到你对设定点跟踪情况满意为止。
:::
RD_SPEED_P [-]:闭环速度控制器的比例增益。
TIP
此参数的调整方法与 RD_MAX_THR_SPD 相同。
如果你对 RD_MAX_THR_SPD 调整得很好,你可能只需要一个非常小的值。
:::
RD_SPEED_I [-]:闭环速度控制器的积分增益。
TIP
对于闭环速度控制,积分增益是有用的,因为这个设定点通常会在一段时间内保持恒定,而积分器可以消除可能导致无人车永远无法达到设定点的稳态误差。
:::
PP_LOOKAHD_GAIN:当直线行驶时(无偏航速率输入),位置模式利用与 自动模式 中相同的路径跟随算法(称为 纯追踪),以实现尽可能最佳的直线行驶性能(控制架构图示)。 此参数决定了控制器转向路径的激进程度。
TIP
减小此参数会使控制器更激进,但可能会导致振荡。
首先将 PP_LOOKAHD_GAIN 的值设置为 1,将无人车设置为 位置模式,然后在以大约最大速度的一半直线行驶时,观察其行为。 如果无人车不能直线行驶,则减小该参数的值;如果它在路径周围振荡,则增加该参数的值。 重复上述步骤,直到你对其表现满意为止。
:::
PP_LOOKAHD_MIN:纯追踪算法 所使用的预瞄距离的最小阈值。
TIP
将无人车设置为 位置模式 并以非常低的速度行驶,如果即使 PP_LOOKAHD_GAIN 的调整对于中速行驶是合适的,但无人车仍开始振荡,那么请增加 PP_LOOKAHD_MIN 的值。
:::
PP_LOOKAHD_MAX:纯追踪 所使用的预瞄距离的最大阈值。
TIP
将无人车设置为 位置模式 并以非常高的速度行驶,如果即使 PP_LOOKAHD_GAIN 的调整对于中速行驶是合适的,但无人车仍不能直线行驶,那么请减小 PP_LOOKAHD_MAX 的值。
:::
现在,无人车已准备好以 位置模式 行驶。
自动模式
在 自动模式 下,自动驾驶仪使用以下控制架构接管导航任务:
所需的参数分为以下几个部分:
速度
这些参数用于在自动模式下计算速度设定点:
RM_MAX_SPEED:设置无人车在任务期间的默认速度(米/秒)(以及最大速度)。
RD_MAX_ACCEL(米/秒²)和 RD_MAX_JERK(米/秒³)用于计算速度轨迹,以便无人车在到达航点时能够平稳停止。
TIP
为无人车规划一个行驶正方形的任务,并观察它在接近航点时的减速情况。 如果无人车减速过快,则减小 RD_MAX_ACCEL 参数的值;如果它过早开始减速,则增加该参数的值。 如果在无人车减速时你观察到有顿挫感,则减小 RD_MAX_JERK 参数的值;否则,尽可能增加该参数的值,因为它可能会干扰 RD_MAX_ACCEL 的调整。 这两个参数必须作为一对进行调整,重复调整直到你对其表现满意为止。
:::
- 将 RoverDifferentialSetpoint 消息中的“forward_speed_setpoint”(前进速度设定点)和 RoverDifferentialStatus 消息中的“actual_speed”(实际速度)绘制在一起进行对比。 如果这些设定点的跟踪情况不令人满意,请调整 RD_SPEED_P 和 RD_SPEED_I 的值。
当无人车接近航点时,只有当前一个航点与当前航点之间的线段和当前航点与下一个航点之间的线段夹角小于 180° - RD_TRANS_DRV_TRN 时,无人车才会减速。 换句话说:只有当无人车到达当前航点时,朝向在下一个航点的预期航向误差低于 RD_TRANS_DRV_TRN 时,无人车才会减速。
有关 RD_TRANS_DRV_TRN 参数的更多信息,请参阅 状态机。
状态机
该模块采用以下状态机,以充分利用差速式无人车原地转弯的能力:
这些转换阈值可以通过 RD_TRANS_DRV_TRN 和 RD_TRANS_TRN_DRV 进行设置。
路径跟随
纯追踪 算法用于计算车辆的期望偏航角,然后对其进行闭环控制。 闭环偏航速率在 稳定模式 的配置中进行了调整,而纯追踪在设置 位置模式 时进行了调整。 在任何自动导航任务期间