Skip to content

docs: add OSD HUD and Craft Radar page - #24

Merged
Jetrell merged 4 commits into
iNavFlight:masterfrom
Raffi1202:docs/port-osd-hud-radar
Sep 14, 2026
Merged

Jetrell merged 4 commits into
iNavFlight:masterfrom
Raffi1202:docs/port-osd-hud-radar

Conversation

@Raffi1202

Copy link
Copy Markdown
Contributor

Part of moving the GitHub wiki onto the docs site. Ports "OSD-Hud-and-ESP32-radars" to docs/06-advanced-features/osd-hud-and-craft-radar.mdx and repoints the related-documents entry on the OSD page at it.

The old defaults were wrong

Every setting was checked against src/main/fc/settings.yaml on maintenance-10.x, and most of the values on the wiki page had drifted:

  • osd_hud_homing, osd_hud_homepoint, osd_hud_radar_disp and osd_hud_wp_disp all default to off / zero, not enabled. The wiki showed the peer display as 3; it is actually off by default, so following the old page left readers waiting for markers that could never appear.
  • osd_hud_radar_range_min defaults to 3 m, not 10 m.
  • There are eight crosshair styles, not seven.

Three settings the wiki never documented at all are now covered: osd_hud_radar_alt_difference_display_time, osd_hud_radar_distance_display_time and osd_radar_peers_display_time.

The peer data path is described from the firmware

Peers arrive over MSP2_COMMON_SET_RADAR_POS, the payload is parsed in fc_msp.c, stored in the radar_pois slots and drawn by osd_hud.c.

Two things readers regularly get wrong are now stated explicitly:

  • The peer element is OSD_FORMATION_FLIGHT. OSD_RADAR is a home-point map, which is not the same thing and is the usual source of confusion.
  • The firmware applies no timeout to peer positions, so a stale marker stays on screen until the module updates it.

Third-party hardware

ESP32 and FormationFlight hardware and firmware are kept as external links only, with no version or capability claims, so the page does not go stale when they change.

Image

static/img/features-adv/osd-hud-craft-radar-layout.png was not in the wiki repository, only as an attachment URL. It was fetched, viewed and checked against the code before being committed here.

Ports the "OSD-Hud-and-ESP32-radars" page from the GitHub wiki into the
Docusaurus site as docs/06-advanced-features/osd-hud-and-craft-radar.mdx,
and repoints the related-documents entry in the OSD page at it.

Every setting was checked against src/main/fc/settings.yaml on
maintenance-10.x and the defaults and ranges corrected where they had
drifted: osd_hud_homing, osd_hud_homepoint, osd_hud_radar_disp and
osd_hud_wp_disp all default to off/zero rather than enabled,
osd_hud_radar_range_min defaults to 3 m and not 10 m, and eight
crosshair styles exist rather than seven. The three settings the wiki
never documented are now covered:
osd_hud_radar_alt_difference_display_time,
osd_hud_radar_distance_display_time and osd_radar_peers_display_time.

The peer data path is described from the firmware rather than from the
old text: peers arrive over MSP2_COMMON_SET_RADAR_POS with the payload
parsed in fc_msp.c, are stored in the radar_pois slots, and are drawn by
osd_hud.c. Two points that readers regularly get wrong are now stated
explicitly - the peer element is OSD_FORMATION_FLIGHT while OSD_RADAR is
a home-point map, and the firmware applies no timeout to peer positions,
so a stale marker stays on screen until the module updates it.

Third-party ESP32 and FormationFlight hardware and firmware are kept as
external links only, with no version or capability claims.
@Raffi1202
Raffi1202 marked this pull request as ready for review September 11, 2026 15:00
@qodo-free-for-open-source-projects

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0)

Grey Divider

Great, no issues found!

Qodo reviewed your code and found no material issues that require review

Grey Divider

Tip of the day
💡 Did you know, you can switch off images and animations for a plain-text comment

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

@qodo-free-for-open-source-projects

Copy link
Copy Markdown

PR Summary by Qodo

Document OSD HUD and craft radar configuration

📝 Documentation 🕐 20-40 Minutes

Grey Divider

AI Description

• Adds a firmware-validated guide for configuring OSD HUD, waypoints, and craft radar.
• Documents peer MSP flow, display behavior, wiring, limitations, and troubleshooting.
• Replaces the external wiki reference with the new first-party documentation page.
Diagram

sequenceDiagram
  actor Pilot
  participant Module as Radar Module
  participant MSP as MSP Handler
  participant Slots as Peer Slots
  participant OSD as OSD HUD
  Module->>MSP: Send peer position
  MSP->>Slots: Store peer state
  OSD->>Slots: Read active peers
  OSD-->>Pilot: Render HUD markers
Loading
High-Level Assessment

A firmware-validated first-party guide is preferable to retaining the drifting wiki page. Keeping configuration, protocol behavior, limitations, and troubleshooting together provides one discoverable reference, while external hardware details remain links to avoid duplicating volatile third-party information.

Files changed (2) +275 / -1

Documentation (2) +275 / -1
osd.mdxLink OSD documentation to the new HUD and radar guide +1/-1

Link OSD documentation to the new HUD and radar guide

• Replaces the external GitHub wiki link with an internal link to the new OSD HUD and Craft Radar documentation page.

docs/05-core-features/osd.mdx

osd-hud-and-craft-radar.mdxAdd comprehensive OSD HUD and craft radar guide +274/-0

Add comprehensive OSD HUD and craft radar guide

• Adds firmware-validated documentation for HUD geometry, markers, peer displays, MSP radar messages, hardware setup, and CLI configuration. It corrects outdated defaults, distinguishes OSD_FORMATION_FLIGHT from OSD_RADAR, warns that peer positions do not expire, and includes troubleshooting and operational limitations.

docs/06-advanced-features/osd-hud-and-craft-radar.mdx

@Jetrell

Jetrell commented Sep 14, 2026

Copy link
Copy Markdown
Collaborator

@Raffi1202 There are some statements like this -

A multirotor usually has the camera tilted up, so osd_camera_uptilt is a positive value, often between 5 and 30.

That makes it sound like this is how you would set a multicopter for HUD use. While in reality you don't want to use the Craft radar feature (formation flight or the older INAV ESP32 radar) with the HUD. Because a copter can hover in the one spot and rotate on the yaw axis. This causes the HUD to provide incorrect positioning of the peer aircraft.
This is why a copter only works correctly with the fixed radar element. As stated later down the page..

warning The OSD element that shows peers is OSD_FORMATION_FLIGHT, which the Configurator lists under Maps & Radar.

The warning that is written above. Makes it sound like the INAV radar feature can only be used with FormationFlight, However some pilots still use the older LILYGO hardware and ESP32 INAV radar firmware on their airplanes without issue.

I noticed most of your commits are written by an AI. Which can cause issues when it's interpretation of how something works is based on what it reads, and not what it has experienced. We need to remember that the wording has to be in layman's terms. So the user doesn't require an AI to interpret what the document is saying. Otherwise they may as well use Google AI to find out how it works in the first place.

Two things the page got wrong, both reported by Jetrell:

A multirotor can hover and rotate on yaw, so the HUD draws peers in the
wrong direction - it positions them relative to where the camera points.
The page read as a setup guide for exactly that. It now says so up front
and sends multirotor pilots to the fixed element.

The element warning read as if Formation Flight were the only way to get
peers. OSD_FORMATION_FLIGHT is the name of the OSD element, not of the
hardware; the older ESP32 radar firmware feeds the same display.
@Raffi1202

Copy link
Copy Markdown
Contributor Author

@Jetrell You are right on all three counts, including the last one. Let me take that one first, because it is the reason the other two happened.

Yes, I write these with AI assistance, and your diagnosis of the failure mode is exact: it produces text from what it can read, and there is no way to read "a copter hovers and rotates on yaw, so the HUD puts peers in the wrong place" out of the source or the settings descriptions. That is flying knowledge. I had the uptilt range right and the whole point wrong, which is worse than leaving the section out - a reader would have set it up and trusted it.

I am not going to stop using the tool, but I will stop shipping pages that depend on experience I do not have without someone who has it reading them first. If you are willing to keep doing what you just did on the pages I have open, that is worth more to me than the pages themselves. If you would rather I pull them until then, say so and I will.

On the wording: point taken there too. Anything that needs decoding has failed. I will go back through the other four for anything that reads like a specification rather than an instruction.

The two corrections are pushed in 185f0ed:

Multirotors and the HUD. A warning now sits directly under the camera-geometry section, before anyone starts setting values:

A multirotor can hover on the spot and rotate on its yaw axis. The HUD then places peers in the wrong direction, because it draws them relative to where the camera is pointing. On a multirotor, show peers with the fixed element instead. The rest of the HUD, such as the home point marker, is unaffected.

The setup section now says plainly: on a plane raise osd_hud_radar_disp, on a multirotor leave it at 0 and use the element on its own. I also removed "the HUD is often less useful on multirotors" - that was a taste statement about something that is simply wrong on screen.

The older radar hardware. The warning about OSD_FORMATION_FLIGHT kept its point - that OSD_RADAR is a different element - but no longer reads as the only route:

The name refers to the OSD element, not to the hardware or the protocol. It displays whatever peers reach the flight controller, whether they come from a Formation Flight module or from the older ESP32 radar firmware.

If the LILYGO/ESP32 path needs more than that - a different port setting, a firmware note, anything a pilot on that hardware would trip over - tell me and I will add it rather than guess.

@sensei-hacker

Copy link
Copy Markdown
Member

To assist in having agents help write documentation that needs less editing, I have created some guidance for them.
#28 adds AGENTS.md , which all AI agents should read before doing anything else in the repo:
https://github.com/sensei-hacker/inavdocs/blob/1b30e5318702f92e5c1c953b2345367d058a1d13/AGENTS.md

Comments or edits from either of you would be appreciated.

@Jetrell

Jetrell commented Sep 14, 2026

Copy link
Copy Markdown
Collaborator

Comments or edits from either of you would be appreciated.

@sensei-hacker That is very useful guidance. If a contributor uses AI assistance. They could run your document by it before it writes their document. That should at least keep the AI model on track. So it doesn't go off rewording things that can often change the whole meaning because of its misinterpretation.

@Raffi1202 That it clearer and on point with its operation.

@Jetrell
Jetrell merged commit b0c2e01 into iNavFlight:master Sep 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants