Skip to content

Controlled HTTP Bridge for Non-ROS Platforms

The controlled HTTP bridge sample is located in the importable package examples.platform_bridge. It provides an HTTP-to-ROS 2 closed-loop entry point for platforms without ROS environments. It currently covers the recording Service translation and enforces the following security boundaries:

TIP

The examples/ scripts referenced on this page are obtained through the delivery package provided via official delivery channels; use the delivery package version matching your software version. The paths shown in this document are for illustrating script structure only.

  • Startup requires a non-empty REALBOT_BRIDGE_TOKEN; all three endpoints demand an exact matching Authorization: Bearer <token> header.
  • Defaults strictly to binding 127.0.0.1:8090; non-loopback bindings require explicit confirmation of "Robot Private LAN Only" scope.
  • POST requests MUST declare a decimal Content-Length header between 1–65,536 bytes, matching the exact byte count of the request body.
  • Metadata payloads permit ONLY four fields (scene, task, operator, device), each 1–128 characters long, restricted in delivery samples to ASCII alphanumeric characters, dots, underscores, and hyphens; unknown fields, path separators, and control characters will be rejected.
  • start and stop requests are serialized via an in-process lock. Because this lock cannot prevent concurrent calls from other ROS 2 clients or secondary bridge processes, production platforms MUST enforce robot-level single-control authority.
  • list returns ONLY direct, non-symlink directory names under the configured recording root directory; file reading or deletion endpoints are NOT provided.
  • Access logs record ONLY HTTP methods, fixed paths, and status codes; logging Authorization headers, tokens, or request bodies is strictly prohibited.
MethodPathRequest BodySuccess Response
POST/record/startStrict 4-field JSONRecorder status: 0 JSON
POST/record/stopStrict 4-field JSON (matching start)Recorder status: 0 JSON
GET/record/listNoneArray of directory names under recordings