September 23, 2026
ROSCon Toronto FollowUp: Kubernetes/KubeEdge with ROS 2

Hi All

those who joined the k8s/kubeedge with ROS 2 meetup at ROSCon Toronto, here is the thread that we follow up more information.
please subscribe this thread so that you will not miss the notification.

as we mentioned, let’s follow up more details about this topic after ROSCon.
i will send the online meeting once i get back to Tokyo, probably in Oct we can have the follow up online meeting.

thanks,
Tomoya

1 post - 1 participant

Read full topic

by tomoyafujita on September 23, 2026 05:42 PM

Fifteen Years of MoveIt, and the Next Fifteen

Today we announced that PickNik Inc. and Qualcomm Technologies, Inc. are joining forces. Before I go into that, I want to talk about MoveIt, because MoveIt is the reason any of this happened.

If you have learned about robotic arm manipulation in the past decade and a half, or been involved in manipulation R&D, there’s a good chance you’ve used MoveIt. More than 560 people have contributed code across the MoveIt project, which today spans 40 repositories, 6,700 GitHub stars, and 4,400 forks. The two main MoveIt papers have been cited more than 1,700 times between them. More than a million people have visited MoveIt’s websites and documentation over the years. Thousands of robot models have been made to work with it, in labs and companies I have never heard of, which is the point.

Where MoveIt came from

MoveIt started at Willow Garage, and the earliest and largest debts are owed to Ioan-Alex Șucan, Sachin Chitta, E. Gil Jones, and Acorn Pooley, who wrote the first version of what became the standard way to move an arm in ROS. I got my start in this world as a motion planning intern at Willow Garage in the summer of 2012, and benefited tremendously from their mentorship. I really loved ROS’s mission.

But then Willow Garage shut down in 2014, and a lot of software from the Willow days did not survive. MoveIt did, however, because Michael Ferguson, Robert Haschke, Michael Görner, and I decided it was worth keeping alive. Back in grad school, I spent way too much time working on MoveIt rather than publishing research, but it turned out to be the most useful thing I could have been doing anyway, which is a thing I got lucky about.

I started PickNik in 2015 when companies were asking for help using MoveIt. I started it as a software consulting shop, but then we received funding to begin the development of MoveIt 2 from a number of sources, including the EU’s ROSin and the US’s SBIR programs, as well as Acutronic Robotics. Many others got involved over time, including Mark Moll, Nathan Brooks, Sebastian Castro, Henning Kayser, Jafar Uruç, Andy Zelenak, Felix von Drigalski, and Tyler Weaver. The kind of maintenance required to keep a big project like MoveIt going can be unglamorous, so thank you to everyone on the complete list of contributors.

Going forward

For most of MoveIt’s history, the easy problems in the industry were solved with hard-coded waypoints, but the MoveIt community instead used geometric and model-based dynamic motion planning to achieve more reactivity. This included inverse kinematics, collision checking, and probabilistic sampling-based motion planning. Everything looked great in simulation, but the biggest struggle was always making it work on a real-time controller, reliably, in a production system.

Learned models are now really changing our field. VLAs, VLMs, and WAMs are becoming a bigger part of the robotic system in ways I could not have imagined previously. Things we used to use heuristics for are now shifting to AI-based task planning. But I don’t think planning goes away. At PickNik, we’ve been betting on hybrid AI systems over the past few years, combining the power of AI models with the determinism, safety, and validity of the traditional MoveIt approaches. This hybrid AI approach is where the interesting architecture work is now: how to get advanced motion planning deployed in production environments today, at the level of reliability that our customers demand.

MoveIt is already running in production in incredible places: NASA missions, surgical robots, warehouse logistics, 3D bioprinting, cell therapy manufacturing, sanitation in food processing, strawberry picking, airport baggage handling, bathroom cleaning, and car washes. These are real deployments running on ROS 2 and MoveIt.

Making AI models work reliably in all of those places is a different engineering problem than the last decade was. It needs different expertise and a different kind of investment.

Why is Qualcomm Technologies acquiring PickNik?

Back to the acquisition announcement. “Why Qualcomm?” A key insight about the future of robotics is that these powerful AI models need to run on the robot in real time, within a power budget, not in a data center or over a network. With that realization comes a fundamental shift: many of the toughest AI challenges are no longer purely software problems, but joint software and hardware design challenges. A good way to address those problems is to be close to the people designing the compute, instead of integrating with it after it’s already designed. Powerful heterogeneous compute and advanced processors are enabling techniques we could only dream of 15 years ago, and that means paying more attention to the hardware layer is not optional.

I will admit that when this started I thought of Qualcomm as the company powering my 5G Android phone. I have spent the last several months learning how wrong I was: Qualcomm is a full-stack physical AI company, combining industry-leading compute with software and AI that are increasingly enabling the next generation of intelligent robots with its Qualcomm Dragonwing platforms. I’m excited about how heavily Qualcomm is now betting on physical AI.

I’m also comforted knowing that they have made some big plays in open source recently, including acquiring Arduino, Modular, Edge Impulse, and Foundries.io. Qualcomm and Arduino bring scale to developer communities, and I look forward to seeing open-source MoveIt and the ROS interoperability layer go further into the mainstream with

The part that mattered most to me personally: we are both founding members of the Open Source Robotics Alliance, and Qualcomm will continue investing in ROS and MoveIt.

What is not changing

● MoveIt 1 and 2 stays open source under its existing license, with community-driven roadmaps.

● MoveIt stays hardware agnostic.

● PickNik customers will continue to receive support from the team.

● We will continue to support the open source development of MoveIt and ROS.

My promise

I am going to keep being an advocate for MoveIt, for ROS, and for open source, from inside a company considerably larger than the one I started. That is my commitment to you and the entire MoveIt community.

This week I am at ROSCon in Toronto, at the PickNik booth, number 7. Please stop by and see me. Thank you for fifteen years of groundbreaking work in robotics. Let’s go do the next fifteen and beyond.

1 post - 1 participant

Read full topic

by davetcoleman on September 23, 2026 05:33 PM

Announcement: rclrs 0.8.0 Release

We’re happy to announce the release of rclrs v0.8.0!

Continuing our proud tradition of Conference-Driven Development (CDD), this release arrives just in time for ROSCon Global 2026 ( https://roscon.ros.org/2026/ ) in Toronto.

If you are at ROSCon, do not miss Michael Grey’s talk on composable actions concurrency with rclrs.

What’s New

ROS 2 Lyrical Support

rclrs now supports ROS 2 Lyrical Luth. Bindings have been regenerated for Humble, Jazzy, Kilted, Lyrical, and Rolling.

ros-env Message Access

ROS message packages are now accessed through ros-env. This keeps rclrs, applications, and generated messages on the same message definitions.

Applications using generated messages should import them with:

use ros_env::*;

Actions and Parameters

  • ActionClientState now exposes server_is_available.
  • Action APIs received corrections and action-server tasks no longer require Sync.
  • Parameter callbacks are now supported.

Topic Endpoint QoS

TopicEndpointInfo now exposes its QoS profile, improving graph inspection and diagnostics.

Performance and Reliability

This release includes performance improvements and fixes across action handling, dynamic-message introspection, sequence resizing, and rosout initialization.

Breaking Changes

  • Applications using generated ROS messages must add ros-env and use use ros_env::*;.
  • ROS shim interfaces are now supplied through ros-env.
  • TopicEndpointInfo exposes its QoS profile.
  • Parameter callback APIs introduce breaking interface changes.

See the changelog ( ros2_rust/rclrs/CHANGELOG.md at main · ros2-rust/ros2_rust · GitHub ) for the complete list of changes.

Contributors

A huge thank you to everyone who contributed to this release!

  • Esteve Fernández
  • Mathieu David
  • Michael G. Grey
  • J Pace
  • Peter Isho
  • Sam Privett
  • Tony Welte
  • Patrick Deschambault
  • Trim Bresilla
  • Balthasar Schüssler
  • Kimberly McGuire

Links

As always, we welcome feedback and contributions.

1 post - 1 participant

Read full topic

by esteve on September 23, 2026 04:49 PM

ROSCon Global 2026 Live Stream

by Katherine_Scott on September 23, 2026 12:51 PM

September 21, 2026
From CT Scan to Robotic Surgery Prototype: Kidney Stone Detection & PCNL Planning in ROS 2

Hi all,
I’d like to share a research prototype that connects medical CT imaging to ROS 2 visualization and robot simulation.
The pipeline starts from a DICOM / NIfTI CT scan, segments kidneys and nearby organs, finds stone candidates, builds 3D meshes, ranks PCNL (percutaneous nephrolithotomy) access corridors, then visualizes the anatomy in RViz and Gazebo. A Franka FR3 with a surgical needle can replay the selected path in simulation.
This is not a clinical tool and not medical advice. It is a learning / research MVP: geometric planning + kinematic replay, not a validated surgical system.

You can watch the project’s video LinkedIn Video or Youtube Video.

  • Load DICOM series or NIfTI with spacing / origin / affine preserved
  • Preprocess: HU clip, resample (~1 mm), normalize
  • TotalSegmentator for left/right kidney and context organs (colon, liver, spleen, lungs, vessels, …)
  • Temporary stone segmentation: high-HU threshold + connected components inside the kidney ROI
  • Per-stone report: volume (mm³), equivalent diameter, centroid, min/mean/max HU, laterality
  • Marching cubes → optional smooth/simplify → STL / OBJ / PLY (meshes are in millimetres)
  • PCNL planner: sample a posterolateral cone, ray-cast skin → kidney surface → stone, rank by length, parenchyma, ribs, hilum, upper pole, and organ hits
  • PySide6 GUI drives the flow; a small bridge launches ROS 2 without importing rclpy into the venv

What actually do in the app

There is one window. Buttons on top, the CT slice on the left, a log and a stone table on the right.

  1. Load the scan

    Click Open NIfTI… or Open DICOM folder…. The CT appears as a slice you can scroll through, like flipping pages of the body.

  2. Find the kidneys

    Segment kidneys paints the left and right kidney (and nearby organs) on the scan. Extract kidney ROIs zooms in so you are not searching the whole abdomen.

  3. Find the stones

    Detect stones (HU) looks for bright spots inside the kidney — stones are denser than soft tissue. A table lists each candidate: left or right, volume, diameter, and how bright it is.

  4. See it in 3D

    Export STL saves kidney and stone shapes as 3D files. Show 3D meshes opens them in the app. Open RViz shows the same models in ROS, with the planned needle line drawn on top.

  5. Plan the needle path

    Pick a stone in the table, then click Plan PCNL. The program tries many directions from the back, avoids organs where it can, and ranks safer / shorter routes. You can switch between the best path and the backups.

  6. Watch the robot

    Simüle et (FR3) opens a simulated operating room: the patient model on a table, and a Franka robot with a needle. The arm lines up with the path, goes in to the stone, and İğneyi çıkar pulls it back out.

ROS is used for the part it is good at: showing 3D models and moving a robot. The heavy image work stays in a normal desktop app, then hands over files. That split kept the demo understandable and let one window drive the whole story: scan → stone → path → robot.

1 post - 1 participant

Read full topic

by ynsziya on September 21, 2026 10:41 PM

Oh noes! What's going on with Anubis?

Lately I’ve been intermittently but often getting this message when trying to access ROS documentation (like c++ API etc). Am I the only one running into this? I definitely have browser cookies enabled, and I’m not going through a VPN. The below messages was obtained by browsing to this location.

3 posts - 3 participants

Read full topic

by Bernd_Pfrommer on September 21, 2026 05:25 PM

September 18, 2026
D-Robotics at ROSCon Global 2026 — Let’s Connect in Toronto

Hi everyone! :waving_hand:

Here’s from the D-Robotics team. We’re excited to share that our team will be at ROSCon Global 2026 in Toronto, September 22–24. We’re looking forward to meeting fellow ROS developers and robotics folks in person.

For D-Robotics, ROS 2 is not an add-on — it is a core part of the RDK robotics development experience. Across the RDK platform, we support multiple ROS 2 distributions, while TogetheROS.Bot builds on ROS 2 with hardware-accelerated capabilities tailored for robotics.

If you’re attending too, come find us at the conference. You can meet the D-Robotics team at the AgileX Robotics booth (#48), where our engineers will be around throughout the event. We’ll be showcasing an RDK X5 × Piper demo, showing how on-device perception and AI inference can connect with physical robotic action.

You can also find us at the LooperRobotics booth, where their Insight series integrates D-Robotics RDK X5 modules for spatial AI applications.

We’d love to show you what we’ve been building, but even more, we’d like to hear what you’re working on. Come by to exchange ideas around ROS 2, robotics development, edge AI, and embodied AI, or just stop by and say hi.

See you in Toronto!

2 posts - 2 participants

Read full topic

by xiangbella093 on September 18, 2026 04:08 PM

September 17, 2026
New SMACC demo in Gazebo using the PX4 flight stack

This demo uses the new SMACC PX4 Client Library to autonomously control the following drone in a Gazebo environment.

SMACC and PX4 flight stack simulation in the Strait of Hormuz

As always, here’s the source code: SMACC2/smacc2_sm_reference_library/sm_cl_px4_mr_test_4 at jazzy · robosoft-ai/SMACC2 · GitHub

The readme for this application lays out the steps of how to use it.

And here’s a link to the original linkedin post: #ros2 #px4 #smacc2 #physicalai #gazebo #qgroundcontrol #nav2 | Brett Aldrich

1 post - 1 participant

Read full topic

by brettpac on September 17, 2026 11:56 PM

Native ROS 2 on Zephyr with Cyclone DDS

Hi,

I have been experimenting with native DDS for ROS 2 on Zephyr and recently got the standard ROS 2 C client stack running on an ESP32-S3 over Wi-Fi.

The current stack is:

rclc -> rcl -> rmw_cyclonedds_c -> Cyclone DDS -> Zephyr

The board joins the DDS/RTPS network directly, without a Micro XRCE-DDS Agent.

The work is split into two repositories:

  • ros2_zephyr for the Zephyr integration and static ROS 2 build

  • rmw_cyclonedds_c for the C RMW implementation and generated Cyclone DDS type support

I tested an ESP32-S3 against stock ROS 2 Lyrical with rmw_cyclonedds_cpp, in both publisher and subscriber directions. The current implementation supports fixed-size messages and best-effort QoS.

I have also been working on Zephyr support for Micro XRCE-DDS and rmw_zenoh_pico, with the longer-term goal of comparing these embedded RMW paths on the same hardware.

I wrote a short note with more details and measurements here:

I will keep extending the native DDS path with Reliable QoS, Transient Local, ROS graph support and eventually DDS Security.

Feedback is very welcome.

1 post - 1 participant

Read full topic

by fj-blanco on September 17, 2026 04:47 PM

September 16, 2026
ROS medical community updates

Ahead of ROSCon, anyone using ROS in a medical context is welcome to update the community here with a quick status update. I’ll go first on behalf of Vexev!


Ps if you haven’t seen, there will be a Birds of a Feather session at ROSCon Toronto! 9am Tuesday. Followed by a community meeting online in October.


Context:

We use ROS in our 8dof ultrasound imaging robot. We’re a startup, pre regulatory submission. Full context in the 2024 ROSCon Keynote: Keynote: Saving lives sooner: leveraging ROS 2 for end-stage kidney disease with Deanna Hood

Updates:

  1. Successful results from our last clinical trial have been published! Vexev's VxWave System Successfully Meets Clinical Endpoints in Landmark Study Evaluating Robotic Ultrasound Scanning for Mapping Vascular Access at U.S. Renal Care Dialysis Clinics - Vexev
  2. The safety of our hardware has been beefed up following strategies I described in this talk: https://www.youtube.com/watch?v=DrJPVY4B1Yc
  3. V&V, cybersecurity and FDA trial are all on our radar! :rocket: still with no plans to remove ROS :grin:

Please keep an eye out for:

  1. Sydney-based technologists for our open roles: Work with us - Vexev

  2. People looking to join the community. (Sign up to this mailing list https://groups.google.com/g/ros-medical-community-group-invites )

  3. Speakers for sessions on:
    * V&V and what changes when SOUP is involved vs not (incl ROS)

    * cybersecurity and implications of including ROS in the SBOM

    * what OTA updates look like for medical devices and how that contrasts with packaging practices in ROS community


Share your updates whether you will be at ROSCon or not - the objective is to help each other find what we’re looking for, to move faster.

Context: (what you’re working on)
Updates: (news/where you’re at)
Please keep an eye out for: (how others can support)

3 posts - 1 participant

Read full topic

by dhood on September 16, 2026 12:09 PM

September 14, 2026
CRA reporting starts tomorrow. How do you tell an exploited vulnerability from a normal robot failure inside 24 hours?

The EU Cyber Resilience Act reporting obligation for manufacturers starts on 11 September 2026: early warning within 24 hours of becoming aware of an actively exploited vulnerability or severe incident, and full notification within 72 hours, through the ENISA Single Reporting Platform. Open-source stewards are covered from 11 December 2027 under Article 24(3). Source: Cyber Resilience Act - Reporting obligations | Shaping Europe’s digital future

I am not posting this as a compliance warning. Most of us here are not manufacturers placing a product on the EU market, and nothing changes for an open-source stack tomorrow.

The engineering question underneath it is the one I would like to ask this group, because it applies whether or not the regulation touches you.

When a fielded robot does something wrong, how do you currently decide, quickly, whether that was an induced failure or the system’s own baseline failure rate showing up?

On my own bench, I can only answer it because I keep a clean control run at the same task and seed. Without that, a single bad rollout is uninterpretable in either direction: I cannot call it an attack, and I cannot call it noise.

What do people do in the field, where you do not get to re-run the same seed? Is there prior practice in the ROS world for baseline-rate logging that I should be reading instead of inventing?

1 post - 1 participant

Read full topic

by Sattyam_Jain on September 14, 2026 12:24 AM

September 13, 2026
Debug, Visualize and Teleoperate anything ROS2 with Phantom Bridge

If you haven’t tried Phantom Bridge yet, I recommend you do. I’ll be in Toronto next week for the ROSCon 2026, if anyone feels like talking about where this is headed or what features you’re missing.

Debug, Visualize and Teleoperate any ROS2 Robot with Phantom Bridge

1 post - 1 participant

Read full topic

by mirek on September 13, 2026 08:03 PM

Ros2-apt-source bumped to v 1.3.0

I’ve just noticed the ros2-apt-source package has been bumped to v1.3.0. Nothing special was added, just Fedora support. If you have v1.2.0 hardcoded to your deploy scripts, it’s time to switch to 1.3.0 :wink: (for those who have already this package installed, it will auto-update, so no worries there).

1 post - 1 participant

Read full topic

by peci1 on September 13, 2026 12:27 PM

September 11, 2026
Has anyone written a custom I²C transport for micro-ROS (or any MCU ROS stack)?

Small embedded team at a startup, weighing an idea before we commit to it. As far as I can tell, none of the MCU ROS stacks support I²C out of the box — micro-ROS does UART/UDP/CAN-FD, zenoh-pico does serial/UDP/TCP, Cyphal does CAN/serial. I²C isn’t on any of those lists. So if we want a board to be a ROS node talking over I²C, it looks like we’d have to write that transport layer ourselves. micro-ROS at least exposes a custom-transport API (the open/close/write/read hooks + set_custom_transport), so in principle an I²C transport is writable. My question is whether anyone actually has.

Context for why I²C at all: our STM32 boards sit behind a GMSL camera link, which tunnels an I²C channel through to the host side. The wire is already there, so an I²C transport would cost us no extra wiring — that’s the whole appeal.

So: Has anyone implemented a custom micro-ROS transport over I²C, or pushed zenoh-pico / Pico-ROS down onto an I²C link? How did it go — did the request/response and discovery patterns map onto a master-driven bus okay, or did that mismatch (the host has to poll, the MCU can’t initiate) become the whole problem? And if you tried and bailed — what made you bail? Rather hear where it broke now than find out the hard way later. (Not asking whether I²C is a “real” bus for this — I know it’s unusual. Asking specifically whether anyone’s made a ROS middleware transport work on top of it.)

3 posts - 3 participants

Read full topic

by alapir on September 11, 2026 08:51 AM

September 10, 2026
ROSCon Global 2026 Sponsors and Exhibitors



ROSCon Global 2026 Sponsors and Exhibitors

Robotics is a team sport, and putting together an event the size of ROSCon Global every year takes an incredible team of sponsors and OSRA member organizations!

We would like to take a moment to recognize the amazing sponsors helping to make ROSCon Global in Toronto a reality this year. We deeply appreciate your support of our open source community!

For ROSCon attendees, all of our sponsors will be on-site at ROSCon Global this year. Please make sure to check out their booths, watch their talks, attend their demos and sessions, and collaborate with them to make our open-source ecosystem a better place for all of us! The exhibitor map is now live on the ROSCon Global website so you can start planning your visit.

We look forward to seeing everyone in Toronto starting September 22nd! :rocket:

:gem_stone: Platinum Sponsor

:1st_place_medal: Gold Sponsors

:2nd_place_medal: Silver Sponsors

:3rd_place_medal: Bronze Sponsors

:seedling: Startup Alley Sponsors

1 post - 1 participant

Read full topic

by Katherine_Scott on September 10, 2026 08:07 PM

September 09, 2026
ROS Meetup Cartagena Colombia - 7 Nov 2026

:robot::palm_tree: ROS Meetup Cartagena 2026 is coming!
On November 7th, Cartagena will become a meeting point for the Robotics Operating System (ROS) community in Colombia.
The event is organized by IEEE RAS Colombia, IEEE RAS Colcaribe, IEEE RAS Javeriana, and UTBot, bringing together students, researchers, developers, and professionals to share knowledge, experiences, and projects around robotics and ROS. :colombia::robot:
:round_pushpin: Napoleón de la Rosa Echávez Auditorium — Universidad Tecnológica de Bolívar
:date: November 7, 2026
:stopwatch: 8:00 am - 5:00 PM
A space to connect, learn, and continue strengthening the open-source robotics community in Colombia and Latin America. :rocket:
:admission_tickets: Register yourself as a participant, or as an speaker in the following LinkTree: RAS Colombia Official: Instagram | Linktree

1 post - 1 participant

Read full topic

by miguelgonrod on September 09, 2026 09:30 PM

Open Source Safety Consortium: sharing safety evidence, not just code

I’d like the next autonomy team to spend less time reconstructing basic safety analysis, and more time finding what was missed.

That’s why I helped start the Open Source Safety Consortium (opensourcesafe.com), with Polymath Robotics as a founding member.

We’re developing reusable evidence for open-source components: hazard analyses, safety requirements, tests, assumptions, and known gaps, versioned alongside the code. Our first worked example is an open-source protective-stop prototype, with firmware, hardware designs, and a draft safety case all getting published together. We will then expand into other work asap.

It is not certified (yet!) and requires careful testing before using it in production (Polymath does use it). We are targeting the rigor required of a SIL 3/PLr=e capable solution.

Reusing its evidence would not automatically approve a machine, for example a haul truck still needs its own safety story around braking, and mine-site validation.

The question we want to test is how much another developer can actually reuse, what still needs independent review, and whether the effort saved outweighs the work of adapting and maintaining the evidence.

If you’ve qualified autonomy for a use case, what did you have to recreate because earlier evidence wasn’t available? And what would a shared package need before you or your assessor could use it?

If this all seems interesting to you, check out the above website, and send a hello!

1 post - 1 participant

Read full topic

by Iliabara on September 09, 2026 08:38 PM

September 08, 2026
Luxonis Solutions + Luxonis Agent Toolkit

Hi Everyone! I’m Carson, the Global GTM Manager at Luxonis.:grinning_face:

Just wanted to pop in and mention some new items we have recently released that we feel are truly elevating the game in the computer vision space.

Within the warehousing realm, we have recently released some new industry specific solutions for both Box Dimensioning and Barcode reading. We already have various customers in trial with these solutions and some deploying them to their operations.

These solutions combine with our high resolution (48MP) cameras, and 52 TOPS of AI processing power on board our OAK 4 Camera Line, all in an IP67 build for tough environments. This allows you to deploy these solutions with your current models in the pipeline and run them side by side without needing a host PC. Whether its mounted above your belt, or needs to be guiding an AMR that checks shelf inventory… there are so many possibilities of where these solutions shine in automating warehousing spaces.

Building on these specific solutions, we also released our Luxonis Agent Toolkit, which are 8 Luxonis specific skills that enable your personal coding agents with the abilities of a Luxonis Engineer. It is like having a little helper in your pocket to take you from start to finish when building with a Luxonis OAK camera. We have some cool demos we have built in just 15 minutes, and even hosted an internal hackathon with our engineers to push the boundaries.

We feel that the age of agentic coding is only going to grow… but now your agent doesn’t ever have to guess when it comes to a Luxonis camera, it can be embedded with all the right information.

We are constantly building with this toolkit internally, but would love to see what cool stuff other people can spin up with the skills!

Anyways… not trying to have this sound too pitchy, but, these are developments we have spent tons of time on internally, and people in this space would be the exact people we are looking to use these items. Happy to answer any questions or point you in the direction of information!

1 post - 1 participant

Read full topic

by Carson_Johnston on September 08, 2026 06:03 PM

September 07, 2026
Logging and Observability Guide Review Part 3 | Cloud Robotics WG Meeting 2026-10-05

The group is skipping two meetings (2026-09-07, 2026-09-21) due to members being unavailable!

The next meeting of the CRWG will be at Mon, Oct 5, 2026 4:00 PM UTC→Mon, Oct 5, 2026 5:00 PM UTC, where we will continue editing the first draft of the Logging and Observability guide. This time, more changes have been to the guide between sessions, and the members will focus on a higher-level view of the guide.

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!

5 posts - 4 participants

Read full topic

by mikelikesrobots on September 07, 2026 09:58 AM

NASA Space Roboticist Challenge: propose an experiment for a 7-DoF arm in orbit (U.S.; registration closes Sep 23)

Sharing an opportunity that may interest people working on manipulation, autonomy, and motion planning. NASA’s Space Roboticist Challenge (part of the Fly Foundational Robots mission) is opening access to a 7-Degree-of-Freedom (7-DoF) robotic arm operating in low Earth orbit.

U.S.-based researchers can propose a short, focused experiment to run on the arm. It is an active system in microgravity, not a simulation.

How it works:

- Phase 1: submit a white paper proposing the experiment (up to 15 teams advance).

- Phase 2: simulation and validation at NASA Goddard with NASA engineers. Teams that pass may receive an offer of on-orbit experiment time.

Eligibility: open to U.S. citizens and permanent residents at eligible U.S. institutions (PIs, post-docs, professors, and qualified graduate students with faculty sponsorship).

Deadlines: register by September 23, 2026; white papers due October 2, 2026.

Details and registration: https://spaceroboticistchallenge.com

Questions: SpaceRoboticist@floor23digital.com

Administered under the America COMPETES Reauthorization Act.

1 post - 1 participant

Read full topic

by C_Spears on September 07, 2026 02:32 AM

What is the hardest part of learning ROS 2 as a beginner

I teach a robotics lab and my students lose about a week each semester to
workspace and sourcing problems before they write any robot code. I recorded
the whole thing end to end on Jazzy, including the errors rather than a clean
take: workspace, package, first node, entry points, --symlink-install, and
why sourcing is per-terminal.

ROS 2 Workspace and Your First Node — and why "package not found" happens (Jazzy)

It’s aimed squarely at first-week beginners. Happy to take corrections —
I’d rather fix a video than leave something wrong in front of students.

3 posts - 3 participants

Read full topic

by Prasad_Prabhu on September 07, 2026 02:31 AM

September 06, 2026
New CLI tool: fastdds_transport_viz — predict & measure per-topic DDS transport in ROS 2

Hi all,

I built fastdds_transport_viz, a CLI tool that shows which transport (UDPv4/v6, TCP, SHM, or zero-copy data-sharing) each ROS 2 topic actually uses — and why.

  • Predicts the transport per writer→reader pair from Fast DDS discovery data (no changes needed on the observed nodes)
  • With --stats, measures real traffic (rate, latency) via the Fast DDS statistics module
  • --watch live view, --json output, and a web viewer (graph/table)
  • Verified on Jazzy and Kilted/Rolling, x86_64/arm64, including a two-host Wi-Fi setup

rmw_fastrtps_cpp only, Linux only — details in the README.

Repo: https://github.com/atinfinity/fastdds_transport_viz
Docs: https://atinfinity.github.io/fastdds_transport_viz

Feedback and issues welcome!

6 posts - 4 participants

Read full topic

by dandelion1124 on September 06, 2026 02:32 PM

September 04, 2026
Why we did not extend /diagnostics?

Can /diagnostics carry a fault, or only a status?
We spent a year building a diagnostic layer for ROS 2 (ros2_medkit, earlier thread: What's missing from ROS 2 diagnostics (and what we built) ) and the question we get most (including from a ROSCon reviewer) is why we did not extend diagnostic_msgs, diagnostic_updater and the aggregator instead.
Here is the reasoning with the message definitions side by side, so the specifics can be argued with.

TL;DR: a status is information, a fault is a model you can query and act on, and the second does not fall out of the first by adding fields or more context.

What /diagnostics is, and does well

REP 107 (Tully Foote, November 2010) wrote down the diagnostics system Willow Garage had already built: a /diagnostics topic carrying DiagnosticArray of DiagnosticStatus, and an aggregator with analyzers. It names three things the system is for:

  • a quick look at normal operation
  • detailed debug information
  • and long-term logs for history.

Its best practices are robot_monitor on screen while the robot runs, and a rosbag record of /diagnostics in the bringup launch. The REP defined three levels, OK, Warn and Error. The message today:

byte OK=0
byte WARN=1
byte ERROR=2
byte STALE=3
byte level
string name          # "a description of the test/component reporting"
string message       # "a description of the status"
string hardware_id   # "a hardware unique string"
KeyValue[] values

diagnostic_updater publishes on a period (1s by default)

diagnostic_aggregator groups statuses by name rules (prefix, substring, regex) into /diagnostics_agg, publishes the worst level on /diagnostics_toplevel_state, and marks an item STALE when it stops updating within the analyzer timeout.

rqt_robot_monitor keeps the last 30 arrays in memory.

diagnostic_remote_logging sends statuses to InfluxDB.

diagnostic_analysis, the ROS 1 tool for recorded diagnostics, is “Not ported to ROS2 yet” in the ros2 README.

That is a live status stream. It works well for a person watching a screen, and we did NOT change any of it.

Where a status stream is not enough

Identity. A status is keyed by who reports it (name, “LiDAR scan0”). It can say what broke in message, hardware_id or a key-value, and people use those fields that way, but that is text. Nothing in the stack reads it as a fault identity. The aggregator keeps one status per name, the latest, and overwrites it with the next one. So the stack has no thing called “the fault”. I mean nothing knows when it started, how many times it came back, whether it is still active, or whether anyone acknowledged it.

rqt keeps the last 30 arrays, so a blip at night is gone by morning. People have asked for this before. In January 2018 someone on ROS Answers wanted a latched log of warnings and errors (“high level system log, latching diagnostic warnings/error”, question 280273). Nobody answered, and the asker wrote that they would probably build their own collector node.

Address. Say you have the rosbag from the three seconds around the failure. Where do you put it? hardware_id is just a free text. The aggregator tree is for display in rqt and a tag for the InfluxDB exporter, not a place where you can attach a recording.

Also, much of what breaks in a robot is not a ROS node: the MCU in a motor driver, a sensor with its own firmware. These appear in /diagnostics only if the driver author wrote a diagnostic task for them, and when the driver goes quiet the aggregator can only say STALE.

Operations and state. You cannot ask the stream about a fault. Is it still active? acknowledge it, change the configuration behind it, give me the recording. What the aggregator holds in RAM dies with the process. A bag of /diagnostics or the InfluxDB export survives a restart, but those are stored samples, not state. To know what is active now, you read the samples and work it out yourself. Whatever answers those questions has to be a separate service beside the ROS graph, one that holds fault records with an address and verbs. At that point you are no longer extending a message. Extending the aggregator ends in the same place. The aggregator does one thing: statuses in, one combined status out, with a fast path for watchdogs. Add fault ids, a database and an API and it is no longer an aggregator. It is a fault manager.

What we built beside it

ros2_medkit_msgs/Fault:

string fault_code               # e.g. MOTOR_OVERHEAT
uint8 severity                  # INFO WARN ERROR CRITICAL
string description              # the third argument of report()
builtin_interfaces/Time first_occurred
builtin_interfaces/Time last_occurred
builtin_interfaces/Time last_passed
uint32 occurrence_count         # counted on edges: a cleared fault that comes back adds one
string status                   # PREFAILED PREPASSED CONFIRMED HEALED CLEARED
string[] reporting_sources

The lifecycle is an AUTOSAR DEM-style debounce counter. FAILED events move it towards CONFIRMED, PASSED events move it towards HEALED. HEALED means the counter reached the healing threshold. CLEARED means a human acknowledged the fault through the clear service. Both kinds of record stay in the database.

Defaults worth knowing before you compare (click for more details)

On CONFIRMED the fault manager takes a freeze frame of the reporting node’s topics and with recording on, it writes its ring buffer to an MCAP bag. Each fault is linked by its reporting sources to an entity in a SOVD (ISO 17978) tree: Areas, Components, Apps, Functions. A function carries its own /faults, so “obstacle avoidance is degraded” maps to the app that is containing the fault. A device that never speaks DDS becomes an external component from the manifest, and a protocol plugin (OPC UA in the open repo) turns its alarms into faults on it. All of it is served over REST: list and stream faults (SSE), read one, clear it, read the entity’s data, PUT a configuration, download the bag from bulk-data, etc. A laptop, a fleet server or a tool can do that without joining the DDS graph.

And /diagnostics stays an input

ros2_medkit_diagnostic_bridge subscribes to /diagnostics and feeds the fault manager:

DiagnosticStatus level Fault event
OK PASSED, moves the fault towards HEALED when healing is enabled
WARN fault, severity WARN
ERROR fault, severity ERROR
STALE fault, severity CRITICAL (see caveats)

An existing diagnostic_updater gains a fault code, a lifecycle and a history. The node does not change.

Bridge details and caveats (click for more details) How the existing tools fit (click for more details)

The question to diagnostics users

Where should the line be? Our answer: DiagnosticStatus stays the health stream, and the fault record, its entity and the REST API get agreed on separately. That is what we built. Should the fault record become a shared ROS message one day? That is the question for this group. The ROSCon talk goes through the trade-offs.
Repo: ros2_medkit

Sources (click for more details)

9 posts - 2 participants

Read full topic

by Michal_Faferek on September 04, 2026 10:09 AM

September 02, 2026
GPS says ~5m accuracy but the fixes agree to 9 cm. Anyone else seen this?

So I’ve been chasing something for a couple of days and I figured I’d just post it, partly in case it helps someone and partly because I’m not totally sure I’m reading it right.

I’ve got a u-blox on a small rover doing 1 Hz fixes. The receiver puts ~5m horizontal 1-sigma in position_covariance, which honestly seemed believable for where I was driving. But then I looked at how much the fixes actually move relative to each other, and the median second difference is around ~0.1 m. The worst one in the whole run was about 1 m. If the noise were really white at ~5m I’d have expected that number to be somewhere around 14 m.

So there’s roughly a factor of 160 between what it says and how it behaves.

My guess, and this is the bit I’d like a sanity check on, is that the receiver smooths internally. So the 5m is the absolute error, mostly multipath, and it’s an honest number. But the fix-to-fix noise is centimetres because consecutive fixes are now heavily correlated. Which would mean the covariance is true, it’s just not the thing a Kalman filter is asking for, since the filter assumes the noise is white and independent.

Anyway, if that’s right then it explains my gate. My NIS sits around 0.03 where it should be near 3, so the chi-squared threshold ends up miles above anything that ever actually happens and nothing can trip it.

Two things I genuinely don’t know:

  1. Is this a u-blox thing specifically, or do other receivers do the same? I’ve only got the one so I can’t really tell.
  2. And what do people actually do about it in practice? Shrinking R feels wrong to me, because then you’d just track the multipath bias and confidently report centimetre accuracy while sitting metres off. I’ve seen a slowly varying GPS bias state mentioned as the proper fix but I haven’t tried it yet.

Here’s the script I used if anyone wants to check theirs. Works on any bag with a NavSatFix, nothing else needed:

#!/usr/bin/env python3
"""python3 gps_cov_check.py <bag_dir>"""
import sys, math, statistics, rosbag2_py
from rclpy.serialization import deserialize_message
from rosidl_runtime_py.utilities import get_message

bag = sys.argv[1]
r = rosbag2_py.SequentialReader()
r.open(rosbag2_py.StorageOptions(uri=bag, storage_id=""), rosbag2_py.ConverterOptions("", ""))
topic = next(t.name for t in r.get_all_topics_and_types()
if t.type == "sensor_msgs/msg/NavSatFix")
r.set_filter(rosbag2_py.StorageFilter(topics=[topic]))
M = get_message("sensor_msgs/msg/NavSatFix")

lat, lon, sig = [], [], []
while r.has_next():
_, data, _ = r.read_next()
m = deserialize_message(data, M)
if m.position_covariance_type == 0:
continue
lat.append(m.latitude); lon.append(m.longitude)
sig.append(math.sqrt(max(m.position_covariance[0], 0.0)))

R = 6371000.0
xs = [math.radians(v - lon[0]) * R * math.cos(math.radians(lat[0])) for v in lon]
ys = [math.radians(v - lat[0]) * R for v in lat]
d2 = sorted(math.hypot(xs[i+1] - 2*xs[i] + xs[i-1], ys[i+1] - 2*ys[i] + ys[i-1])
for i in range(1, len(xs) - 1))
declared = statistics.median(sig)
observed = d2[len(d2) // 2]
expected = math.sqrt(6.0) * 1.1774 * declared

print("declared 1-sigma %.2f m" % declared)
print("median |2nd difference| %.3f m" % observed)
print(" if that were white %.1f m" % expected)
print("ratio %.0fx smoother" % (expected / max(observed, 1e-9)))

Would be curious what ratio other people get and which receiver you’re on, especially if anyone’s running RTK fixed or something that doesn’t smooth its output. Thanks

5 posts - 2 participants

Read full topic

by manankharwar on September 02, 2026 06:29 PM

Three bugs that changed how our sensor board talks to ROS 2

We’re working on a board that connects cameras and sensors to a robot’s compute over CAN-FD and GMSL2. Three things came up during development that changed the design more than anything we planned upfront.

The flash budget made the decision for us.

We started assuming the board would speak ROS directly. Put micro-ROS on the chip to test it, and it ate 60% of flash before we’d written any of our own code.

That settled it. The device speaks Cyphal now. ROS runs host-side behind a thin bridge, and one firmware image serves three transports instead of one.

One reboot didn’t actually reboot anything.

A link kept dying every time we swapped a board. Power cycles didn’t fix it. Full host reboots didn’t fix it either.

Turned out one chip never fully powered off. It was getting backfed through its own data lines and holding old state through every reset we tried. The fix was a single reset write, once we found where the power was actually coming from.

Also explained an older bug on the same rig we’d never tracked down. Same root cause.

Timestamps mattered more than we assumed.

We treated per-sample timestamps as optional at first. Sensor sends data, host receives it, how far off could the timing really be.

Turns out it matters a lot once you’re fusing readings from different nodes on different transports. SLAM cares when the sensor captured the reading, not when the host got it. Those two numbers aren’t close.

Now every sample is stamped at capture, on the node, with a sequence number so drops are visible.

Wrote this up mostly for our own record and I guess other people building sensor nodes run into some version of the same three things.

3 posts - 3 participants

Read full topic

by alapir on September 02, 2026 08:02 AM


Powered by the awesome: Planet