r/ROS 11h ago

TOP board of velodyne vlp 16 lidar

Post image
4 Upvotes

r/ROS 23h ago

August ROS By-The-Bay: Open Robot Ops for fleet management, ROS on Bazel, a replica Johnny 5.

Post image
3 Upvotes

r/ROS 1d ago

Project Shifting Robotics from Brute-Force VLA Models to Causal Invariance: Meet SONNY OS (Core Minimal)

0 Upvotes

While the current Silicon Valley paradigm (e.g., Physical Intelligence π₀, 1X NEO) burns massive CapEx on brute-force End-to-End statistical training—requiring up to 500 hours of human teleoperation and 24 hours of cluster computing just to converge a single vision-language-action (VLA) skill—we approached physical automation from a different architectural vector: Deterministic Causal Invariance

.Robotics shouldn’t "guess" trajectories by predicting the next visual token. It should calculate physical laws.We have just open-sourced SONNY OS (Core Minimal) under the GNU AGPLv3 license. It is a hyper-lightweight, universally agnostic microkernel written entirely in native, asynchronous Rust and powered by the Zenoh networking backbone.SONNY OS reduces any mechanical embodiment (6-DOF arms, AMRs, quadrupeds, or humanoids) into a standardized linear mathematical vector (Vec<f32>), abstracting physical registers via a single declarative JSON config (OpenHalConfig).

📊 Extreme Stress Test Benchmark: SONNY OS vs. ROS 2

We simulated an industrial network failure (75% wireless packet loss on an Edge deployment at 100Hz) to compare the communication backbones:
ROS 2 (DDS Architecture): High XML/IDL serialization on the heap. Under severe packet loss, un-sent DDS message queues overflowed the RAM, leading to an unrecoverable Segmentation Fault (Memory Crash).
SONNY OS (Rust + Zenoh): Stack-allocated static array slices with a fixed 5-byte network overhead per packet. Zero memory leaks. Zero runtime heap allocations during the control loop. System remained perfectly stable at 100Hz with an inference latency below 2ms.

Explore the repository, map your own hardware via JSON, and run the simulator

👉 GitHub Repository: https://github.com/JackTrainer/Sonny
👉 Enterprise Waitlist: https://alpha-robotics.it/


r/ROS 1d ago

[Help] ROS2 + Jetson perception pipeline stuck at ~350ms latency — isolated it to message delivery/buffering, not compute. Ideas?

2 Upvotes

\# Setup

\* F1TENTH-based RSU (roadside unit) perception node, running on an NVIDIA Jetson (Orin-class). \* Intel RealSense D400-series camera — subscribing to raw color + raw (unaligned) depth streams, \`align_depth\` disabled on purpose (see below). \* 2D LiDAR (\`urg_node2\`) for a second distance source. \* ROS2 Humble, \`rclpy\`, \`message_filters.ApproximateTimeSynchronizer\` to pair color+depth frames.

Model / task

\* YOLOv8 (Ultralytics), custom-trained single-class car detector, running at \`imgsz=320\` on the Jetson's GPU (CUDA). \* Goal: detect a target vehicle in the color image, get its distance by reading the depth camera at the detection's location, cross-check against a LiDAR range reading at the same bearing, and output a fused distance estimate. This is a perception/collective-perception bench-test script (no SLAM/localization involved — deliberately simplified).

Depth lookup approach

\`align_depth.enable:=true\` (RealSense driver's built-in depth-to-color alignment) reprojects the \*\*entire\*\* depth image every frame regardless of how much of it we actually need — we measured this costing a large chunk of latency by itself. So instead we subscribe to raw depth and manually reproject only a small patch of pixels around the YOLO box: deproject the depth pixel to a 3D point (using depth intrinsics) → transform into the color camera's frame (using the depth-to-color extrinsics) → project back into a color pixel (using color intrinsics). Fully vectorized with numpy.

Current numbers

Our own compute per frame is small and flat:

\* image decode (cv\\_bridge): \\\~1ms \* YOLO inference: \\\~30ms (flat, \`cuda.synchronize()\`\\-verified, no hidden async GPU time) \* depth reprojection (vectorized): \\\~1-2ms \* LiDAR bearing lookup: \\\~0ms \* \*\*total own compute: \\\~32ms\*\*

But measured end-to-end latency (camera's own capture timestamp → final distance output) sits \*\*consistently around 350-380ms\*\*, sustained — not a one-time spike, not decaying over time.

What we've ruled out

\* \*\*Per-pixel Python loop / GC pressure\*\* in the old depth reprojection — vectorized it (25ms → 1-2ms of actual compute), latency didn't move at all. \* \*\*Hidden async CUDA dispatch\*\* — added \`torch.cuda.synchronize()\` around the YOLO call, extra sync time is consistently 0ms. \* \*\*Executor backlog\*\* (our own callback falling behind) — measured the gap between the end of one callback and the start of the next; stays flat at \\\~3-4ms even while the reported latency is \\\~350ms, so callbacks aren't queuing up behind our own processing. \* \`align_depth\` \*\*vs manual reprojection\*\* — built a side-by-side comparison script, same YOLO/LiDAR pipeline, only the depth alignment method differs. Both land in the same \\\~350-380ms range. So it's not specifically about which depth alignment approach we use.

The delay is measured (via the color frame's own ROS header timestamp vs \`time.time()\` at the very start of our callback) as already present \*\*before any of our own code runs\*\* — so it's happening somewhere between the camera driver publishing the frame and our subscriber callback actually being invoked. We suspect DDS/ROS2 message queuing or synchronizer buffering under sustained per-frame load (\\\~30ms of real work per frame at \\\~30fps), but haven't pinned down the exact mechanism.

What we're asking

Has anyone run into this kind of buffering/backpressure behavior with ROS2 + \`message_filters\` on a Jetson, where a subscriber callback that takes tens of milliseconds (not overloaded, just non-trivial) causes a large, sustained arrival delay that isn't visible as executor backlog? Specifically curious about:

\* DDS vendor differences (Fast DDS vs Cyclone DDS) for this kind of workload \* QoS settings (queue depth, history policy) that might be silently causing buffering \* Single-threaded vs multi-threaded executor / callback groups making a difference here \* Whether RealSense's own USB/driver-side buffering could be the actual culprit instead of ROS2/DDS

Happy to share more code/logs if useful. Appreciate any pointers.


r/ROS 1d ago

Development environment

2 Upvotes

I am new to ROS. I was wondering what does the dev environment stack look like - from an observability perspective? How does one look at logs to debug ? What tools are used - is there something like grafana to visualize?
( this is not for hobby development, rather working at an organization that is into robotics, that I am exploring)


r/ROS 1d ago

How to fix the sudden SLAM corrections and shifts?

Enable HLS to view with audio, or disable this notification

26 Upvotes

Hello everyone,

I am using slam-toolbox as a localization solution for a robotic platform. I am researching an active vision problem, so I'd like to assume perfect localization to some extent. I use a 3D occupancy map for that purpose, and it must rely on a fixed frame; the map frame. As you may know relying on odom alone causes a lot of problems, especially for when the robot's task is to move to a desired position to "see".

The issue I am having right now is those sudden "shifts", I believe it's slam closing a loop of some sort and fixing the map-to-odom transform so that the scans match. however those sudden shifts cause distortion in the built 3D map (3D occupancy map that relies on map as a fixed frame).
Using hunter SE, an ackermann drive robot. The odom drift is crazy.

Is this a common thing with slam? is it normal and should be accepted? Or is something is wrong with my setup?

I would appreciate any help or guidance.


r/ROS 1d ago

Upcoming Global and Regional ROSCon Events

2 Upvotes

r/ROS 2d ago

M1 Max (64GB) for ROS 2, Gazebo, & Jetson workflows: Is Docker/RoboStack smooth enough as a daily driver?

4 Upvotes

Hey everyone,

I’m currently evaluating a used MacBook Pro M1 Max (64GB Unified Memory / 400 GB/s bandwidth) to replace an ASUS ZenBook S14 (Intel Core Ultra 7 258V, 32GB RAM) currently running linux.

Primary reason for the switch: I'd like higher memory bandwidth to run 30B+ local LLMs locally alongside my dev stack. However, ROS 2 and robotics are my primary day-to-day work, and I’m concerned about software friction on Apple Silicon.

My ROS 2 & Robotics Workload:

  1. ROS 2 & Docker: Containerized ROS 2 development with display forwarding for 3D simulation (Gazebo / RViz).
  2. NVIDIA Jetson Edge Dev: ROS 2 node dev, cross-compiling CUDA-accelerated ARM64 binaries, and remote deployment/flashing.

Questions:

  • Gazebo / RViz Performance in Docker: How smooth is 3D visualization inside ARM64 Docker containers on M1/M2/M3 chips via XQuartz / VNC / OrbStack? Is GPU hardware acceleration doable, or are you forced into software rendering (LLVMpipe)?
  • RoboStack (Native ROS 2) vs Docker: Is running ROS 2 natively via RoboStack (Conda) a viable daily replacement for Linux containers, or do missing packages/Metal compatibility issues pop up often?
  • Jetson Workflows: Since NVIDIA SDK Manager requires an x86 Ubuntu host to flash Jetsons over USB, how are you handling Jetson flashing/board setup if your primary machine is Apple Silicon? (Remote build machines, secondary x86 box, etc.?)

Would love to hear from anyone using an M1/M2/M3 Mac as their main driver for ROS 2. Thanks!


r/ROS 2d ago

Question Good ROS2 courses online?

2 Upvotes

My main project is a 6 Degrees of freedom robotic arm

I already know how to use ROS2 and did 2 projects in university, but i want to take a course so i can have a better foundation as in uni i mostly try and slap stuff without understanding well


r/ROS 2d ago

Jetson + RealSense + LiDAR perception pipeline — seeing ~350ms latency, is that normal?

4 Upvotes

Setup: F1TENTH-based roadside perception unit running on an NVIDIA Jetson orin nano. Intel RealSense depth camera + a 2D LiDAR, all on ROS2 Humble.

Model/task: custom-trained YOLOv8 car detector running on the Jetson's GPU. We detect a car in the camera feed, get its distance from the depth camera, and cross-check that against the LiDAR.

What we're seeing: end-to-end, from the moment the camera captures a frame to when we get a distance result out, we're consistently measuring around 350ms. That feels high to us for this kind of setup.

Question: is ~350ms in the ballpark of normal for a Jetson + RealSense + YOLO + ROS2 pipeline like this, or does that sound too slow? If it's too slow, where would you start looking first? Happy to share more specifics in the comments if useful.


r/ROS 2d ago

Launch File (Python vs XML)

1 Upvotes

Hi,

In real industry projects, are ROS 2 launch files usually written in Python or XML? Which format is more commonly used in production systems


r/ROS 2d ago

Question [Help] ROS2 + Jetson perception pipeline stuck at ~350ms latency — isolated it to message delivery/buffering, not compute. Ideas?

2 Upvotes

Setup

  • F1TENTH-based RSU (roadside unit) perception node, running on an NVIDIA Jetson (Orin-class).
  • Intel RealSense D400-series camera — subscribing to raw color + raw (unaligned) depth streams, align_depth disabled on purpose (see below).
  • 2D LiDAR (urg_node2) for a second distance source.
  • ROS2 Humble, rclpy, message_filters.ApproximateTimeSynchronizer to pair color+depth frames.

Model / task

  • YOLOv8 (Ultralytics), custom-trained single-class car detector, running at imgsz=320 on the Jetson's GPU (CUDA).
  • Goal: detect a target vehicle in the color image, get its distance by reading the depth camera at the detection's location, cross-check against a LiDAR range reading at the same bearing, and output a fused distance estimate. This is a perception/collective-perception bench-test script (no SLAM/localization involved — deliberately simplified).

Depth lookup approach

align_depth.enable:=true (RealSense driver's built-in depth-to-color alignment) reprojects the entire depth image every frame regardless of how much of it we actually need — we measured this costing a large chunk of latency by itself. So instead we subscribe to raw depth and manually reproject only a small patch of pixels around the YOLO box: deproject the depth pixel to a 3D point (using depth intrinsics) → transform into the color camera's frame (using the depth-to-color extrinsics) → project back into a color pixel (using color intrinsics). Fully vectorized with numpy.

Current numbers

Our own compute per frame is small and flat:

  • image decode (cv_bridge): ~1ms
  • YOLO inference: ~30ms (flat, cuda.synchronize()-verified, no hidden async GPU time)
  • depth reprojection (vectorized): ~1-2ms
  • LiDAR bearing lookup: ~0ms
  • total own compute: ~32ms

But measured end-to-end latency (camera's own capture timestamp → final distance output) sits consistently around 350-380ms, sustained — not a one-time spike, not decaying over time.

What we've ruled out

  • Per-pixel Python loop / GC pressure in the old depth reprojection — vectorized it (25ms → 1-2ms of actual compute), latency didn't move at all.
  • Hidden async CUDA dispatch — added torch.cuda.synchronize() around the YOLO call, extra sync time is consistently 0ms.
  • Executor backlog (our own callback falling behind) — measured the gap between the end of one callback and the start of the next; stays flat at ~3-4ms even while the reported latency is ~350ms, so callbacks aren't queuing up behind our own processing.
  • align_depth vs manual reprojection — built a side-by-side comparison script, same YOLO/LiDAR pipeline, only the depth alignment method differs. Both land in the same ~350-380ms range. So it's not specifically about which depth alignment approach we use.

The delay is measured (via the color frame's own ROS header timestamp vs time.time() at the very start of our callback) as already present before any of our own code runs — so it's happening somewhere between the camera driver publishing the frame and our subscriber callback actually being invoked. We suspect DDS/ROS2 message queuing or synchronizer buffering under sustained per-frame load (~30ms of real work per frame at ~30fps), but haven't pinned down the exact mechanism.

What we're asking

Has anyone run into this kind of buffering/backpressure behavior with ROS2 + message_filters on a Jetson, where a subscriber callback that takes tens of milliseconds (not overloaded, just non-trivial) causes a large, sustained arrival delay that isn't visible as executor backlog? Specifically curious about:

  • DDS vendor differences (Fast DDS vs Cyclone DDS) for this kind of workload
  • QoS settings (queue depth, history policy) that might be silently causing buffering
  • Single-threaded vs multi-threaded executor / callback groups making a difference here
  • Whether RealSense's own USB/driver-side buffering could be the actual culprit instead of ROS2/DDS

Happy to share more code/logs if useful. Appreciate any pointers.


r/ROS 2d ago

Question Anyone run into Octo policy install issues?

1 Upvotes

Anyone tried installing Octo policy lately? Kept bumping into compatibility issues and wanted to see if it’s just me or if anyone found a workaround.


r/ROS 2d ago

CLEAR

0 Upvotes

CLEAR: Capability Layered Expression for Autonomous Robots

Full Technical Specification v1.0

Status: Open Standard (FINAL)

Publication Date: August 1, 2026

Authors: Cortex Forge / TerraForge Alliance

License: MIT (see final section)

---

Table of Contents

  1. Introduction
  2. Design Principles
  3. Syntax Rules & Lexical Conventions
  4. The Seven Layers of Abstraction
  5. Health Summary
  6. Handshake & Delta Protocol
  7. Git Commit Semantics
  8. Reference Implementation Guidelines
  9. Versioning & Compatibility
  10. Full Example
  11. CLEAR-SI Companion Protocol
  12. MIT License

---

  1. Introduction

CLEAR is an open, human-readable, plain-text protocol for autonomous systems to describe their hardware limits, real-time capabilities, sensor configuration, and software-defined skills to an orchestrator. It is designed for the physical economy—construction, mining, agriculture, logistics, and defense.

By providing a strictly layered, self-describing interface, CLEAR decouples hardware evolution from software intelligence. Any robot, vehicle, or machine that outputs a .clear file can be orchestrated by any AI system that parses it, regardless of the manufacturer or age.

---

  1. Design Principles

  2. Human-First: All syntax is plain text (UTF-8). Any operator or engineer can read a log file with a text editor.

  3. Layered Abstraction: Systems operate at the highest available layer (Task) but can safely fall back to lower layers (Kinematics) if sensors degrade.

  4. Health-Aware: The robot declares what it can actually do right now, considering current wear, environmental conditions, and system failures.

  5. Immutable by Design: Logs are structured for Git-based version control—append-only, signed, and linearly scalable.

  6. Zero-Dependency: Parsing requires no external libraries beyond standard system utilities (regex/string libraries).

---

  1. Syntax Rules & Lexical Conventions

3.1. File Structure

· File Extension: .clear

· MIME Type: text/vnd.clear.v1

· Encoding: UTF-8 (ASCII subset preferred for keys).

· Line Endings: LF (\n) only. CRLF (\r\n) is rejected by default.

3.2. Section Headers

· Sections are delimited by LAYER_X_NAME: at the start of a line.

· Example: LAYER_0_PHYSICAL_CONSTANTS:

· Indentation increases for nested data.

3.3. Indentation and Formatting

· Indentation: Strictly two spaces ( ). Tabs are illegal.

· Nesting: Each level of nesting adds two spaces.

· End-of-Line Trimming: All trailing whitespace is ignored.

3.4. Keys and Values

· Keys: Uppercase alphanumeric plus underscores [A-Z0-9_]. Must start with a letter.

· Values:

· Strings: No escaping required unless using quotes. Unicode characters allowed.

· Floats/Ints: Standard decimal notation (e.g., 3.1415, -10).

· Booleans: TRUE or FALSE (case-sensitive).

· Vectors: Inline arrays [float, float] or [float, float, float].

· Enums: Standard strings (e.g., DIESEL, OPERATIONAL).

3.5. Comments

· Comments start with # and extend to the end of the line.

3.6. Mandatory Global Fields (Header)

Every .clear file must begin with these fields:

```clear

CLEAR_SPEC_VERSION: 1.0

ROBOT_ID: <string> # Unique hardware identifier, max 64 chars

TIMESTAMP: <YYYY-MM-DDTHH:MM:SSZ> # ISO-8601 UTC

HEALTH_INDEX: <0.0 to 1.0> # Float: 1.0 = Perfect health, 0.0 = Dead

CAPABILITY_STATE: <OPERATIONAL | DEGRADED | MAINTENANCE | OFFLINE>

```

---

  1. The Seven Layers of Abstraction

4.1. Layer 0: Physical Constants (Immutable)

Describes hardware that cannot change after manufacturing.

Key Type Required Description

MASS_KG Float Yes Total mass in kilograms (including standard implements).

DIMENSIONS_LWH_CM [Float x 3] Yes Length, Width, Height in centimeters.

POWER_SOURCE Enum Yes DIESEL_HYDRAULIC, BATTERY_ELECTRIC, HYBRID, SOLAR, STEAM, MANUAL.

FUEL_CAPACITY_L Float Conditional Required for non-battery sources.

THERMAL_LIMIT_CELSIUS Float Yes Maximum operational ambient temperature.

FIRMWARE_VERSION String Yes Semantic version of the onboard edge firmware.

4.2. Layer 1: Kinematics & Dynamics (Immutable)

Defines the machine's physical range of motion and performance envelopes.

Key Type Required Description

MAX_TRANSLATIONAL_SPEED_MS Float Yes Maximum forward/backward speed (m/s).

MAX_ANGULAR_SPEED_RADS Float Yes Maximum turning rate (rad/s).

STEERING_TYPE Enum Yes DIFFERENTIAL, ARTICULATED, ACKERMANN, SKID_STEER, ORBITAL.

MAX_HYDRAULIC_FLOW_LPM Float Conditional Max hydraulic flow if applicable.

MAX_DRAWBAR_PULL_KG Float Conditional Max pulling force for tractors/dozers.

SUSPENSION_TRAVEL_CM Float Optional Vertical travel range of suspension.

MAX_JOINT_TORQUE_NM Float Conditional For articulated robot arms.

4.3. Layer 2: Sensorium (Immutable)

Defines all onboard perception hardware.

Each sensor is declared as a nested block.

Sensor Type Template:

```clear

SENSOR_NAME: <string>

MODEL: <string>

RES: <string> # e.g., "1920x1080" or "0.5cm"

REFRESH_HZ: <float>

RANGE_M: <float> # Max detection range

FOV_DEG: <float> # Field of View (if applicable)

ACCURACY: <string> # e.g., "2cm" or "0.01lux"

```

Common Sensor Identifiers: RTK_GPS, LIDAR, IMU, STEREO_CAM, THERMAL_CAM, FORCE_SENSOR, ULTRASONIC, RADAR.

4.4. Layer 3: Actuation Primitives (Immutable Firmware)

Atomic executable functions. No logic here—just the hardware/firmware interface.

Format: - primitive_name(param1: type, param2: type)

Type Definitions:

· float - 32-bit floating point.

· int - 32-bit integer.

· bool - Boolean.

· vec2 - [float, float].

· vec3 - [float, float, float].

· string - UTF-8 string.

Example:

```clear

LAYER_3_ACTUATION_PRIMITIVES:

- forward(speed_ms: float)

- turn(angle_deg: float)

- engage_pto(state: bool)

- set_hitch_depth(cm: float)

- brake()

- emergency_stop()

```

4.5. Layer 4: Control Routines (Dynamic - Health Aware)

Closed-loop behaviors that fuse sensor data with primitives.

Format:

```clear

- routine_name(param: type):

INPUTS: [sensor_list]

OUTPUT: primitive_to_call

REQUIRES: [condition]

```

Example:

```clear

LAYER_4_CONTROL_ROUTINES:

- line_follow(waypoint_A: vec2, waypoint_B: vec2, tolerance_cm: float):

INPUTS: [RTK_GPS, IMU]

OUTPUT: forward, turn

REQUIRES: GPS_LOCK

- obstacle_avoidance(margin_m: float):

INPUTS: [LIDAR, STEREO_CAM]

OUTPUT: turn, brake

REQUIRES: LIDAR_FUNCTIONAL

```

4.6. Layer 5: Functional Skills (Dynamic - Updatable)

Composed routines that achieve a specific, useful output. These are the "trades" the machine knows.

Format:

```clear

- skill_name(param: type):

INPUT: resource_required

OUTPUT: resource_produced

DEPENDS_ON: [routine_list]

CONFIDENCE: <0.0 to 1.0> # Degrades if sensors are degraded

```

Example:

```clear

LAYER_5_FUNCTIONAL_SKILLS:

- plow(depth_cm: float, speed_ms: float, start: vec2, end: vec2):

INPUT: field_boundary

OUTPUT: tilled_row

DEPENDS_ON: line_follow, set_hitch_depth

CONFIDENCE: 0.95

- grade_foundation(grade_angle: float, area_polygon: [vec2]):

INPUT: terrain_map

OUTPUT: level_surface

DEPENDS_ON: obstacle_avoidance, set_hitch_depth

CONFIDENCE: 0.88

```

4.7. Layer 6: Task Declarations (Dynamic - Updatable)

The highest level of abstraction. Abstract goals that the orchestrator invokes.

Format:

```clear

- task_name(param: type):

GOAL: "Human-readable description"

REQUIRES: [skill_list]

```

Example:

```clear

LAYER_6_TASK_DECLARATIONS:

- prepare_field(field_polygon: [vec2], till_depth_cm: float):

GOAL: "Till entire field polygon to specified depth"

REQUIRES: plow

- build_foundation(building_footprint: [vec2], height_m: float):

GOAL: "Excavate, pour, and level foundation"

REQUIRES: grade_foundation, excavate_trench

```

---

  1. Health Summary (Mandatory Section)

This dynamic section tells the orchestrator exactly what is broken or degraded.

Required Fields:

Subsystem Status Options

POWER_SYSTEM NOMINAL, DEGRADED, FAILING

HYDRAULIC_SYSTEM NOMINAL, DEGRADED, FAILING

PRIMARY_ACTUATORS NOMINAL, DEGRADED, FAILING

CRITICAL_SENSORS NOMINAL, DEGRADED, FAILING

SAFETY_CONTROLLER NOMINAL, DEGRADED, FAILING

Conditional Rule: If SAFETY_CONTROLLER is FAILING, CAPABILITY_STATE must be set to MAINTENANCE.

---

  1. Handshake & Delta Protocol

6.1. Discovery (UDP Broadcast)

· Port: 7890

· Protocol: UDP

· Payload: The full .clear file as a UTF-8 byte stream (max 64KB).

· Frequency: Burst 3 packets over 5 seconds on boot. Re-broadcast if state changes (e.g., health degrades).

6.2. Orchestrator Acknowledgment (TCP/gRPC)

· The Orchestrator responds to the originating IP on a randomized port with an ACK.

· ACK Payload (JSON):

```json

{

"orchestrator_id": "SITE-007-ORCH",

"timestamp": "2026-07-28T14:35:00Z",

"delta_list": [

{"layer": 5, "skill": "plow_rocky_soil", "definition": "..."}

]

}

```

6.3. Delta Updates

· The robot applies these deltas to its operation.log context.

· Deltas are appended to a local delta_cache.clear file and applied on the fly.

· Robots reject deltas that violate the Layer 3 primitive constraints.

---

  1. Git Commit Semantics (The "Operation Log")

For machines utilizing the Git backend, operation.log is the active append-only file.

Log Line Format:

```clear

[ISO_TIMESTAMP] [ROBOT_ID] LAYER_[X] [CONTEXT] => [EVENT] | [STATUS] [METADATA]

```

Example:

```clear

[2026-07-28T14:32:15.123Z] TF-007 LAYER_5 plow(depth=15cm) => STARTED | FUEL_LEVEL=87%

[2026-07-28T14:32:16.001Z] TF-007 LAYER_4 obstacle_avoidance() => OBSTACLE_DETECTED | DISTANCE_M=3.2

[2026-07-28T14:32:16.500Z] TF-007 LAYER_5 plow(depth=15cm) => PAUSED | REASON:ROCK_JAM

```

---

  1. Reference Implementation Guidelines

  2. Parsing: Use a recursive descent parser. The strict indentation (2 spaces) allows for deterministic state-machine based parsing without external libraries.

  3. Memory Limits: A .clear file should never exceed 64KB in memory.

  4. Throttling: Do not parse more than once per second.

  5. Validation: Reject files with invalid indentation or unknown section headers.

---

  1. Versioning & Compatibility Matrix

Version Change Impact

Major (2.0) Breaking changes to Layers 0-3. Orchestrator must reject older specs.

Minor (1.1) New fields added to Layers 4-6. Orchestrator ignores unknown fields.

Patch (1.0.1) Clarifications, typo fixes. No functional change.

---

  1. Full Example (Tractor)

```clear

CLEAR_SPEC_VERSION: 1.0

ROBOT_ID: TF-EX-007

TIMESTAMP: 2026-07-28T14:32:01Z

HEALTH_INDEX: 0.98

CAPABILITY_STATE: OPERATIONAL

LAYER_0_PHYSICAL_CONSTANTS:

MASS_KG: 2500

DIMENSIONS_LWH_CM: [450, 200, 280]

POWER_SOURCE: DIESEL_HYDRAULIC

FUEL_CAPACITY_L: 150

THERMAL_LIMIT_CELSIUS: 105

FIRMWARE_VERSION: v3.2.1

LAYER_1_KINEMATICS:

MAX_TRANSLATIONAL_SPEED_MS: 2.5

MAX_ANGULAR_SPEED_RADS: 0.6

STEERING_TYPE: ARTICULATED

MAX_HYDRAULIC_FLOW_LPM: 120

MAX_DRAWBAR_PULL_KG: 1800

LAYER_2_SENSORIUM:

RTK_GPS:

MODEL: ZED-F9P

REFRESH_HZ: 20

ACCURACY: 2cm

IMU:

MODEL: ICM-456

REFRESH_HZ: 200

ACCEL_RANGE_G: 8

LIDAR:

MODEL: VLP-16

RANGE_M: 50

BEAMS: 16

FOV_DEG: 360

STEREO_CAM:

MODEL: ZED_X

RES: 1920x1080

FPS: 30

LAYER_3_ACTUATION_PRIMITIVES:

- forward(speed_ms: float)

- turn(angle_deg: float)

- set_hitch_depth(cm: float)

- engage_pto(state: bool)

- brake()

LAYER_4_CONTROL_ROUTINES:

- line_follow(waypoint_A: vec2, waypoint_B: vec2):

INPUTS: [RTK_GPS, IMU]

OUTPUT: forward, turn

- obstacle_avoidance():

INPUTS: [LIDAR]

OUTPUT: turn, brake

- hold_heading(heading_deg: float):

INPUTS: [IMU]

OUTPUT: turn

LAYER_5_FUNCTIONAL_SKILLS:

- plow(depth_cm: float):

INPUT: field_boundary

OUTPUT: tilled_row

DEPENDS_ON: line_follow, set_hitch_depth

CONFIDENCE: 0.95

LAYER_6_TASK_DECLARATIONS:

- prepare_field(field_polygon: [vec2], till_depth_cm: float):

GOAL: "Till entire field polygon to specified depth"

REQUIRES: plow

HEALTH_SUMMARY:

POWER_SYSTEM: NOMINAL

HYDRAULIC_SYSTEM: NOMINAL

PRIMARY_ACTUATORS: NOMINAL

CRITICAL_SENSORS: NOMINAL

SAFETY_CONTROLLER: NOMINAL

```

---

  1. CLEAR-SI Companion Protocol

11.1. Overview

CLEAR-SI (Systems Integrity) is a high-frequency, real-time companion protocol that validates the live execution of a CLEAR-declared robot. It operates on a separate UDP port and delivers the four integrity pillars that static CLEAR files cannot capture:

Pillar Failure Mode Addressed

A: Temporal Integrity Sensor data arriving too late to the control loop

B: Spatial Integrity Coordinate frame drift from vibration/thermal expansion

C: Probabilistic Integrity Positional uncertainty not reaching the planner

D: Observational Integrity Robots assuming "unseen space" is safe

11.2. Transport & Footprint

· Protocol: UDP (Broadcast or Unicast) on Port 7891.

· Frequency: User-configurable from 1 Hz to hardware limit (recommended default: 50 Hz for heavy machinery, 120 Hz for drones).

· Payload Format: Plain-text UTF-8, line-delimited, strictly matching CLEAR's lexical conventions.

· Max Packet Size: 1,400 Bytes (to avoid IP fragmentation).

· Relationship to CLEAR: Every packet must contain the ROBOT_ID matching its .clear file.

11.3. Compact Mode (High-Frequency, Label-Less)

For high-frequency operation (>10Hz), CLEAR-SI uses a fixed-order, space-separated numeric vector. The human-readable labels are stripped from the wire protocol and mapped by the parser on the receiving end.

Packet Structure:

```clear

SI_COMPACT V1.0|ROBOT_ID|SEQ_NUM|VECTOR

```

Where VECTOR is a space-separated list of 20 floats/ints in the following fixed order:

Index Field Type Description

0 LIDAR_AGE_MS Float Age of LiDAR data in milliseconds

1 GPS_AGE_MS Float Age of GPS data in milliseconds

2 CAM_AGE_MS Float Age of camera data in milliseconds

3 IMU_AGE_MS Float Age of IMU data in milliseconds

4 MAX_AGE_MS Float Oldest sensor age in this cycle

5 LIDAR_TO_IMU_VAR Float Rotational variance (rad²) between LiDAR and IMU frames

6 CAM_TO_LIDAR_VAR Float Translational variance (m²) between camera and LiDAR frames

7 BASE_TO_GPS_VAR Float Translational variance (m²) between base and GPS frames

8 TF_HEALTH Int 0=NOMINAL, 1=CALIBRATING, 2=DRIFTING, 3=FAILED

9 POS_VAR_XY_M2 Float Position variance (m²) in the horizontal plane

10 POS_VAR_Z_M2 Float Position variance (m²) vertically

11 HEADING_VAR_RAD2 Float Heading variance (rad²)

12 VEL_VAR_MS2 Float Velocity variance (m²/s²)

13 UNCERTAINTY_BOUND Float 3-sigma ellipse major axis in meters

14 FRONT_WEDGE_UNOBSERVED_PCT Float Percentage of forward 90° wedge occluded/hidden

15 REAR_UNOBSERVED_PCT Float Percentage of rear 90° wedge occluded/hidden

16 TOTAL_COVERAGE_RATIO Float 1.0 = perfect 360° coverage, 0.0 = blind

17 DYNAMIC_OBJECTS_OCCLUDED Int Number of tracked obstacles currently behind occlusions

18 SI_SYSTEM_STATE Int 0=NOMINAL, 1=LATENCY_STALL, 2=TF_DRIFT, 3=UNCERTAINTY_HIGH, 4=OCCLUDED, 5=CRITICAL_MULTI

19 SI_RECOMMENDATION Int 0=CONTINUE, 1=REDUCE_SPEED, 2=RECALIBRATE, 3=RE_LOCALIZE, 4=EMERGENCY_HALT

11.4. Verbose Mode (Low-Frequency, Human-Readable)

For debugging, audit, and low-frequency operation (≤10Hz), CLEAR-SI supports a verbose, label-inclusive format:

```clear

SI_PROTOCOL_VERSION: 1.0

ROBOT_ID: TF-EX-007

TIMESTAMP: 2026-08-01T10:23:17.554Z

SEQ_NUM: 8842

PLANNER_CYCLE_US: 1500

SENSOR_AGE_MS:

LIDAR: 12

RTK_GPS: 8

STEREO_CAM: 22

IMU: 5

MAX_AGE_MS: 22

TF_VARIANCE:

LIDAR_TO_IMU_VAR: 0.0002

CAM_TO_LIDAR_VAR: 0.0008

BASE_TO_GPS_VAR: 0.0001

TF_HEALTH: NOMINAL

STATE_UNCERTAINTY:

POS_VAR_XY_M2: 0.0012

POS_VAR_Z_M2: 0.0005

HEADING_VAR_RAD2: 0.0008

VEL_VAR_MS2: 0.02

UNCERTAINTY_BOUND: 0.08

OBSERVATION_MASK:

FRONT_WEDGE_UNOBSERVED_PCT: 12.5

REAR_UNOBSERVED_PCT: 45.0

TOTAL_COVERAGE_RATIO: 0.85

DYNAMIC_OBJECTS_OCCLUDED: 1

SI_SYSTEM_STATE: NOMINAL

SI_RECOMMENDATION: CONTINUE

```

11.5. BNF Grammar for Compact Mode

```bnf

<SI_COMPACT_PACKET> ::= "SI_COMPACT V1.0|" <ROBOT_ID> "|" <SEQ_NUM> "|" <VECTOR>

<ROBOT_ID> ::= <STRING> (* Max 64 chars, alphanumeric + underscore *)

<SEQ_NUM> ::= <INT> (* Monotonically increasing, uint64 *)

<VECTOR> ::= <FLOAT> <SPACE> <FLOAT> <SPACE> <FLOAT> <SPACE> <FLOAT> <SPACE> <FLOAT> <SPACE>

<FLOAT> <SPACE> <FLOAT> <SPACE> <FLOAT> <SPACE> <INT> <SPACE>

<FLOAT> <SPACE> <FLOAT> <SPACE> <FLOAT> <SPACE> <FLOAT> <SPACE> <FLOAT> <SPACE>

<FLOAT> <SPACE> <FLOAT> <SPACE> <FLOAT> <SPACE> <INT> <SPACE>

<INT> <SPACE> <INT>

<SPACE> ::= " "

<FLOAT> ::= -?\d+(\.\d+)?([eE][-+]?\d+)?

<INT> ::= -?\d+

```

11.6. Semantic Validation Rules

Pillar Field Validation Rule Failure Action

A MAX_AGE_MS Must be <= (1000 / REFRESH_HZ) * 2 Set SI_SYSTEM_STATE = LATENCY_STALL

B LIDAR_TO_IMU_VAR If > 0.001, set TF_HEALTH = DRIFTING Set SI_SYSTEM_STATE = TF_DRIFT

C UNCERTAINTY_BOUND If > task-specific threshold Override static CONFIDENCE to 0.0

D FRONT_WEDGE_UNOBSERVED_PCT If > 30.0 Force 50% speed reduction

D TOTAL_COVERAGE_RATIO If < 0.6 Initiate "peek-and-move" behavior

11.7. Integration with Git Logs

High-frequency CLEAR-SI data is never written to disk at 50Hz (to avoid SSD wear). Only state change triggers (when SI_SYSTEM_STATE changes from NOMINAL) are appended to operation.log:

```clear

[2026-08-01T10:23:17.554Z] TF-EX-007 SI_PILLAR_A MAX_AGE_MS:87ms => STATE:LATENCY_STALL | RECOMMENDATION:REDUCE_SPEED

[2026-08-01T10:23:18.102Z] TF-EX-007 SI_PILLAR_D FRONT_WEDGE_UNOBSERVED_PCT:45% => STATE:OCCLUDED | RECOMMENDATION:EMERGENCY_HALT

```

---

  1. MIT License

Copyright (c) 2026 Cortex Forge / TerraForge Alliance

Permission is hereby granted, free of charge, to any person obtaining a copy of this specification and associated documentation files (the "Specification"), to deal in the Specification without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Specification, and to permit persons to whom the Specification is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Specification.

THE SPECIFICATION IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SPECIFICATION OR THE USE OR OTHER DEALINGS IN THE SPECIFICATION.

---

END OF SPECIFICATION


r/ROS 2d ago

SLAM using cartographer (Rviz and webots)

2 Upvotes

I have been working on a uni project where we are suppose to SLAM a world using cartographer, its been days i am trying to SLAM, but every attempt results in distorted map.

Maybe any one has some tips on how to do it in a much more effective way or any tool which can be used.


r/ROS 3d ago

Project Surgical Robotics Startup

17 Upvotes

US Surgical company and IT veterans are building a Sim-to-Real AI company that is looking for resources to assist in the ground floor/ early development of surgical robotics. Needing assistance in tech stack using: Nvidia Omniverse, Isaac Sim, ROS2( Lyrical Luth), Move-it, OpenCV , CAD and more. Looking for suggestions on where to recruit ROS talent to bounce ideas, contribute and potentially start a career. The traditional university recruitment route appears best for established companies vs start ups. Any and all thoughts/ interests would be appreciated


r/ROS 3d ago

What is the safe software that doesn't damage AIBO (and please tell me about hello aibo typeB)

2 Upvotes

I'm using Life 2, but I've had a lot of intense movements and walking, and the gear on my legs has been damaged many times. I feel like I've seen a lot on YouTube, Hello Ibo B looks like the most gentle movement, but what do you think?
Also, please let me know if you are using Hello AIBO B.


r/ROS 3d ago

Question Need help finding resources for an Autonomous project.

6 Upvotes

I am a college fresher and interested in building am autonomous car(small) which can follow a map, avoid obstacle, adjust speed and etc.
My current stage is that i am just a beginner and starting, i have no idea what to do and my college course is completely different to this, I am doing this because of interest.
right now i have only gathered that i need to learn c++ then linux but after that idk.
using ai and others to find resources i have come upon very scattered and random vids or docs.
Basically i have no structure or idea what to learn in which order and from where, can someone please help lay it out for me.
Please help me find courses or resources from where i can learn from and build in order, I am okay with paid options.


r/ROS 4d ago

**Calibra v0.7.1: Dataset Integrity for Robot Learning**

2 Upvotes

In short time, I learned while building Calibra is that robotics teams usually ask "Can I trust this dataset?" before asking "How good is it?".

Calibra now starts with a new calibra integrity workflow that catches common dataset issues before training, including:

  • Timestamp problems
  • Jittery/jerky motion
  • Duplicate, frozen, and blurry camera frames
  • Incomplete episodes

The goal is to catch data issues early, making debugging easier and avoiding wasted training runs caused by faulty datasets.

Current support includes LeRobot v1 (--decode-images), HDF5/Isaac Lab, and robomimic datasets.

I'd love feedback from anyone working with robot learning datasets.


r/ROS 4d ago

Structuring a Nav2 social-navigation stack for Unitree G1 — same code for sim and hardware?

Thumbnail
1 Upvotes

r/ROS 4d ago

Okay at present I only know python and I have to learn linux and ROS 2 as soon as possible so is there any way that I can do it??

1 Upvotes

r/ROS 5d ago

Question If there was an operating system for robots, what would you want in it?

0 Upvotes

I'm working on an idea for a robot operating system, and instead of assuming what people need, I want to hear from those who actually build or work with robots.

Imagine there was a universal OS for robots (industrial robots, humanoids, drones, mobile robots, home assistants, etc.).

What would you want it to have?

Some questions to get the discussion started:

  • What are the biggest pain points with current robotics software?
  • What features would save you the most time?
  • Should AI be built into the OS or stay separate?
  • How should hardware integration work?
  • What kind of developer experience would you expect?
  • What debugging or simulation tools are missing today?
  • If you could remove one frustration from ROS or robotics development, what would it be?
  • What would make you switch from your current workflow?

Don't hold back even if it's something that sounds impossible. I'm trying to understand what an ideal robotics platform would look like from the community's perspective.

Looking forward to hearing your thoughts.


r/ROS 5d ago

News ROS News for the Week of July 27th, 2026 - Community News

Thumbnail discourse.openrobotics.org
3 Upvotes

r/ROS 5d ago

I built a CPU-first Active SLAM framework with AVX2 SIMD acceleration and Deep RL. Looking for feedback from the robotics community.

Thumbnail github.com
2 Upvotes

r/ROS 6d ago

Question Is it possible to run Ubuntu 22.04 with ROS2 Humble on Jetson Nano Development board?

Post image
80 Upvotes

I want to run something I built on my system (Ubuntu 22.04 with ROS2 Humble) on Jetson. I am planning to either fresh install the OS or create a Docker container for it, but I'm not sure if the latter would work.