FoundryNet / OEMs / OTTO Motors

AUTONOMOUS MOBILE ROBOT · CANONICAL DATA MODEL

OTTO Motors canonical data model: connect your OTTO Motors equipment to any AI agent

2,461 confirmed mappings·12 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 it work →

Paste your OTTO Motors data and see it normalized in 30 seconds. No POC required.

Read-only. Forge reads your OTTO Motors data through standard industrial protocols. Read-only. Your equipment is never at risk.


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 resolves OTTO Motors telemetry into Forge's canonical field set, the same 1,027-field canonical schema (366 resolvable from vendor tags today), used across all 47 vendor packs. 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
3,444Corpus mappings

Field coverage

What Forge resolves for OTTO Motors

Confirmed canonical fields your agent gets from OTTO Motors AMRs, drawn from Forge's 3,444-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.74→amr.battery.charge: 74state of charge
pose_x_m: 8.9→amr.position.x: 8.9pose X
nav_state: "MOVING"→amr.operating_mode: "MOVING"nav state
estop_engaged: false→amr.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 API, 3 machines → See the full demo →

Related

Where OTTO Motors fits

Protocols
ROS 2 (DDS) HTTP / REST MQTT Sparkplug B

Vertical
autonomous mobile robot

Other autonomous mobile robot vendors
MiR (Mobile Industrial Robots) 6 River Systems AGILOX Fetch Robotics Geek+ (Geekplus) Locus Robotics

Same protocols, other industries
ABB Robotics KUKA Universal Robots Fanuc Robotics

Also searched as otto, otto motors, otto_motors, otto 100, otto 1500


OTTO Motors in the canonical schema

For platforms Want this normalization inside your platform? License the engine and ship cross-vendor support as your own feature. 1,027-field canonical schema, 366 resolvable from vendor tags today, 2,461 mappings, your brand. Platform licensing →
Why does a cross-vendor canonical data model matter? The Machine Agent breaks it down weekly. Read it →
Get the thesis behind this infrastructure: The Machine Agent, weekly.