Project

General

Profile

Map Input » History » Revision 2

Revision 1 (Adam Klama, 06/21/2026 02:24 PM) → Revision 2/4 (Adam Klama, 06/21/2026 02:52 PM)

# Map Input 

 ## Overview 
 A **Map Input** applies a **1D lookup table** to another input and reports the 
 result as a new, independent channel. You give it a list of X breakpoints and the 
 Y value at each one; the controller looks up the source value on the X axis and 
 **interpolates** between points. Use it to reshape a signal — for example to turn 
 a pedal-position input into a torque-request curve. 

 This is the standalone 1D map described on the 
 [Scaling & Maps](../Scaling-and-Maps.md) page — it produces a **separate** channel 
 that other IO can reference by alias. 

 ## Prerequisites & hardware 
 You need: 
 - A **source input** to use as the X axis — any existing input, by alias. 
 - The map data: matching lists of **X breakpoints** and **Y values**. 

 ## Add it in the app 
 1. Add a new input and choose **Map Input** as the type. 
 2. Choose the **source input** (the X axis). 
 3. Give it a clear **alias** (e.g. `Torque Request`). 
 4. Enter the **input values** (X) and **output values** (Y) of the map. 

 ## Settings reference 
 > Schema: `config/MapInputConfigData.proto`. 

 | Setting | Meaning | Unit | Range / values | Notes | 
 |---|---|---|---|---| 
 | **Source input** | The input read on the X axis | — | an existing input (by alias) | The value looked up in the map. | 
 | **Input values (X)** | The X-axis breakpoints | source's unit | list of sint32 | Must be **strictly increasing**. The points where the curve bends. | 
 | **Output values (Y)** | The result at each X breakpoint | result's unit | list of sint32 | One Y per X. Values between breakpoints are interpolated. | 

 **How it maps:** the source value is located between two X breakpoints and the 
 output is linearly interpolated between their Y values. Keep one Y for every X. 
 For more on editing maps, see [Scaling & Maps](../Scaling-and-Maps.md). 

 ## Common settings 
 Map Input also uses the shared setting — alias. See [Common IO Settings](../Common-IO-Settings.md). 

 ## Example — pedal position to torque request 
 1. Type **Map Input**, alias `Torque Request`. 
 2. **Source input** = your `Pedal Position` input (0–100 %). 
 3. **Input values (X)** `0, 20, 50, 80, 100`. 
 4. **Output values (Y)** `0, 50, 200, 450, 600` — a progressive curve that is 
    gentle off-idle and steeper near full pedal. 

 ## Troubleshooting 
 - **Output flat or stuck at one end:** the source is sitting below the first or 
   above the last X breakpoint — values outside the table are clamped to the end Y. 
 - **Map rejected / behaves oddly:** make sure **Input values** are strictly 
   increasing and that there is one **Output value** for each. 

 ## Related 
 - [Scaling & Maps](../Scaling-and-Maps.md) — concept page for 1D maps. 
 - [Map Output](../outputs/Map-Output.md) — the same lookup applied to an output. 
 - [Mux Input](Mux-Input.md) — select between inputs rather than interpolate.