FoundryNet / OEMs / OTTO Motors

AUTONOMOUS MOBILE ROBOT · TELEMETRY NORMALIZATION

OTTO Motors telemetry normalization: connect your OTTO Motors equipment to any AI agent

16,908 confirmed mappings·18 OEM families·14 protocols·95% field coverage

Forge turns raw OTTO Motors tags into one clean, governed schema your AI agent already understands. One MCP call, no per-AMR integration project.

Try it free: 3 machines, no credit card → See the full demo →

The problem

Why OTTO Motors data is hard to integrate

Fleet state (battery, pose, velocity, e-stop) is published over ROS 2 topics or a proprietary REST fleet API, and no two vendors agree on the topic names.

Typical OTTO Motors equipment communicates over ROS 2 (DDS), HTTP / REST, MQTT Sparkplug B. Each firmware revision, model line and integrator names the same physical quantity differently, so every AI or analytics project pays the integration tax again, the tax that cancels 40% of industrial AI deployments before they ship.


The solution

One universal schema for every OTTO Motors AMR

Forge normalizes OTTO Motors telemetry into Forge's canonical field set, the same 366 canonical fields used across all 18 manufacturers. Point Forge at the AMR, pass oem: "otto", and spindle speed is spindle_speed_rpm whether it came from a OTTO Motors controller or anything else on the floor.

ROS 2 (DDS)HTTP / RESTMQTT Sparkplug B
95%Field coverage
10Canonical autonomous mobile robot fields
16,908Corpus mappings

Field coverage

What Forge normalizes for OTTO Motors

Confirmed canonical fields your agent gets from OTTO Motors AMRs, drawn from Forge's 16,908-mapping corpus:

amr.battery.chargeamr.battery.voltageamr.battery.chargingamr.position.xamr.position.yamr.position.thetaamr.velocity.linearamr.velocity.angularamr.operating_modeamr.safety.estop

Sample normalization

Raw tag inCanonical field outMeaning
battery_soc: 0.74amr.battery.charge: 74state of charge
pose_x_m: 8.9amr.position.x: 8.9pose X
nav_state: "MOVING"amr.operating_mode: "MOVING"nav state
estop_engaged: falseamr.safety.estop: falsee-stop

30-second deployment

Add OTTO Motors to your agent with one call

No SDK, no per-tag mapping, no historian project. Connect the MCP server and normalize live OTTO Motors data:

claude mcp add --transport http forge https://mcp.foundrynet.io/mcp --header 'Authorization: Bearer YOUR_API_KEY'
# normalize raw OTTO Motors telemetry into the universal schema
curl -s https://forge.foundrynet.io/v1/normalize \
  -H 'Content-Type: application/json' \
  -d '{"data": {"battery_soc": 0.74, "pose_x_m": 8.9, "nav_state": "MOVING"}, "oem": "otto"}'
{"amr.battery.charge": 74, "amr.position.x": 8.9, "amr.operating_mode": "MOVING", "coverage": "100%", "confidence": 0.97}

Unknown tags never get force-mapped. Fields below the confidence floor abstain rather than guess, so your agent never acts on a bad reading.

Start free: Forge Connect, 3 machines → See the full demo →