Dynamic WP_LOITER_RAD control with Lua and OSD display

I would like to share with the Plane community a Lua script and optional AP_OSD firmware modification that allows in-flight adjustment and display of WP_LOITER_RAD on ArduPlane.

I created this project because I wanted a way to adjust the waypoint loiter radius during flight without having to rely on Mission Planner.

Mission Planner is an excellent tool for aircraft setup and configuration, but changing WP_LOITER_RAD during a flight requires interacting with a ground station rather than using the aircraft controls. For FPV flying, this is not always convenient or practical.

This project adds a pilot-controlled interface to an existing ArduPilot parameter. It does not modify navigation or loiter behavior. The goal is simply to provide a more practical way for pilots to interact with an existing parameter while flying.

The Lua script allows the pilot to adjust WP_LOITER_RAD using an RC transmitter knob, while the current radius and loiter direction are displayed through GCS messages and optional OSD.

Features:

  • RC knob adjustment of WP_LOITER_RAD

  • Positive and negative loiter direction support

  • GCS display in feet

  • Optional OSD display through DisplayPort

  • Lua script is flight-controller independent when Lua scripting is supported

Tested configuration:

  • AtomRC Swordfish

  • TBS H7 Lucid Wing

  • Walksnail Avatar Moonlight VTX

  • Walksnail Avatar Goggles X

  • ArduPlane 4.7.x

The included .apj firmware is only for the TBS H7 Lucid Wing. The repository also includes the AP_OSD patch and instructions for building custom firmware for other ArduPilot-supported flight controllers.

Repository:

I hope this project is useful to the Plane community. I hope you enjoy using it, and I would appreciate hearing your feedback, experiences, and suggestions. Please let me know how it works for you!

Screenshot…

Scripting OSD bindings are in the 4.8 dev branch, that should make this possible with lua alone. (although it will be a while until it makes it to the stable release)

Thanks Peter!

When the time comes, I’ll move all features to lua.

In cases like this, I get around it by briefly displaying the changed value using gcs:send_text. That way, I know what the changed value is, too.

Rolf