Project

General

Profile

Map Input » History » Version 1

Adam Klama, 06/21/2026 02:24 PM

1 1 Adam Klama
# Map Input
2
3
## Overview
4
A **Map Input** applies a **1D lookup table** to another input and reports the
5
result as a new, independent channel. You give it a list of X breakpoints and the
6
Y value at each one; the controller looks up the source value on the X axis and
7
**interpolates** between points. Use it to reshape a signal — for example to turn
8
a pedal-position input into a torque-request curve.
9
10
This is the standalone 1D map described on the
11
[Scaling & Maps](../Scaling-and-Maps.md) page — it produces a **separate** channel
12
that other IO can reference by alias.
13
14
## Prerequisites & hardware
15
You need:
16
- A **source input** to use as the X axis — any existing input, by alias.
17
- The map data: matching lists of **X breakpoints** and **Y values**.
18
19
## Add it in the app
20
1. Add a new input and choose **Map Input** as the type.
21
2. Choose the **source input** (the X axis).
22
3. Give it a clear **alias** (e.g. `Torque Request`).
23
4. Enter the **input values** (X) and **output values** (Y) of the map.
24
25
## Settings reference
26
> Schema: `config/MapInputConfigData.proto`.
27
28
| Setting | Meaning | Unit | Range / values | Notes |
29
|---|---|---|---|---|
30
| **Source input** | The input read on the X axis | — | an existing input (by alias) | The value looked up in the map. |
31
| **Input values (X)** | The X-axis breakpoints | source's unit | list of sint32 | Must be **strictly increasing**. The points where the curve bends. |
32
| **Output values (Y)** | The result at each X breakpoint | result's unit | list of sint32 | One Y per X. Values between breakpoints are interpolated. |
33
34
**How it maps:** the source value is located between two X breakpoints and the
35
output is linearly interpolated between their Y values. Keep one Y for every X.
36
For more on editing maps, see [Scaling & Maps](../Scaling-and-Maps.md).
37
38
## Common settings
39
Map Input also uses the shared setting — alias. See [Common IO Settings](../Common-IO-Settings.md).
40
41
## Example — pedal position to torque request
42
1. Type **Map Input**, alias `Torque Request`.
43
2. **Source input** = your `Pedal Position` input (0–100 %).
44
3. **Input values (X)** `0, 20, 50, 80, 100`.
45
4. **Output values (Y)** `0, 50, 200, 450, 600` — a progressive curve that is
46
   gentle off-idle and steeper near full pedal.
47
48
## Troubleshooting
49
- **Output flat or stuck at one end:** the source is sitting below the first or
50
  above the last X breakpoint — values outside the table are clamped to the end Y.
51
- **Map rejected / behaves oddly:** make sure **Input values** are strictly
52
  increasing and that there is one **Output value** for each.
53
54
## Related
55
- [Scaling & Maps](../Scaling-and-Maps.md) — concept page for 1D maps.
56
- [Map Output](../outputs/Map-Output.md) — the same lookup applied to an output.
57
- [Mux Input](Mux-Input.md) — select between inputs rather than interpolate.