Skip to main content

ISO 21423 in OpenRobOps

ISO 21423Industrial mobile robots: communications and interoperability — is the open standard for how autonomous mobile robots (AMRs, called IMRs) and fleet managers (IMRFMs) talk to each other: MQTT topics with JSON payloads for identity, status, odometry, battery, paths, and a request protocol for commands such as move, dock, pauseImr.

OpenRobOps implements the standard natively, on both sides of a fleet manager:

DirectionORO's roleWhat it doesStatus
ISO RobotsIMRFM (fleet manager)ISO 21423-native robots join an ORO fleet. Their telemetry appears as ordinary robot data; operators command them from the ORO UI.Available — setup guide
ISO UpstreamIMR proxyORO presents its own fleet (robots that speak the ORO/ROS agent protocol) to a higher-level ISO fleet manager.In development

The two directions are independent modules with independent settings; enabling one has no effect on the other. Both share one facility coordinate system (CCS) calibration, described in the setup guide.

Why it matters

  • Vendor-neutral onboarding. Any robot that implements ISO 21423 can join an ORO fleet without an OpenRobOps agent on board — no ROS, no vendor SDK. The robot publishes the standard resources; ORO does the rest.
  • Same operations experience. ISO robots get the same dashboards, data sources, statuses, incidents, actions, locks and audit log as any other robot. Nothing changes for operators.
  • Standards-based extension. ISO 21423 leaves its vocabularies open (entity types, resources, states, request actions). OpenRobOps uses that to carry its own key-value custom data and pass-through custom commands in standard form, so deployment-specific features survive the protocol change.

What an ISO robot gets in ORO

ISO 21423 resource / requestIn OpenRobOps
identityAdmission check (robot must be pre-admitted), name, hostname
status (states[])Online/offline (agentOnline)
odometrypose (converted from the facility CCS to ORO's map frame), speedLinear, speedAngular
batteryStatusbatteryPercentage, batteryVoltage, batteryIsCharging
customData (ORO extension resource)Key-value data sources → attributes, statuses, incidents, Key-Values widget
globalPlan / localTrajectoryIngested as robot paths "0" / "1" (Navigation widget)
ORO Navigate to actionISO move request
ORO Cancel navigation actionISO cancelRequest (or a move to the current position)
ORO dock / dock=<id> actionsNative ISO dock request with dockActions: [CHARGE]
Any other PublishToTopic actionORO's customCommand request (vendor action type), the robot republishes the message locally

Not part of ISO 21423 today (and therefore not available from ISO robots): occupancy-grid maps, laser scans, camera images, ROS diagnostics trees, and system vitals (CPU, disk, network). ISO's globalPath (a NURBS curve, distinct from globalPlan) is in the standard but not used.

Components

  • ORO ingest — IsoRobotsModule (ingest/src/server/isoRobots/): the IMRFM. Admission roster, telemetry ingestion into the attributes pipeline, command translation.
  • ORO web app: the IsoRobot configuration kind (admission) and the POST /iso_mqtt_config endpoint (broker credentials for robots).
  • @openrobops/iso21423 (OpenRobOps/iso21423): the TypeScript SDK that implements the standard — topics, JSON Schema validation, MQTT session with the standard's Last Will semantics, request state machine, fleet gateway. Used by ORO and by the reference robot agent below. Anyone building an ISO 21423 robot or fleet manager in Node.js can use it.
  • Reference robot agent — sim-flatland ISO agent (OpenRobOps/sim-flatland): a small Node.js sidecar that turns the flatland/Nav2 simulated robot into an ISO 21423 IMR. It is the fastest way to see an ISO fleet end to end — see Try it with the Flatland simulator.

Next steps