[Documentation] [TitleIndex] [WordIndex

Planet ROS

Planet ROS - http://planet.ros.org

Planet ROS - http://planet.ros.org[WWW] http://planet.ros.org


ROS Discourse General: Experimental order-sensitive consistency residual for Odometry/TF streams — minimal C++ reproducer

I briefly mentioned an order-sensitive state diagnostic in another thread, but that was the wrong place for it. Posting it separately here with an executable reproducer.

The idea is simple: three consecutive pose samples in, one scalar residual out. It quantifies how much the result shifts when you change the nesting order of state composition.

Synthetic test results:

This is absolutely not a validated anomaly detector yet. Normalization, frame conventions and real-world thresholds all need work.

No ROS, Eigen, or external dependencies required to run the reproducer.

#include <cmath>
#include <iostream>

struct Q { double w,x,y,z; };
Q qc(Q q){ return {q.w,-q.x,-q.y,-q.z}; }
Q qm(Q a,Q b){ return {
  a.w*b.w-a.x*b.x-a.y*b.y-a.z*b.z,
  a.w*b.x+a.x*b.w+a.y*b.z-a.z*b.y,
  a.w*b.y-a.x*b.z+a.y*b.w+a.z*b.x,
  a.w*b.z+a.x*b.y-a.y*b.x+a.z*b.w}; }
Q add(Q a,Q b){ return {a.w+b.w,a.x+b.x,a.y+b.y,a.z+b.z}; }
Q sub(Q a,Q b){ return {a.w-b.w,a.x-b.x,a.y-b.y,a.z-b.z}; }

struct State8 { Q a,b; };
State8 compose(State8 x, State8 y) {
  return {sub(qm(x.a,y.a), qm(qc(y.b),x.b)),
          add(qm(y.b,x.a), qm(x.b,qc(y.a)))};
}

struct Pose { double x,y,z,qw,qx,qy,qz; };
State8 encode(Pose p) {
  return {{p.qw,p.qx,p.qy,p.qz},{p.x,p.y,p.z,0.0}};
}

double order_sensitive_residual(Pose A,Pose B,Pose C) {
  State8 x=compose(compose(encode(A),encode(B)),encode(C));
  State8 y=compose(encode(A),compose(encode(B),encode(C)));
  double d[8]={x.a.w-y.a.w,x.a.x-y.a.x,x.a.y-y.a.y,x.a.z-y.a.z,
               x.b.w-y.b.w,x.b.x-y.b.x,x.b.y-y.b.y,x.b.z-y.b.z};
  double s=0; for(double v:d) s+=v*v;
  return std::sqrt(s);
}

int main() {
  Pose a{.1,.001,0,.99875026,0,0,.04997917};
  Pose b{.2,.004,0,.99500417,0,0,.09983342};
  Pose c{.3,.009,0,.98877108,0,0,.14943813};

  std::cout << "smooth: " << order_sensitive_residual(a,b,c) << '\n';

  c.z=2.0; c.qw=.92106099; c.qx=.38941834; c.qy=c.qz=0;
  std::cout << "jump:   " << order_sensitive_residual(a,b,c) << '\n';
}

1 post - 1 participant

Read full topic

[WWW] https://discourse.openrobotics.org/t/experimental-order-sensitive-consistency-residual-for-odometry-tf-streams-minimal-c-reproducer/57232

ROS Discourse General: [GSoC 2026] ROS 2 Client Library Performance Monitoring: Midterm Progress Update

Organization: OSRF
Contributor: Ammaar Ahmed (GitHub, LinkedIn)
Mentors: Kimberly McGuire (GitHub) and Skyler Medeiros (GitHub)
GSoC project: ROS 2 Client Library Performance Monitoring
Repository: ros2-performance-monitoring
Live dashboard: performance.ammaar.lol

Hello everyone,

I am Ammaar Ahmed. I am pursuing a bachelor’s degree in Robotics and Automation Engineering at FAST NUCES Islamabad, Pakistan. My interest in ROS began about a year and a half ago, when I started building robots with ROS running on raspberry pi.

This summer I have been working on ROS 2 client library performance monitoring with OSRF, with guidance from Kimberly McGuire and Skyler Medeiros. The project is still in progress, but its main workflow now works from benchmark execution to a public dashboard. I wanted to share what it does, what has been completed, and what I plan to improve during the rest of the GSoC period.

Why this project exists

ROS 2 gives developers several choices for how an application communicates and runs. These include different client libraries, middleware implementations, executors, communication modes, and process layouts. These choices are useful because robots have different needs, but they also make performance difficult to compare.

A change that works well for small messages may behave differently with large messages. Results can also change when nodes move from one process to several processes. Looking at one number without knowing how it was produced can therefore give the wrong impression.

ROS 2 benchmark tools already produce detailed measurements, but their output is spread across many files and test scenarios. Reading those files by hand makes it difficult to answer common questions:

This project connects benchmark execution, result processing, and visualization. Its purpose is to make the results easier to reproduce, compare, and understand.

Current Status and Workflow

The project provides a CLI workflow for running a reduced rclcpp benchmark matrix. It covers publish/subscribe communication, client/service calls, multiple message sizes, middleware implementations, communication modes, and both single-process and multi-process layouts.

The ros2-performance-monitoring run command executes the supported benchmark suite and converts the raw benchmark outputs into a consistent JSONL format. The dashboard up command launches local Prometheus and Grafana services for interactive analysis. Docker and the Docker Compose plugin are required. The project also supports container and image reuse, CPU pinning, alternative ROS distributions, separate Pub/Sub or service suites, and additional configuration options described in the README.md.

The workflow is:

Run a ROS 2 benchmark

        ↓

Collect benchmark results

        ↓

Normalize measurements

        ↓

Compare runs in the dashboard

The dashboard helps answer both what changed and why it changed . The default view compares two benchmark runs, summarizes the overall result, and highlights the metrics that deserve attention. The manual explorer lets you compare one exact workload by matching the same topology, middleware, communication mode, payload size, and process layout on both sides. A coverage view checks whether two runs contain the same tests before comparing them.

The dashboard displays latency, throughput, CPU usage, memory usage, and message reliability where available. It also preserves benchmark metadata including the ROS distribution, middleware, executor, benchmark commit, client library source, hardware platform, payload size, and process layout.

Default comparison view

Figure X. Default dashboard comparing the median Jazzy and median Lyrical benchmark runs.

Manual explorer

Figure Y. Manual explorer showing matching benchmark configurations for detailed investigation.

The public dashboard currently contains five Jazzy runs, five Lyrical runs, and one median summary for each distribution. Every benchmark in the supported matrix runs for 60 seconds. Containers are pinned to the same physical performance cores, and the Jazzy and Lyrical run order is alternated to reduce scheduling and thermal bias. The median summaries provide the primary comparison, while the individual runs remain available to inspect run-to-run variation. Results are published only after the full dataset has been validated.

The complete workflow from running benchmarks to exploring comparisons is working locally, and the dashboard is publicly available at performance.ammaar.lol. Current work focuses on improving repeated run summaries and handling incomplete upstream benchmark data.

I would like to thank Kimberly McGuire and Skyler Medeiros for their guidance, careful reviews, and feedback throughout the project. I am also grateful to OSRF, the ROS community, and everyone who answered questions and made me feel welcome in the community.

Work completed so far

Work remaining

There is still time left in the GSoC period. The main remaining work is:

Support for rclpy, hosted automation, CI benchmarking, hosting under performance.ros2.org and a small local graphical launcher are possible stretch or post GSoC efforts. The CLI workflow would remain the main implementation so the project stays scriptable and reproducible.

I would value your feedback

If you work with ROS 2 performance, maintain a client library or middleware implementation, or are simply curious about how two ROS versions compare, please try the public dashboard. I would especially like to know whether the overall result makes sense without prior benchmark knowledge, whether you can find the scenario behind a warning, and what information would help you trust or question a comparison.

Feedback from both experienced ROS developers and people seeing these measurements for the first time would be very useful and appreciated from the depths of my heart. Thanks for reading.

1 post - 1 participant

Read full topic

[WWW] https://discourse.openrobotics.org/t/gsoc-2026-ros-2-client-library-performance-monitoring-midterm-progress-update/57204

ROS Industrial: From URDF to SimReady: What a Robotiq Gripper Taught Us About Simulation Assets

For industrial robotics teams, simulation is useful only when the important parts of the simulated system behave enough like the real system to support better engineering decisions. A robot arm that looks right but reaches to the wrong pose is an obvious problem. A gripper that looks right but responds differently during contact can be harder to notice, and in manipulation work it may matter even more.

At Southwest Research Institute, we have been developing and evaluating Physical AI approaches for high-mix manipulation. The broader effort combines teach-through-demonstration with simulation, with the goal of supplementing demonstrations through reinforcement learning. Our lab setup includes Universal Robots UR5e arms and Robotiq 2F-85 grippers. The full workcell matters, but the gripper became the clearest example of a practical problem many robotics teams are beginning to face: the asset that is available is rarely the same thing as the asset that is ready for production-oriented simulation.

Isaac Sim representation of the lab system

Photograph of the lab setup

The first problem: available assets are not automatically usable assets

A common starting point in a simulation project is to use the assets that are already available in the simulator or in the ROS ecosystem. That was our starting point as well. Isaac Sim includes Robotiq gripper assets, and there are public Robotiq-related resources in the ROS and ROS 2 ecosystem. Those resources are valuable, but in our testing they did not immediately give us the behavior we needed.

The issues were not cosmetic. We encountered practical asset-structure and behavior problems, including difficulty restructuring an articulation root, gripper assets that were not instanceable, and contact behavior that failed when a mimic joint encountered an object asymmetrically at one finger pad. Each of those issues matters in a production-oriented simulation workflow.

For readers who do not spend their day in USD internals, an “instanceable” asset is one that can be referenced and reused cleanly rather than copied and manually modified each time. That matters when a simulated workcell becomes more complex or when the same asset must appear in many scenes. A “mimic joint” is a joint whose motion follows another joint. For a mechanically coupled gripper, mimic behavior can be the right abstraction because the physical hardware is not simply two independent fingers driven by unrelated commands.

That distinction is central to the Robotiq 2F-85.

Why the Robotiq 2F-85 is a useful test case

The Robotiq 2F-85 is a parallel gripper, but its mechanism is not as simple as two independent pads moving toward each other. It includes closed-loop mechanical behavior, which creates challenges for simulation asset authoring. The practical modeling decision becomes: should the gripper be represented with one driven joint and mimic behavior, or should both sides be driven independently?

A single driven joint with mimic behavior is attractive because it better reflects how the gripper is normally commanded. Driving both sides independently can make an asset move in simulation, but it introduces extra controller and joint-state complexity and moves the simulation farther away from the real gripper abstraction. We evaluated that path by importing a URDF into USD and adding drives to both sides. For our purposes, that direction created more complexity than value, and it likely would still have required mimic behavior to represent the coupled mechanism faithfully.

NVIDIA’s Isaac Sim documentation includes a tutorial on rigging closed-loop structures using a Robotiq 2F-85 gripper, and that tutorial points to a workflow that starts from a CAD/Onshape representation and then adds the physics, joint, and drive configuration needed to make the asset functional in Isaac Sim. That detail is important: import is only the beginning. A realistic gripper asset still needs careful authoring and validation.

What we tried from the ROS ecosystem

After our initial asset testing, we reviewed several public resources related to Robotiq grippers, including the older ROS-Industrial Robotiq repository, PickNik’s ros2_robotiq_gripper, and UW-Lab resources and assets. It’s worth noting that Robotiq does not currently provide first-party assets for its grippers; all of the resources we tested are community-maintained.

The best-performing candidate in our lab testing was the UW-Lab calibrated USD asset for the Robotiq 2F-85. That asset appears to follow the same general pattern as the Isaac Sim closed-loop structure workflow, with additional modifications. Out of the box, it behaved better than the other candidates we tested. Even though it uses mimic behavior, it did not break when an object contacted one finger before the other, and we did not observe the unexpected mesh behavior we saw elsewhere when larger forces were applied.

Simulated Robotiq 2F-85 mounted on the UR arm

That made the UW-Lab asset a much better starting point. It did not make the problem disappear.

The remaining fidelity gap

The physical Robotiq 2F-85 still exhibited behavior that the simulation did not capture. In the real gripper, when an object is grasped near the base-side region of the finger pads, the pads can angle inward slightly. When the object is grasped farther out on the pads, the pads remain parallel.

In our simulation, that behavior was not represented. The simulated kinematics and physics did not capture the same pad motion we observed on the physical gripper.

Physical Robotiq 2F-85 on the lab robot

That may sound like a small difference. In manipulation, small differences at the contact interface can become large differences in outcome. A grasping policy trained or validated in simulation is sensitive to contact geometry, friction, compliance, joint coupling, and failure modes. A gripper asset that works for visualization may still be insufficient for reinforcement learning, synthetic data generation, or pre-deployment validation.

The broader lesson: conversion is not fidelity

ROS users tend to start with URDF, and for good reason. URDF is familiar, widely supported, and often the most available robot description format for ROS-based systems. SDF is also common in simulation workflows. USD and OpenUSD offer a powerful scene representation for modern simulation and digital-twin workflows. But moving from URDF or SDF to USD does not automatically create the physical and behavioral information needed for high-fidelity simulation.

A converter can translate what is present. It cannot reliably invent what is missing.

That is where the SimReady idea is useful. NVIDIA describes SimReady as more than placing simulation data into a USD file. The goal is to represent simulation-ready content through named, typed, validated properties that tools can interpret, validate, and use. In NVIDIA’s broader description, SimReady assets include physics properties, semantic labels, material attributes, and, where needed, behavioral or articulation data.

For robotics teams, that framing exposes the real gap. A useful production asset is not merely a mesh. It is not merely a URDF. It is not merely a USD file. It is a validated representation of geometry, kinematics, dynamics, contacts, materials, semantics, and control-relevant behavior at the level required by the task.

Practical takeaways for robotics teams

First, validate assets against the behavior that matters for the application. Loading the asset, moving the joints, and rendering the workcell are necessary checks, but they are not enough. For manipulation, validation should include contact cases, asymmetric grasps, edge grasps, expected failure modes, verification of the mesh geometries, and comparisons against the physical hardware.

Second, choose the simulated command abstraction deliberately. For a mechanically coupled gripper, independent finger drives may be convenient during asset authoring, but they may also create a mismatch with the real system. If the physical gripper is commanded as a coupled mechanism, the simulation should preserve that abstraction unless there is a clear reason to do otherwise.

Third, track asset provenance and simulator version. Isaac Sim documentation, import workflows, asset structure, and tuning parameters can vary between versions. A gripper that behaves acceptably in one workflow may require different configuration in another. Asset source, simulator version, import method, and post-import modifications should be captured as part of the engineering record.

Fourth, treat conversion as the start of an asset-authoring workflow rather than the end. URDF-to-USD or SDF-to-USD conversion is valuable, but high-fidelity simulation still requires authoring, tuning, and validation. The missing information often lives with the equipment manufacturer or must be measured experimentally.

Finally, involve equipment manufacturers where possible. Manufacturers are often best positioned to provide richer kinematic, dynamic, material, and behavioral information about their products. The robotics community would benefit from a more standard way to move that information from manufacturer data into ROS-compatible descriptions, USD-based simulation assets, and validation tests.

Toward a better ROS-to-SimReady workflow

The Robotiq 2F-85 experience points to a larger opportunity for the ROS-Industrial, open-source robotics, simulation, AI, and equipment-manufacturer communities. We need workflows that preserve what ROS users already rely on while adding the physical and behavioral fidelity required by modern high-fidelity simulation.

A practical workflow could look something like this:

The important point is that “simulation ready” should become an engineering claim that can be tested, not a label applied because an asset loads in a simulator.

There are signs this is starting to happen. When we contacted Robotiq prior to publication, they indicated that “an official C++ SDK, ROS 2 driver, URDF and updated Isaac Sim assets are in active development.”

Conclusion

Our experience with the Robotiq 2F-85 was a reminder that the hard part of simulation is not always the robot arm, the environment, or the renderer. Sometimes the hard part is the contact behavior of a gripper pad at the exact point where the simulated world meets the physical one.

URDF, SDF, USD, and SimReady all have roles to play, but no single file format solves the fidelity problem by itself. For production robotics, a simulation asset earns trust only when it reproduces the behaviors that affect the task. The closer the ROS, simulation, AI, and equipment communities can align around that standard, the less time teams will spend rebuilding the same assets and the more confidence they can place in simulation before deploying to real hardware.

[WWW] https://rosindustrial.org/news/2026/7/23/from-urdf-to-simready-what-a-robotiq-gripper-taught-us-about-simulation-assets

ROS Discourse General: Last day to purchase regular price ROSCon Global tickets is Monday, August 24th

Hi Everyone,

Quick reminder, the last day to purchase regular price tickets for ROSCon Global in Toronto is Tue, Aug 25, 2026 6:59 AM UTC.

1 post - 1 participant

Read full topic

[WWW] https://discourse.openrobotics.org/t/last-day-to-purchase-regular-price-roscon-global-tickets-is-monday-august-24th/57162

ROS Discourse General: Announcing protoros2: use protobuf in ros2 without compromise

Hi ROS Community! :waving_hand:

For years, there has been a strong and consistent demand for seamless Protobuf serialization in ROS/ROS 2. While there are excellent existing tools in the community, integrating them cleanly into a high-performance, production-ready pipeline often comes with friction.

Today, we’re excited to introduce protoros2 — a middleware wrapper and orchestration engine designed to provide zero-intrusive protobuf support for ROS 2. ZhenshengLee/protoros2: use protobuf in ros2 without compromise

(The name is heavily inspired by the awesome flatros2 GitHub - Ekumen-OS/flatros2 · GitHub project!)

:rocket: What does protoros2 do?

protoros2 does not reinvent the wheel. Instead, it acts as a non-intrusive “Tri-State Orchestration Engine” that elegantly binds third-party Open-Source foundations into a unified architecture. It allows you to use Protobuf in your stack without compromise.

It provides an out-of-the-box EnterpriseNode wrapper that offers multi-channel communication:

• Proto Channel (Zero-Intrusive Fast-Path): Transparently inspects the underlying RMW serialization format at runtime. If the RMW supports Protobuf natively, it routes messages directly via rclcpp::SerializedMessage. If not, it gracefully falls back to standard CDR via rclcpp::TypeAdapter.
• Flat Channel (Performance Bonus): An optional bypass channel optimized for ultra-low latency IPC (powered by Iceoryx shared memory), fully adapted to the ROS 2 executor ecosystem.

:sparkles: Key Features & Use Cases

We designed protoros2 to be flexible enough to accommodate different team workflows, supporting multiple “Single Source of Truth” (SSOT) architectures seamlessly:

• Use Case A: Standard ROS 2 .msg as SSOT
Write your standard .msg files as usual. protoros2 works seamlessly with standard RMWs (CDR only) or native Protobuf RMWs without altering your application logic. In fallback modes, it can even handle simultaneous CDR and Protobuf topic ecosystems flawlessly.
• Use Case B: AI/Robotics .proto as SSOT
For AI-first teams, define your data structures natively in .proto. protoros2 can either co-exist with a generated mirror IDL or operate purely on .proto, bypassing .msg entirely for a direct, zero-overhead binding.
• Native ROS 2 Executor Support:
Whether you prefer standard Callback Push, WaitSets, CallbackGroups (Mutually Exclusive/Reentrant), Polling Subscribers, or Intra-Process Comm—protoros2 natively integrates these paradigms out of the box.
• MLOps Ecosystem Ready:
Full compatibility with mcap format and rosbag2 plugins. Data scientists can consume protobuf bags directly with native python bindings.

:shield: Enterprise Security Built-in

To ensure consistency in large-scale deployments, protoros2 utilizes strict C++ access controls to safely encapsulate the raw rclcpp::Node. It intercepts and disables risky dynamic ROS 2 configurations (like parameter services and QoS overriding) at compile time, guaranteeing predictable behavior on the vehicle edge without sacrificing the standard ROS 2 developer experience.

:folded_hands: Acknowledgement

This work stands on the shoulders of giants. We want to express our deepest gratitude to the following incredible projects and their contributors, without which protoros2 would not have been possible:

• rosidl_typesupport_protobuf https://github.com/eclipse-ecal/rosidl_typesupport_protobuf: For providing the robust C++ TypeSupport handle and TypeAdapter generation engine.
• proto2ros https://github.com/rai-opensource/proto2ros: For the brilliant AST parser bridging .proto definitions to synthetic IDL .msg.
• ros-central-registry https://github.com/intrinsic-opensource/ros-central-registry/blob/main/examples: For the excellent Bazel + ROS 2 integration examples and Protobuf C++ references.

2 posts - 2 participants

Read full topic

[WWW] https://discourse.openrobotics.org/t/announcing-protoros2-use-protobuf-in-ros2-without-compromise/57152

ROS Discourse General: Boston Robot Hackers announces August Monthly Meeting

Boston Robot Hackers is pleased share info about our August meeting:

Topic: Forward & Inverse Kinematics: The Math: From joint angles to end-effector poses"
Speaker: Shivam Chopra, PhD
Date: August 6 2026
Time: 7:00pm to 9:00pm
Location: Artisans Asylum, Alston, Boston

Shivam will introduce the concepts of Forward and Inverse Kinematics, explain where it fits into robotics (and how important it is!) and get into technical details of how to apply it and how the math works.

Also featured two lighting talks

PLEASE REGISER! brh.eventbrite.com

1 post - 1 participant

Read full topic

[WWW] https://discourse.openrobotics.org/t/boston-robot-hackers-announces-august-monthly-meeting/57148

ROS Discourse General: ADEL 2.0 – C++/Rust Deterministic Execution Layer for Microsecond Edge Compute & Robotics

Hi ROS Community!

We are opening early-access evaluations for ADEL 2.0 (Autonomous Deterministic Executive Layer), a bare-metal C++/Rust execution engine built for ultra-low latency, zero-jitter control loops.

While designed for microsecond satellite maneuver planning under severe compute bounds, ADEL 2.0 provides immediate utility for terrestrial robotics, BVLOS drone flight controllers, and autonomous hardware running ROS/ROS2 node topologies.

Key Highlights:

Interactive Monitor & Visualizer:

We are actively scheduling 15-day to 30-day Hardware-in-the-Loop (HIL) benchmarking pilots with robotics hardware teams and autonomous system integrators.

Feel free to test the live monitor above or reach out at annesham649@gmail.com if you’d like to benchmark ADEL 2.0 against your current ROS control stack!

1 post - 2 participants

Read full topic

[WWW] https://discourse.openrobotics.org/t/adel-2-0-c-rust-deterministic-execution-layer-for-microsecond-edge-compute-robotics/57134

ROS Discourse General: ROS 2 Realtime Support Package

We have been working on adding real-time functionality to rcl and rclcpp since 2022.
In response to this proposal, we have created a new package that provides real-time functionality without changing the existing packages.

esol-community/ros2_realtime_support

Background

The previous discussion is as follows: ROS lacks a unified mechanism to formally support real-time functionality, and we have tried to achieve this by adding functionality to rcl and rclcpp.

On the other hand, it has been pointed out in past PTCs that it makes it difficult to check at release time and to support the OS.
Since CallbackIsolatedExecutor was announced around the same time, we have also changed our policy to provide functionality in separate packages.

Update REP-2017 prototype and executor using OS native threads - ROS/ROS General - Open Robotics Discourse

How to use

For now, we provide rclcpp-friendly classes. There are four things to do:

  1. Add package description to CMakeLists.txt and package.xml
  2. Add a configuration file in YAML format
  3. Change the main routine in the source file
    • Change rclcpp::init, rclcpp::shutdown to the rclcpp_realtime namespace
    • Change executors to be able to apply thread attributes provided by rclcpp_realtime

This allows thread attribute settings to be applied to executors by specifying an environment variable or a configuration file with --ros-args.
See the README below for details.

ros2_realtime_support/examples_rclcpp_realtime/README.md at rolling · esol-community/ros2_realtime_support

Discussion & Future Work

Despite the name, real-time support, not much has been done.
The thread attributes can be managed through the extended rcl interfaces; APIs for thread operations, abstracted by these attributes, are provided, and executors that use the attributes have been added.

In the future, we will change the mutexes and condition variables used in rclcpp_realtime on an RTOS to call OS-native APIs.
Another challenge is to make intra-process communication real-time, so we can guarantee real-time performance in robot systems that run on a single PC.

1 post - 1 participant

Read full topic

[WWW] https://discourse.openrobotics.org/t/ros-2-realtime-support-package/57113

ROS Discourse General: Uv on ROS 2: a field report on workspace-level virtual environments — five failure modes and minimal colcon/ament proposals

TL;DR: A workspace-level uv-managed venv works on stock apt-installed ROS 2 — including a PyTorch+CUDA node — but we hit five reproducible failure modes on the way (verified on Jazzy; none of the mechanisms are Jazzy-specific). Key measurement: the known shebang workaround ([build_scripts] executable = /usr/bin/env python3) does not cover --symlink-install, so when colcon is launched from the system Python there is currently no complete workaround. Below are four minimal change proposals for colcon/ament — all opt-in, none fixing the venv’s location or name, with no behavior change for workspaces that do not use a venv.

Background

PEP 668 disabled pip install into the system Python on Ubuntu 24.04, and deep-learning robotics often needs exact version pins and custom package indexes (e.g. torch==2.6.0+cu124) that package.xml/rosdep currently has no way to declare. A per-workspace virtual environment with pyproject.toml and a lockfile — managed here with uv — is one practical answer. In Letting Python Be Python, the idea that workspaces could become venvs was raised, along with the question of what it would take to get there; Status of Colcon building “standards-based” Python packages covers the related build-tool work. This post adds empirical data to that discussion: we migrated a real robot stack to uv while keeping colcon, ros2 run, and ros2 launch in use, and recorded what broke and why.

What works and what breaks

With a venv created by uv venv --system-site-packages from the distro interpreter, and python-preference = "only-system" set in the [tool.uv] section of pyproject.toml, everything builds and a torch+CUDA inference node runs on the venv’s Python, with lockfile reproducibility and custom wheel indexes.

Setup: Ubuntu 24.04 / apt Jazzy / Python 3.12.3 / setuptools 68.1.2 / uv 0.11.28, and pyproject.toml (click for more details)

Along the way we hit five reproducible failure modes. All of them can be worked around, but the workarounds are not covered by official documentation, so they are easy to rediscover independently:

# Failure mode Cause Current workaround
1 Every shell needs two setup steps (source install/setup.bash and venv activation), in order The ROS environment and the venv have no knowledge of each other Hand-written shell setup per project
2 colcon treats directories inside the venv as packages during discovery Package discovery descends into every subdirectory touch .venv/COLCON_IGNORE (documented)
3 ros2 run executes ament_python nodes with the system interpreter even while a venv is active colcon runs setup.py with its own sys.executable; setuptools writes that interpreter into console-script shebangs Incomplete — see next section (ros2/ros2#1094, open since 2021)
4 numpy 2.x in the venv breaks apt-built extensions (cv_bridge) at import Jazzy binaries are built against numpy 1.26’s C ABI Pin numpy<2 in the workspace
5 uv provisions its own standalone CPython, which mismatches distro-built C extensions uv’s default python-preference python-preference = "only-system" in pyproject.toml ([tool.uv])

The remaining gap

Four of the five have complete workarounds; #3 does not. A known mitigation is [build_scripts] executable = /usr/bin/env python3 in setup.cfg (mechanism related to colcon-core#183, reported in ros2/ros2#1094). We measured it on Jazzy:

Bottom line: when colcon is launched from the system Python — the common configuration in tutorials and CI — there is currently no complete workaround.

Proposed changes

One design principle for all four: opt-in, no fixed venv location or name, and no behavior change for workspaces that do not involve a venv.

Relation to existing work

Open questions

  1. For P1: would a package-identification extension in colcon-core, modeled on the existing COLCON_IGNORE one, be an acceptable shape — or would this fit better as a separately distributed extension package?
  2. For P2, which layer would be better suited to handle the develop-path shebang — colcon-core, or the setuptools develop machinery?
  3. For those running workspace-level venvs with colcon in CI or on production robots: which failure modes are missing from the list above (overlays, cross-compilation, non-Ubuntu platforms)?

16 posts - 6 participants

Read full topic

[WWW] https://discourse.openrobotics.org/t/uv-on-ros-2-a-field-report-on-workspace-level-virtual-environments-five-failure-modes-and-minimal-colcon-ament-proposals/57111

ROS Discourse General: VectorField Planner: 7 µs global path queries with strict optimality — REST API for occupancy grids, Nav2 plugin on roadmap

Hi all,

I’ve been working on a global planning engine aimed at warehouse/fleet
deployments, and I just opened a free API tier. I’d love feedback from people
running real Nav2 fleets.

What it does

You upload an occupancy grid once. It solves a field for your goal (charging
station, pick station, dock), and from then on every path query — from any
start cell — returns a strictly optimal path in microseconds, without
re-searching the map.

The pitch for fleet operators: the cost of global planning stops scaling with
the number of robots.

Measured numbers (C++ core, single thread, low-end 2-core CPU)

1M-cell 3D warehouse map (100³, mezzanine floors + rack walls):

Metric VectorField A* (C++, typical)
One-time solve per goal 47 ms
Query, any start pose 7 µs ~5 ms, every query
Optimality 1.0000 (BFS-verified) optimal
Peak memory 5 MB
10,000 simultaneous queries 70 ms total ~50 s

Dynamic sites: obstacle removal (cleared shelves, opened gates) is patched
exactly, 5.9× faster than a rebuild, zero error. Every solve is a fixed,
bounded number of identical array operations, so worst-case latency is known
in advance — relevant if you need timing guarantees for certification.

Where this fits in a ROS stack

Typical integration I’m picturing: your fleet manager uploads the map once per
shift (or per layout change), then every robot’s global plan request is a
~7 µs lookup instead of a Navfn re-search.

Honest limitations

Links

Questions I’d especially love feedback on:

  1. For those running multi-robot fleets: how do you handle global replanning
    cost today? Is 5 ms/query/robot actually hurting you, or is local planning
    the real bottleneck?
  2. What would a Nav2 plugin need to do for you to consider it (topic/action
    interface, costmap update cadence, multi-goal support)?
  3. Any interest in an on-prem / offline deployment for sites without
    connectivity?

5 posts - 3 participants

Read full topic

[WWW] https://discourse.openrobotics.org/t/vectorfield-planner-7-s-global-path-queries-with-strict-optimality-rest-api-for-occupancy-grids-nav2-plugin-on-roadmap/57094

ROS Discourse General: A new tool to create ros2 package with executables, c++ and Python node in one package

site: GitHub - yjphhw/ros2_pkg_create: A utility script for generating ROS 2 package templates that support both C++ and Python nodes, simplifying mixed-language development within a single package. · GitHub

useage is very easy, just download the ros2_pkg_create.py and put in a workspace(direction),

and run :slight_smile:

python3 ros2_pkg_create <package_name>

such as create demo_pkg:

python3 ros2_pkg_create demo_pkg

output is :

:rocket: 正在生成混合功能包: my_pkg
:white_check_mark: 已创建: src/my_pkg/CMakeLists.txt
:white_check_mark: 已创建: src/my_pkg/package.xml
:white_check_mark: 已创建: src/my_pkg/setup.cfg
:white_check_mark: 已创建: src/my_pkg/LICENSE
:white_check_mark: 已创建: src/my_pkg/src/hello_world.cpp
:white_check_mark: 已创建目录: src/my_pkg/include/my_pkg/
:white_check_mark: 已创建: src/my_pkg/src/script_node.py
:white_check_mark: 已创建: src/my_pkg/my_pkg/init.py
:white_check_mark: 已创建: src/my_pkg/my_pkg/py_node.py

:tada: 功能包 [my_pkg] 生成完毕!
:light_bulb: 提示: 记得在 CMakeLists.txt 中根据需要补充依赖项。

按照以下步骤进行下一步操作:
:light_bulb: 1.编译功能包: colcon build --symlink-install --packages-select my_pkg
:light_bulb: 2.安装功能包: source install/setup.bash
:rocket: 3.测试可执行程序: hello_world
:rocket: 4.测试 C++节点: ros2 run my_pkg hello_world
:rocket: 5.测试 Python 节点: ros2 run my_pkg script_node
:rocket: 6.测试 Python 模块: ros2 run my_pkg my_py_node

follow the instructions in output, you can build and run package in one minute.

you will get a ros2 pkg template, you can easily add C++ , Python and normal executable.

welcom to Star the project: GitHub - yjphhw/ros2_pkg_create: A utility script for generating ROS 2 package templates that support both C++ and Python nodes, simplifying mixed-language development within a single package. · GitHub

1 post - 1 participant

Read full topic

[WWW] https://discourse.openrobotics.org/t/a-new-tool-to-create-ros2-package-with-executables-c-and-python-node-in-one-package/57089

ROS Discourse General: How do you understand the architecture of a large ROS 2 workspace?

Hi everyone,

I’m curious about how other ROS 2 developers approach understanding a large or unfamiliar workspace.

When joining an existing project or reviewing a large codebase, I often find myself asking questions like:

I’m interested in learning about your workflow.

For example:

I’m particularly interested in workflows for medium-to-large industrial projects where a workspace may contain dozens (or even hundreds) of packages.

Looking forward to hearing how everyone approaches this problem and what has worked well in practice.

7 posts - 5 participants

Read full topic

[WWW] https://discourse.openrobotics.org/t/how-do-you-understand-the-architecture-of-a-large-ros-2-workspace/57075

ROS Discourse General: Jenkins version upgrade of build.ros2.org [Scheduled Buildfarm Downtime]

Hello ROS Community,

The OSRF Infrastructure Project is planning to update the Jenkins version of https://build.ros2.org as part of our ongoing efforts to maintain and improve the ROS buildfarm infrastructure. To facilitate this migration, the following services will experience downtime during the maintenance window:

The migration is scheduled to begin on Monday Mon, Aug 3, 2026 11:30 AM UTC (11:30 UTC) and is expected to last for 4 hours. During this time, the buildfarm will be offline, and all queued jobs will need to complete before Jenkins is taken offline.

Once the upgrade is complete, I’ll update this thread to confirm that services are back online. I’ll also be monitoring for any issues that may arise as a result of the upgrade.

Thank you for your patience as we work to improve the ROS buildfarm infrastructure. If you have any questions or concerns, please feel free to reach out in this thread.

Att,

Cristóbal

4 posts - 2 participants

Read full topic

[WWW] https://discourse.openrobotics.org/t/jenkins-version-upgrade-of-build-ros2-org-scheduled-buildfarm-downtime/57073

ROS Discourse General: Chinese legged/humanoids banned in USA, what are the alternatives?

Just saw that newly imported Chinese legged and humanoid robots are now banned in USA, what other alternatives are there? I know Unitree had ROS interface in both Go2 dog and G1 humanoid (and you could jailbreak cheap base version instead of expensive research one).

What other alternatives are there?
Will this spur open source/open hardware design?

Again, I’m adding poll of what legged/humanoid robots have you used/planned to use :down_arrow:

What legged/humanoid robots have you used/will use?

Click to view the poll.

4 posts - 2 participants

Read full topic

[WWW] https://discourse.openrobotics.org/t/chinese-legged-humanoids-banned-in-usa-what-are-the-alternatives/57040

ROS Discourse General: Learning Zenoh: A New Communication Layer for ROS 2

Hi everyone,

Recently, I’ve been learning more about Zenoh and its role in the ROS 2 ecosystem. Since most ROS 2 applications rely on DDS for communication, I was curious about how Zenoh approaches the same problem and where it can provide advantages.

From what I’ve learned so far, Zenoh offers a lightweight communication layer that aims to reduce latency, minimize bandwidth usage, and simplify communication across distributed systems. These characteristics make it particularly interesting for robots running on resource-constrained hardware such as the Raspberry Pi or for systems that need to communicate across different networks.

I’m currently developing a mobile robot called Pavlov Mini Wheel, based on ROS 2 Humble, and I’m planning to experiment with Zenoh for communication between the onboard Raspberry Pi and an external laptop running perception and navigation workloads. It seem like an interesting opportunity to compare its behavior with the default DDS-based setup.

This post is the first step in my exploraiton of Zenoh. Over the next few weeks, I plan to document:

If you’ve already used Zenoh in your projects, I’d be happy to hear about your experences, recommendations, or challenges you’ve encountered.

My article on the relevant topic:
Medium: https://medium.com/@bengokaysaglam/beyond-dds-introducing-zenoh-for-modern-ros-2-systems-1cacbfcc21f3

Looking forward to learning from the community!

3 posts - 2 participants

Read full topic

[WWW] https://discourse.openrobotics.org/t/learning-zenoh-a-new-communication-layer-for-ros-2/57014

ROS Discourse General: YERP + rosbag2 snapshot: can we capture why a ROS perception latency spike happened?

[Update] Thanks to the great feedback in the comments regarding rosbag2 snapshot, I have updated the original post to clarify how YERP and rosbag2 snapshot work perfectly together as a trigger-and-capture pair!

Hi everyone, Recently I have been thinking about a very practical debugging problem in ROS / ROS2 perception pipelines, especially for AMRs and mobile robots. When a robot behaves strangely in the field, the usual workflow is often:

  1. rosbag record everything.
  2. Bring the massive data back.
  3. Replay it and try to find what happened.

Of course, rosbag2 is powerful. I am also aware of rosbag2 snapshot mode, which can keep recent messages in memory and dump a raw topic window when triggered. That is actually very close to the architecture I have in mind. I do not want to replace rosbag2 or its snapshot mode. Instead, I want to explore a lightweight layer above it: an event-triggered Runtime Evidence Layer for ROS perception pipelines.

I call the current prototype YERP — originally “YOLO Edge Runtime Profiler”.(Project repo: https://github.com/ZC502/yolo-edge-runtime-profiler)*

The core idea

In my view, the layering could be:

So the question is not: Can YERP replace rosbag2? The question is: Can YERP act as the lightweight anomaly detector / evidence sidecar layer that triggers rosbag2 snapshot at the exact right moment?

For example, a robot may run normally most of the time, but occasionally:

In that case, raw topic replay is useful, but we also need to know:

That is the role I am exploring for YERP.

Current prototype status

The current YERP Vision prototype has already been tested in a standalone YOLO / edge CV pipeline. It can monitor fields such as preprocess_ms, inference_ms, postprocess_ms, p50/p95/p99 latency, box count, and confidence entropy.

When a runtime pressure event is triggered, it saves local evidence (image.jpg, metadata.json, etc.).

In one test case, a normal-looking YOLO frame was captured not because it was manually labeled as a “[bad frame] ”, but because the runtime trace showed pressure:

{
  "state": "RED",
  "dominant_cause": "POSTPROCESS_DOMINANT",
  "selection_reason": "runtime_pressure",
  "metrics": {
    "box_count": 18,
    "class_count": 4,
    "confidence_entropy": 2.51,
    "preprocess_ms": 1.20,
    "inference_ms": 3.95,
    "postprocess_ms": 2.02,
    "postprocess_ratio": "28.15%"
  }
}

The important point is not that the image “looks abnormal”. The important point is: this input frame created measurable runtime pressure, so it became worth saving as evidence.

Community Momentum

This concept is already gaining cross-community traction:

Now, I want to bring this discussion to the ROS ecosystem, which is arguably where field debugging is the most painful.

EvidenceFlow Schema v0.1 Draft

Instead of exposing all internal YERP logic, I am thinking about a simple structured sidecar format. A ROS / ROS2 runtime pressure event could look like this:

{
  "schema_version": "0.1",
  "record_type": "runtime_pressure_event",

  "sample": {
    "sample_id": "frame_1048",
    "input_ref": "/camera/front/image_raw",
    "timestamp": "2026-07-27T19:32:18.104Z"
  },

  "environment": {
    "runtime": "ros2",
    "backend": "yolo_edge_runtime",
    "mode": "event_only",
    "device": "amr_edge_board"
  },

  "trigger": {
    "state": "RED",
    "reason": "latency_p99_spike",
    "observed_ms": 51.7,
    "threshold_ms": 30.0,
    "dominant_cause": "POSTPROCESS_DOMINANT"
  },

  "stage_ms": {
    "preprocess": 2.1,
    "inference": 15.4,
    "postprocess": 34.2,
    "total": 51.7
  },

  "ros_metadata": {
    "topic": "/camera/front/image_raw",
    "node": "/perception/yolo_detector",
    "callback_delay_ms": null,
    "queue_delay_ms": null,
    "message_age_ms": null,
    "dropped_messages": null
  },

  "output_metadata": {
    "box_count": 145,
    "candidate_count": 312,
    "confidence_entropy": 2.8,
    "class_entropy": 1.4
  },

  "hardware_metadata": {
    "cpu_usage": null,
    "gpu_usage": null,
    "npu_usage": null,
    "memory_spike_mb": 12,
    "temperature_c": null
  },

  "snapshot": {
    "rosbag2_snapshot_triggered": true,
    "window_sec": 5
  },

  "privacy": {
    "local_first": true,
    "image_saved": true,
    "upload_performed": false
  }
}

The goal is not to force every ROS project to use these exact fields, but to discuss what a useful runtime evidence record should contain.

Runtime Overhead

A natural concern is: Will such a probe slow down the robot?
Absolutely valid. A probe should not become the new bottleneck. The design separates the workload:

For production ROS / ROS2 systems, the default modes would likely be shadow_mode (observe only) or (write only when triggered).

How I imagine the rosbag2 integration

  1. Observe: YERP observes perception timing and output metadata.

  2. Detect: YERP detects a runtime pressure event (p99 spike, queue delay, output pressure, etc.).

  3. Log: YERP writes a small EvidenceFlow JSON sidecar.

  4. Trigger: If raw replay is needed, YERP calls rosbag2 snapshot service.

  5. Result: raw bag window + structured reason for capture + perception-stage timing + output metadata.

In short: rosbag2 snapshot tells us what raw ROS messages were around the event. YERP / EvidenceFlow tells us why this event was worth capturing.

Questions for the ROS community

I would really appreciate feedback from people who debug ROS / ROS2 robots in the field.

  1. Does this EvidenceFlow schema cover the information you would want when debugging ROS perception latency?

  2. For ROS2, should such an adapter start at the image topic level, diagnostics level, or executor / callback timing level?

  3. For AMR / mobile robot scenarios, which fields matter most? (frame latency, message age, queue delay, callback delay, TF wait time, etc.)

  4. How do you currently trigger rosbag2 snapshots in real robots? (Manual trigger? Diagnostics threshold? Topic frequency monitoring? Custom anomaly detector? Lifecycle event? Nav2 state?)

  5. Would a small structured JSON sidecar make snapshot bags easier to triage later?

Boundary

To avoid misunderstanding:

My current goal is to turn field debugging from “record everything and search later” into “capture structured evidence when runtime pressure actually happens”.

I am sharing this as an early prototype and schema draft. Comments, criticism, field stories, and suggestions are very welcome!

If you find this “Runtime Evidence Layer” concept valuable for your edge AI ROS deployments, or if you are interested in co-designing the ROS2 adapter together, feel free to drop a comment below, open an issue on GitHub, or reach out to me directly!

3 posts - 2 participants

Read full topic

[WWW] https://discourse.openrobotics.org/t/yerp-rosbag2-snapshot-can-we-capture-why-a-ros-perception-latency-spike-happened/56991

ROS Discourse General: [Release] Gazebo ROS Text-to-Speech (TTS) Plugin – From Gazebo Classic to Gazebo Harmonic

Hello ROS & Gazebo Community,

We’re excited to announce the release of gz_ros_tts, an open-source ROS 2 Text-to-Speech (TTS) Plugin for the latest Gazebo Harmonic.

This release is the Gazebo Classic and Gazebo harmonic ROS TTS Plugin, bringing the same idea to the modern Gazebo ecosystem with ROS 2.

# Project Evolution

## Version 1 — Gazebo Classic ROS TTS Plugin

The first version of the plugin introduced Text-to-Speech support for robots running in Gazebo Classic through ROS.

### Supported

- Gazebo Classic

- ROS 2 Humble

GitHub:

-–

## Version 2 — gz_ros_tts for Gazebo Harmonic

To support the modern Gazebo ecosystem, the plugin has been redesigned and released as **gz_ros_tts** for Gazebo Harmonic.

### Supported

- Gazebo Harmonic

- ROS 2 Humble

- ROS 2 Jazzy

### Successfully Tested On

- Heinz H1 Humanoid Robot

- Gazebo Harmonic

- ROS 2 Humble

- ROS 2 Jazzy

GitHub:

LinkedIn Release:

Demo Video: classic

Gazebo audio plugin demonstration

Demo video - harmonic

Announcements of gazebo text to speech plugin in gazebo harmonic version

1 post - 1 participant

Read full topic

[WWW] https://discourse.openrobotics.org/t/release-gazebo-ros-text-to-speech-tts-plugin-from-gazebo-classic-to-gazebo-harmonic/56982

ROS Discourse General: What should go in the tag?

I’ve always put just “BSD” in the package.xml of our projects, mostly because it is the exact value mentioned in https://reps/rep-0149.html#license-multiple-but-at-least-one . However, this value is not SPDX.

What’s the current best practice? Should we start putting SPDX identifiers into the license tag? Would it deserve a small update of REP 149?

11 posts - 5 participants

Read full topic

[WWW] https://discourse.openrobotics.org/t/what-should-go-in-the-license-tag/56952

ROS Industrial: A New Chapter for ROS-Industrial Americas

Over the past few months, I've had the privilege of stepping into the role of leading ROS-Industrial Americas. I'm grateful to Matt Robinson for his years of leadership and the strong community he helped build. At our 2026 Annual Meeting, I had the opportunity to share my first impressions and my vision for where we can go next.

I've reproduced that welcome letter below, because it captures the direction I hope we'll pursue together.

This is my first annual meeting as program director for ROS-Industrial Americas, and one thing has become clear very quickly: the strength of ROS-Industrial has never been a single individual or organization. It's the community itself.

Since we announced the leadership transition, I've heard from dozens of members offering encouragement, advice, questions, and ideas.

You made it immediately obvious that you participate in ROS-Industrial not because of a logo or affiliation, but because you genuinely care about advancing industrial robotics. That commitment matters especially now.

It feels like a lot has changed since our last meeting a year ago. Large language models have rapidly evolved from impressive demonstrations into practical tools used daily by engineers around the world. Those same advances are now beginning to reshape robotics as well.

Major technological shifts create uncertainty, but they also create opportunity. One of the reasons ROS-Industrial exists is to help practitioners evaluate emerging technologies, separate signal from noise, and move useful ideas from research into real-world deployment.

For fourteen years now, ROS-I has helped industrial robotics practitioners advance, adopt, and apply technologies that were once difficult to deploy reliably in industrial contexts. Today, we're seeing another transition. Robotic foundation models, LLMs, Physical AI, synthetic data generation, and learning-enabled systems are creating capabilities that seemed impractical not many years ago.

The question for us is no longer whether these technologies will influence industrial robotics. As we will hear from several speakers, they already have. The question is how we incorporate them responsibly, effectively, openly, and practically into real systems.

As I step into this role, I see part of my responsibility as helping this community ask those questions clearly and answer them together.

ROS-Industrial's mission remains the same: enabling innovation in industrial robotics through collaboration, open-source technology, applied research, and education. New technologies will continue to emerge, and our responsibility is to understand them, evaluate them, and make them useful to industrial practitioners. Today, that includes AI. Tomorrow, it will include technologies not yet imagined.

I am grateful to inherit that mission, and I am committed to stewarding it with diligence, openness, and practical focus.

At this year's meeting, our speakers will introduce new open-source robotics software, explore novel applications of AI, discuss new opportunities for open-source automation, and share real-world experience deploying these solutions in specific contexts. Our workshops will give you a focused opportunity to direct the consortium over the coming years.

But the future of ROS-Industrial will not be determined by keynote speakers, steering committees, or roadmap documents alone. It will be shaped by practitioners who bring real problems, real deployments, real successes, and even real failures back to the community.

I offer my sincere thanks to every one of you and your colleagues who have fed this community over the last year: contributing code, sharing lessons learned, participating in projects, mentoring newcomers, and helping move open-source robotics technology from research into production.

I'm excited about this meeting, but I'm more excited about what we'll all do together in the year ahead.

Sincerely,
Jerry Towler
Program Director, ROS-Industrial Americas

[WWW] https://rosindustrial.org/news/2026/7/23/a-new-chapter-for-ros-industrial-americas

ROS Discourse General: Do warehouse AMR operators actually monitor their fleets for security in production?

Hi all — I’m a security engineer researching runtime security for autonomous mobile robot fleets (warehouse/3PL AMRs on ROS 2). I keep hitting one question I can’t answer from the outside, and I’d value the perspective of people who actually run or build these fleets:

  1. For fleets already deployed in production — is anyone doing continuous security monitoring (detecting anomalous behaviour at runtime), or is security still mostly design-time hardening (SROS 2, DDS security) and then hands-off?
  2. When an operator worries about a robot being compromised, is that framed as a cybersecurity problem or purely as a safety/uptime problem? Who owns it internally?

Not selling anything — genuinely trying to understand the current state before assuming a gap exists. Grateful for any real-world experience.

2 posts - 2 participants

Read full topic

[WWW] https://discourse.openrobotics.org/t/do-warehouse-amr-operators-actually-monitor-their-fleets-for-security-in-production/56931

ROS Discourse General: Convert in the terminal

Would you use a free CLI tool to convert CAD assemblies to URDF?

No CAD plugins.

Just one command from your terminal to work in Ros directly.

I’m thinking about open-sourcing the core of a tool I’ve been building over the past few months, and I’d love to validate the idea before releasing it.

Would you use something like this?

Or do you prefer the existing CAD add-ins?

If not, what’s the biggest reason?

1 post - 1 participant

Read full topic

[WWW] https://discourse.openrobotics.org/t/convert-in-the-terminal/56908

ROS Discourse General: Logging and Observability Guide Review Part 2 | Cloud Robotics WG Meeting 2026-08-24

The group is skipping two meetings (2026-07-27, 2026-08-10) due to lack of available members!

The next meeting of the CRWG will be at Mon, Aug 24, 2026 4:00 PM UTC→Mon, Aug 24, 2026 5:00 PM UTC, where we will continue editing the first draft of the Logging and Observability guide. We also worked on this last session, but decided not to record as it would make for pretty dry video content!

The meeting link for next meeting is here, and you can sign up to our calendar or our Google Group for meeting notifications or keep an eye on the Cloud Robotics Hub.

Hopefully we will see you there!

1 post - 1 participant

Read full topic

[WWW] https://discourse.openrobotics.org/t/logging-and-observability-guide-review-part-2-cloud-robotics-wg-meeting-2026-08-24/56907

ROS Discourse General: Seeking advice on reaching ROS 2 developers

I’ve spent the last few months building ������� to automate one of the most repetitive parts of robotics development. Instead of manually converting CAD assemblies, configuring joints, generating robot descriptions, and debugging the first setup, the goal is a verified, ready-to-use robotics workspace automatically in ������ and ����.

But now I’m at a point where the technical part feels solid. The new challenge is figuring out how to reach the right users for such a ��������� �������.

If you’ve built developer tools or engineering software, how did you get your first 10 to 50 users? What channels actually worked? What wasted effort would you skip if you started again?

1 post - 1 participant

Read full topic

[WWW] https://discourse.openrobotics.org/t/seeking-advice-on-reaching-ros-2-developers/56873

ROS Discourse General: Community event calendar; Get updates to only the selected events

On the community event calendar (introduced in discourse.openrobotics.org#48220), is there a way to 1) select only the events of my interest, 2) receive updates if such event gets updated (time change etc.)?

Thank you.

3 posts - 2 participants

Read full topic

[WWW] https://discourse.openrobotics.org/t/community-event-calendar-get-updates-to-only-the-selected-events/56844

ROS Discourse General: Nvidia Jetson price increase by up to 100%, what other boards are you using to run ROS?

As avid Jetson user, I just saw there has been 50-100% price increases across all Nvidia Jetson kit/module lineup, what other boards/SoCs/PCs are you using for running ROS on real world robots? I saw recent posts by @smac with AMD Strix, Intel also made some robotics computers recently, there’s also upcoming Qualcomm’s Arduino HW, but that’s more on EDU/DIY side…

Jetsons seemed to me to have the most mature ecosystem, but some of those price increases surely puts them away from reach of students/hobbyists, and can have also impacts on larger fleet deployments.

EDIT: Added voting poll! :down_arrow:

Click to view the poll.

8 posts - 6 participants

Read full topic

[WWW] https://discourse.openrobotics.org/t/nvidia-jetson-price-increase-by-up-to-100-what-other-boards-are-you-using-to-run-ros/56841


2026-08-08 12:18