配置/调试(阿克曼式无人车)
本主题提供了一个分步指南,用于设置你的 阿克曼式无人车。
后续的步骤将启用具有更多自动驾驶仪支持和功能的 驾驶模式。
WARNING
每个步骤都依赖于前面的步骤已完成。 只有在配置好前面的模式后,后续模式才能正常工作。
基本设置
要配置阿克曼式无人车的框架和输出,请执行以下操作:
通过将 PX4 无人车固件版本 刷写到你的飞行控制器上,来启用对无人车的支持。 请注意,这是一个特殊的固件版本,包含了无人车特定的模块。
在 机身类型 配置中,选择“通用阿克曼式无人车”:
选择“应用并重启”按钮。
INFO
如果未显示此机身类型,并且你已检查确认正在使用无人车固件(而不是默认固件),那么你也可以通过将 SYS_AUTOSTART 参数设置为
51000
来启用此框架。
:::
- 打开 执行器配置与测试,将转向和油门功能映射到飞行控制器的输出端口。
手动模式
WARNING
要使此模式正常工作,必须已经完成 基本设置!
基本设置已经涵盖了在 手动模式 下使用无人车所需的最低配置。
然而,此模式还会受到转向摆动速率以及加速/减速限制的影响。对于后续模式,此配置是必需的,这就是我们在此进行此设置的原因。 在 QGroundControl 中导航到 参数,并设置以下参数:
RA_WHEEL_BASE [米]:测量从后轮轴到前轮轴的距离(轴距)。
RA_MAX_STR_ANG [度]:测量最大转向角度。
RA_MAX_THR_SPEED [米/秒]:将无人车油门开到最大进行行驶,然后将此参数设置为观察到的地面速度值。
INFO
此参数也用于速度控制的前馈项。在 位置模式 的配置中,还将进一步对此参数进行调整。
:::
RA_MAX_ACCEL [米/秒²]:你希望为你的无人车设置的最大加速度。
TIP
你的无人车有一个由电机能够提供的最大扭矩所决定的最大可能加速度。 这个最大加速度对于你的车辆和使用场景可能合适,也可能不合适。
确定合适值的一种方法是:
- 让无人车从静止状态开始,将油门开到最大,直到它达到最大速度。
- 使无人车解锁,然后从 RoverAckermannStatus 中绘制
measured_forward_speed
(测量的前进速度)。 - 用最大速度除以达到该速度所用的时间,然后将此结果设置为 RA_MAX_ACCEL 的值。
一些遥控无人车如果不限制最大加速度,其扭矩可能足以使车身抬起。 如果出现这种情况:
- 将 RA_MAX_ACCEL 设置为一个较小的值,让无人车从静止状态开始全油门行驶,并观察其行为。
- 增加 RA_MAX_ACCEL 的值,直到无人车在加速过程中开始抬起。
- 将 RA_MAX_ACCEL 设置为不会导致无人车抬起的最高值。
:::
RA_MAX_DECEL [米/秒²]:你希望为你的无人车设置的最大减速度。
TIP
与配置 RA_MAX_ACCEL 时的 注意事项 相同,这些注意事项也适用于此参数的配置。
:::
INFO
此参数也用于在 自动模式 期间计算速度设定点。
(可选)RA_MAX_STR_RATE [度/秒]:你希望为你的无人车设置的最大转向速率。
TIP
此值取决于你的无人车和使用场景。 对于较大的无人车,可能存在一个机械限制,你可以通过在无人车静止时进行转向操作,并逐渐增加 RA_MAX_STR_RATE 的值,直到你观察到转向速率不再受该参数限制,从而轻松识别出这个机械限制。 对于较小的无人车,你可能会发现转向过于灵敏。将 RA_MAX_STR_RATE 设置为一个较小的值,然后在无人车静止时进行转向操作。 逐渐增加该参数的值,直到你达到你认为合适的最大转向速率。
:::
WARNING
最大转向速率设置过低会使无人车在跟踪转向设定点时性能变差,这可能会导致在后续模式中表现不佳。
特技模式
WARNING
要使此模式正常工作,必须已经配置好 手动模式!
要设置 特技模式,请在 QGroundControl 中配置以下 参数:
RA_MAX_LAT_ACCEL:你希望为你的无人车设置的最大横向加速度。
TIP
如果无人车容易翻车、在高速时失去牵引力,或者乘客舒适度很重要,那么限制横向加速度是必要的。 特别是小型无人车,在高速时进行剧烈转向时容易翻车。
如果是这种情况:
- 在 特技模式 下,将 RA_MAX_LAT_ACCEL 设置为一个较小的值,然后将无人车油门开到最大,并将右操纵杆完全向左或向右移动进行行驶。
- 增加 RA_MAX_LAT_ACCEL 的值,直到无人车的车轮开始抬起。
- 将 RA_MAX_LAT_ACCEL 设置为不会导致无人车抬起的最高值。
如果你认为无需限制横向加速度,则将此参数设置为无人车能够达到的最大横向加速度:
- 在 手动模式 下,将无人车油门开到最大,并将转向角度打到最大进行行驶。
- 从 RoverAckermannStatus 中绘制
measured_lateral_acceleration
(测量的横向加速度),然后将观察到的最高值输入到 RA_MAX_LAT_ACCEL 中。
:::
RA_LAT_ACCEL_P [-]:闭环横向加速度控制器的比例增益。 闭环加速度控制将横向加速度设定点与测量的横向加速度进行比较,并根据它们之间的误差调整电机指令。 比例增益与该误差相乘,得到的值将添加到电机指令中。通过这种方式,可以补偿诸如不平坦地面或外部力等干扰因素。
TIP
要调整此参数:
- 将无人车设置为 特技模式,然后将油门操纵杆和右操纵杆分别保持在几个不同的位置,每个位置保持几秒钟。
- 使无人车解锁,然后从飞行日志中,将 RoverAckermannSetpoint 中的
lateral_acceleration_setpoint
(横向加速度设定点) 和 RoverAckermannStatus 中的measured_lateral_acceleration
(测量的横向加速度) 绘制在一起进行对比。 - 如果测量值跟踪设定点的速度不够快,则增加 RA_LAT_ACCEL_P 的值;如果测量值超过设定点过多,则减小该值。
- 重复上述步骤,直到你对其表现满意为止。
请注意,横向加速度的测量值非常嘈杂,因此需要进行大量滤波处理。 这意味着测量值会有轻微延迟,所以如果你观察到设定点和测量值之间存在轻微的时间偏移,这是无法通过调整来解决的。
:::
(可选)RA_LAT_ACCEL_I [-]:闭环横向加速度控制器的积分增益。 积分增益会随着时间的推移,累积期望的和实际的横向加速度之间的误差(该误差由积分增益进行缩放),得到的值将添加到电机指令中。
TIP
对于横向加速度设定点,积分增益通常不是必需的,因为该设定点通常是一个快速变化的值。 除非必要,否则将此参数保持为零,因为它可能会产生负面影响,例如超调或在设定点附近振荡。
:::
现在,无人车已准备好以 特技模式 行驶。
位置模式
WARNING
要使此模式正常工作,必须已经配置好 特技模式!
位置模式 是最先进的手动模式,它利用闭环横向加速度和速度控制,并借助位置估计。
要进行配置,请设置以下参数:
RA_MAX_SPEED [米/秒]:这是你希望为你的无人车设置的最大速度。 这将定义位置模式下操纵杆与速度的映射关系,并为所有 自动模式 的速度设定点设置一个上限。
RA_MAX_THR_SPEED [米/秒]:此参数用于计算闭环速度控制的前馈项,该前馈项将期望速度线性映射到归一化的电机指令。 如在 手动模式 配置中所述,一个好的起始值是在 手动模式 下无人车以最大油门行驶时观察到的地面速度。
这样,速度仅由前馈项控制,这使得调整更容易。 2. 将无人车设置为 位置模式,然后将控制器的左操纵杆向上和/或向下移动,并分别将其保持在几个不同的位置,每个位置保持几秒钟。 3. 使无人车解锁,然后从飞行日志中,将 RoverAckermannStatus 消息中的 adjusted_forward_speed_setpoint
(调整后的前进速度设定点) 和 measured_forward_speed
(测量的前进速度) 绘制在一起进行对比。 4. 如果无人车的实际速度高于速度设定点,则增加 RA_MAX_THR_SPEED 的值。 如果实际速度低于速度设定点,则减小该参数的值,然后重复上述步骤,直到你对设定点跟踪情况满意为止。
:::
RA_SPEED_P [-]:闭环速度控制器的比例增益。
TIP
此参数的调整方法与 RA_MAX_THR_SPEED 相同。
如果你对 RA_MAX_THR_SPEED 调整得很好,你可能只需要一个非常小的值。
:::
RA_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 的值。
:::
现在,无人车已准备好以 位置模式 行驶。
自动模式
在 自动模式 下,自动驾驶仪使用以下控制架构接管导航任务:
以下部分将讨论所需的参数配置。
速度
RA_MAX_DECEL [米/秒²] 和 RA_MAX_JERK [米/秒³] 用于计算速度轨迹,以便无人车以正确的 转弯速度 到达下一个航点。
TIP
为无人车规划一个行驶正方形的任务,并观察它在接近航点时的减速情况。 如果无人车减速过快,则减小 RA_MAX_DECEL 参数的值;如果它过早开始减速,则增加该参数的值。 如果在无人车减速时你观察到有顿挫感,则减小 RA_MAX_JERK 参数的值;否则,尽可能增加该参数的值,因为它可能会干扰 RA_MAX_DECEL 的调整。
这两个参数必须作为一对进行调整,重复调整直到你对其表现满意为止。
:::
- 将 [RoverAckermannStatus](../msg