Skip to content

OSD Hud and ESP32 radars

daijoubu edited this page Jul 21, 2023 · 66 revisions

The Hud

The Hud is a feature that displays various points of interest (POI) on the OSD, in "3D", by showing a marker where the location is on the screen. For now it's capable to display :

  • The home point
  • Nearby aircrafts as sent by an ESP32 LoRa modem
  • Next waypoints during a mission.

Video Resources


The hud must be set from the CMS menu of the OSD or from the CLI in the Configurator.

Important! The Hud is a sub-set of the crosshair, it's designed this way because the crosshair is the origin/reference for anything hud-related. So make sure you have the crosshair enabled and displayed in the OSD tab of the Configurator. It is not recommended to have any of the legacy map or 2D-view items displayed in your OSD, as this could cause overlaps on the screen.

In order for the hud to display in "3D" where the POI is, it needs to know few things about your FPV camera :

In the CMS/OSD menu, go to OSD > Hud >...

Crosshair style

To choose between 7 different types of crosshairs.

CLI : set osd_crosshairs_style = DEFAULT

Available Values: "DEFAULT", "AIRCRAFT", "TYPE3", "TYPE4", "TYPE5", "TYPE6", "TYPE7"

Camera Uptilt

Set the camera uptilt for the FPV camera. That's the angle in degres between the horizontal of the aircraft and the line of sight of the camera. For a multirotor with a camera usually pointing up it's a positive value, most often between 5 and 30°. For a plane with the camera pointing down it should be a negative value, often between -5 and -10°.

CLI : set osd_camera_uptilt = 0

Camera FOV horizontal + vertical

The FOV for the FPV camera, the default values are ok for a 2.8mm lens. If your camera is a 2.5mm or 2.1mm or lower focal, try to raise both the horizontal and vertical FOVs by 5 or 10° by steps (the smaller the focal length, the larger the field of view). If the FOV is too far off, the tracking won't work well near the borders of the screen.

CLI : set osd_camera_fov_h = 135 set osd_camera_fov_v = 85

Hud Margin horizontal + vertical

How far from the border of the screen the hud ends, so it does not overwrite the rest of your OSD datas.

CLI : set osd_hud_margin_h = 3 set osd_hud_margin_v = 3

Horizon offset

To vertically adjust, between -2 and +2, the whole OSD and AHI and scrolling bars, it's recommended to leave it at 0.

CLI : set osd_horizon_offset = 0

Displayed items:

This sub menu will let you select what is displayed on the Hud :

Homing arrows

To display little arrows around the crossair showing where the home point is.

CLI : set osd_hud_homing = ON

Home point

To 3D-display the home point location (H)

CLI : set osd_hud_homepoint = ON

Radar max aircraft

Maximum count of nearby aircrafts or POIs to display, as sent from an ESP32 LoRa module. Set to 0 to disable (show nothing), up to 4. The nearby aircrafts will appear as markers A, B, C, D

CLI : set osd_hud_radar_disp= 3

Radar min range

In meters, by default 10 meters, radar aircrafts closer than this will not be displayed. This setting exists mostly to unclutter the OSD view during close range pursuits.

CLI : set osd_hud_radar_range_min = 10

Radar max range

In meters, by default 4000, radar aircrafts further away than this will not be displayed.

CLI : set osd_hud_radar_range_max = 4000

Next waypoints

How many waypoint are displayed, from 0 to 3. Set to 0 (zero) to disable. As sample, if set to 2, and you just passed the 3rd waypoint of the mission, you'll see markers for the 4th and waypoints (marked "4' and '5')

This is a video demonstrating the display of the waypoints live during an autonomous mission.

CLI : set osd_hud_wp_disp= 2

CLI commands

All the settings are available in the CLI, recommended settings are :

set osd_crosshairs_style = DEFAULT
set osd_horizon_offset = 0
set osd_camera_uptilt = 0
set osd_camera_fov_h = 135
set osd_camera_fov_v = 85
set osd_hud_margin_h = 3
set osd_hud_margin_v = 3
set osd_hud_homing = OFF
set osd_hud_homepoint = OFF
set osd_hud_radar_disp = 3
set osd_hud_radar_range_min = 10
set osd_hud_radar_range_max = 4000
set osd_hud_wp_disp = 2

Accuracy and limitations

There's a long chain of inaccuracies conspiring to make the tracking not perfectly accurate :

  • The heading of your aircraft can be wrong by a significant margin during or right after a hard turn. The steadier the flight, the more accurate it is.

  • The artificial horizon drift issue does not help. Accurate positioning for the POI markers depends on the actual attitude and heading of the aircraft, any slight difference of few degrees will mess up the tracking.

  • The tracking is not taking into account the roll angle of the plane so it remains simple and fast, so it won't be accurate when the banking angle is too high.

  • OSD is character based, it's a 30x16 grid for PAL, and 30x13 for NTSC, it's not super high-definition.

  • The crosshair is not perfectly centered in both horizontal and vertical dimensions because of an even numbers of columns and rows

  • The position of the other aircrafts as sent by the ESP32 modules are updated at 2Hz (every 0.5sec), so at high speed there's lag involved because of relative movements.

ESP32 LoRa modem ("INAV Radar" project)

If you have such a module fitted on your aicraft, extra steps are required in order to display the remote aircrafts live on the Hud :

  • Wire the ESP32 module to a free UART on your flight controller, same as you would connect a GPS (+5V, GND, TX, RX). Using a Softserial port is not supported, it's not fast enough.

  • In the INAV Configurator, Ports tab, enable the MSP option for this UART, and set the speed to 115200. You don't have to set anything else for the port, the ESP32 will then communicate with the flight controller using standard MSP/MSP2 messages.

  • In the CMS, OSD > Hud > Displayed items, set Radar max aircraft to 4

  • If the wiring and port configuration is correct, at boot time the ESP32 module will show the INAV/host version detected.

Please see this discussion at RCGroups for mode details about the ESP32 modules and the radar project.

This is a video demonstrating the hud for both home point and ESP32 radar tracking.

What's displayed exactly ?

  • If the marker is the home location, then the home icon is shown, it depends of the uploaded OSD font, it's usually a little house or the H letter. Below the marker is the distance, in meters/kilometers if the OSD is set to metric or UK, and in feet/miles if imperial.

  • If the marker is a POI sent by the optional ESP32 LoRa Module, the markers are letters A, B, C etc, and below is also the distance, same as above. Additionally left and right of the marker will be displayed the link quality (4 bars = 100% of packets received, 3 bars = 75%, 2 bars = 50%, 1 bar = 25%, X = link lost), and the relative heading of the other aicraft : If you and the other aircraft are going in the exact same direction the relative heading arrow will point up. If your two aircrafts are going opposite directions then the arrow will point down.

  • If the marker is a mission waypoint (WP), the markers are numbers 1, 2, 3, etc with an icon before.


  • The ESP32 says "NoFC", it does not see the INAV flight controller

Check that all 4 wires 5V GND TX RX are connected, and check that the port/UART the ESP32 is connected to is set with MSP enabled and speed is 115200 baud.

  • Conditions before display

The H marker and/or the A, B, C ... markers will appear on the OSD view only if the position and heading of your aircraft are known. So it needs a valid GPS lock. The home marker will show only when the home point is recorded, so once the flight controller is armed. The home lock is not required to display nearby radar POIs.

Since the 3D markers will only show when the heading of the plane is known, on a flying wing with no compass (no magnetometer) the 3D markers will only appear when the plane is flying/moving, so the GPS can compute the direction.

  • Some characters are missing in the OSD/Hud

Upload a compatible OSD font with the latest version of the Configurator, from the OSD tab.


Wiki Home Page

INAV Version Release Notes

7.1.0 Release Notes
7.0.0 Release Notes
6.0.0 Release Notes
5.1 Release notes
5.0.0 Release Notes
4.1.0 Release Notes
4.0.0 Release Notes
3.0.0 Release Notes
2.6.0 Release Notes
2.5.1 Release notes
2.5.0 Release Notes
2.4.0 Release Notes
2.3.0 Release Notes
2.2.1 Release Notes
2.2.0 Release Notes
2.1.0 Release Notes
2.0.0 Release Notes
1.9.1 Release notes
1.9.0 Release notes
1.8.0 Release notes
1.7.3 Release notes
Older Release Notes


Getting started with iNav
Fixed Wing Guide
Howto: CC3D flight controller, minimOSD , telemetry and GPS for fixed wing
Howto: CC3D flight controller, minimOSD, GPS and LTM telemetry for fixed wing
INAV for BetaFlight users
launch mode
Multirotor guide
YouTube video guides
DevDocs Getting
DevDocs INAV_Fixed_Wing_Setup_Guide.pdf

Connecting to INAV

Bluetooth setup to configure your flight controller
DevDocs Wireless Connections (BLE, TCP and UDP).md\

Flashing and Upgrading

Boards, Targets and PWM allocations
Upgrading from an older version of INAV to the current version
DevDocs USB

Setup Tab
Live 3D Graphic & Pre-Arming Checks

Calibration Tab
Accelerometer, Compass, & Optic Flow Calibration

Alignment Tool Tab
Adjust mount angle of FC & Compass

Ports Tab
Map Devices to UART Serial Ports

Receiver Tab
Set protocol and channel mapping


Mixer Tab
Custom mixes for exotic setups


DevDocs ESC and servo


Navigation modes
Navigation Mode: Return to Home
DevDocs INAV_Modes.pdf


Sensor auto detect and hardware failure detection



PID Tuning

PID Attenuation and scaling
Fixed Wing Tuning for INAV 3.0
Tune INAV PIFF controller for fixedwing
DevDocs Autotune -
DevDocs INAV_Wing_Tuning_Masterclass.pdf
DevDocs PID


GPS and Compass setup
GPS Failsafe and Glitch Protection

OSD and VTx

DevDocs Betaflight 4.3 compatible
OSD custom messages
OSD Hud and ESP32 radars

LED Strip



Advanced Tuning

Fixed Wing Autolaunch
DevDocs INAV_Autolaunch.pdf


DevDocs Programming


DevDocs Inflight

Mission Control

iNavFlight Missions

Tethered Logging

Log when FC is connected via USB


INAV blackbox variables
DevDocs USB_Mass_Storage_(MSC)


iNav CLI variables




"Something" is disabled Reasons
Pixel OSD FAQs
Why do I have limited servo throw in my airplane


AAT Automatic Antenna Tracker
Building custom firmware
Default values for different type of aircrafts
Features safe to add and remove to fit your needs.
Developer info
INAV MSP frames changelog
INAV Remote Management, Control and Telemetry
Lightweight Telemetry (LTM)
Making a new Virtualbox to make your own INAV
MSP Navigation Messages
Rate Dynamics
Target and Sensor support
UAV Interconnect Bus
Ublox 3.01 firmware and Galileo
DevDocs Channel
DevDocs Fixed Wing
DevDocs LED pin
DevDocs OSD
DevDocs Servo
DevDocs Temperature


Supported boards
Legacy Mixers
Legacy target ChebuzzF3
Legacy target Colibri RACE
Legacy target Motolab
Legacy target Omnibus F3
Legacy target Paris Air Hero 32
Legacy target Paris Air Hero 32 F3
Legacy target Sparky
Legacy target SPRacingF3
Legacy target SPRacingF3EVO
Legacy target SPRacingF3EVO_1SS
Request form new PRESET
Welcome to INAV, useful links and products
iNav Telemetry
DevDocs Runcam
DevDocs Spektrum

Clone this wiki locally