MAVLINKHUD

Overview

The JERK parameter group (often appearing as PSC_JERK_ in the full parameter list) configures the smoothness of the vehicle's motion.

"Jerk" is the rate of change of acceleration (the 3rd derivative of position). By limiting jerk, the autopilot ensures that the vehicle doesn't "snap" its movements, resulting in a more fluid, organic, and cinematographic flight feel.

Key Concepts

1. Motion Kinematics

  • Velocity: Speed.
  • Acceleration: How fast speed changes.
  • Jerk: How fast acceleration changes.

2. S-Curve Path Planning

ArduPilot uses S-Curves for navigation. S-Curves ensure that velocity increases and decreases smoothly by strictly controlling the jerk levels.

  • JERK_XY: Horizontal jerk limit.
  • JERK_Z: Vertical jerk limit.

Parameter Breakdown

  • JERK_XY: Maximum horizontal jerk (m/s/s/s).
    • Higher values: Snappier, more aggressive waypoint turns.
    • Lower values: Smoother, smoother starts and stops.

Integration Guide

  • Cinematography: Decrease these values for ultra-smooth pans and steady shots.
  • Racing/Agility: Increase these values to allow the drone to "snap" onto its new heading/velocity quickly.

Developer Notes

  • Library: libraries/AC_PrecLand, libraries/AR_AttitudeControl, and AC_PosControl.
  • Constraint: These parameters limit the output of the position controller's path generator.

JERK_XY: Jerk limit for the horizontal kinematic input shaping

Description

Jerk limit of the horizontal kinematic path generation used to determine how quickly the aircraft varies the acceleration target.

Values

  • Range: 1 to 20
  • Units: $m/s^2$/s
  • Increment: 1
  • Default: 5.0

Description

This parameter controls the smoothness of horizontal acceleration changes in autonomous modes (like Loiter, Auto, Guided). "Jerk" is the rate of change of acceleration.

  • Lower Value (e.g., 2-4): Acceleration ramps up and down slowly. The vehicle will feel very smooth and fluid but may feel "loose" or slow to react to stick inputs in Loiter.
  • Higher Value (e.g., 10-15): Acceleration changes rapidly. The vehicle will feel responsive and "snappy" but may be jerky or twitchy if set too high for the physical capabilities of the airframe.

Source Code

ardupilot/libraries/AC_AttitudeControl/AC_PosControl.cpp

JERK_Z: Jerk limit for the vertical kinematic input shaping

Description

Jerk limit of the vertical kinematic path generation used to determine how quickly the aircraft varies the acceleration target.

Values

  • Range: 5 to 50
  • Units: $m/s^2$/s
  • Increment: 1
  • Default: 5.0

Description

This parameter controls the smoothness of vertical (Z-axis) acceleration changes in autonomous modes. It effectively limits how fast the autopilot can change the climb or descent rate command.

  • Lower Value: Smoother transitions between climbing, holding altitude, and descending. Prevents sudden "jumps" in motor output.
  • Higher Value: Faster reaction to altitude change requests, but may cause the vehicle to feel "hard" or jerky in altitude changes.

Source Code

ardupilot/libraries/AC_AttitudeControl/AC_PosControl.cpp