<?xml version="1.0"?>
<rss version="2.0">

<channel>
	<title>Planet ROS</title>
	<link>http://planet.ros.org</link>
	<language>en</language>
	<description>Planet ROS - http://planet.ros.org</description>

<item>
	<title>ROS Discourse General: Launching the VLAs on the Humanoid robot(G1, T800) for continues tasks</title>
	<guid isPermaLink="false">discourse.openrobotics.org-topic-57375</guid>
	<link>https://discourse.openrobotics.org/t/launching-the-vlas-on-the-humanoid-robot-g1-t800-for-continues-tasks/57375</link>
	<description>&lt;p&gt;So, current issue of the launching VLAs on the Humanoids, like G1 Unitree\EngineAI T800\another,&lt;/p&gt;
&lt;p&gt;is the realsense pack of cams. F.e., for the unifolm vla (&lt;a class=&quot;inline-onebox&quot; href=&quot;https://github.com/unitreerobotics/unifolm-vla&quot; rel=&quot;noopener nofollow ugc&quot;&gt;GitHub - unitreerobotics/unifolm-vla · GitHub&lt;/a&gt;), you need 2 on wrists + 2 on shoulders, so its kinda there is no another way without realsense?&lt;/p&gt;
&lt;p&gt;Currently kinda stuck on this type of the issue, maybe someone know the solution?&lt;/p&gt;
            &lt;p&gt;&lt;small&gt;1 post - 1 participant&lt;/small&gt;&lt;/p&gt;
            &lt;p&gt;&lt;a href=&quot;https://discourse.openrobotics.org/t/launching-the-vlas-on-the-humanoid-robot-g1-t800-for-continues-tasks/57375&quot;&gt;Read full topic&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Thu, 13 Aug 2026 12:16:47 +0000</pubDate>
</item>
<item>
	<title>ROS Discourse General: Want to get involved with ROS 2? Come to Waffle</title>
	<guid isPermaLink="false">discourse.openrobotics.org-topic-57362</guid>
	<link>https://discourse.openrobotics.org/t/want-to-get-involved-with-ros-2-come-to-waffle/57362</link>
	<description>&lt;p&gt;One of the most common questions we get is some version of “how do I start contributing?”&lt;br /&gt;
Here is a concrete answer: &lt;strong&gt;join us for Waffle, Thursdays, 30 minutes.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a class=&quot;anchor&quot; href=&quot;https://discourse.openrobotics.org#p-116772-what-it-is-1&quot; name=&quot;p-116772-what-it-is-1&quot;&gt;&lt;/a&gt;What it is&lt;/h2&gt;
&lt;p&gt;Waffle is a weekly triage meeting. We go through the issues and pull requests coming into the ROS 2 repositories that nobody has picked up yet, and we quickly discuss, triage, and assign them.&lt;/p&gt;
&lt;p&gt;It moves fast. Most items get a minute or two: what is this, is it valid, who should look at it. We assign things live in the meeting rather than writing them down for later. In half an hour we get through a lot.&lt;/p&gt;
&lt;h2&gt;&lt;a class=&quot;anchor&quot; href=&quot;https://discourse.openrobotics.org#p-116772-why-its-a-good-on-ramp-2&quot; name=&quot;p-116772-why-its-a-good-on-ramp-2&quot;&gt;&lt;/a&gt;Why it’s a good on-ramp&lt;/h2&gt;
&lt;p&gt;(via easily digestible bullets!)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;No preparation.&lt;/strong&gt; Show up, look at the queue with us.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No commitment.&lt;/strong&gt; Come once, come when you can, leave early if you need to.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;You don’t need to be a committer.&lt;/strong&gt; Anyone is welcome.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;You’ll see how the project actually works.&lt;/strong&gt; Half an hour of watching maintainers make real decisions about real code teaches you more about the project than a lot of reading.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;It’s a good way to find something to work on.&lt;/strong&gt; Plenty of what crosses the queue is well-scoped and looking for someone. That someone could be you.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you already know one corner of the stack well, you are especially useful. Being able to glance at an incoming PR and say “this looks fine” or “this will break X” is exactly the thing we never have enough of.&lt;/p&gt;
&lt;h2&gt;&lt;a class=&quot;anchor&quot; href=&quot;https://discourse.openrobotics.org#p-116772-one-thing-it-isnt-3&quot; name=&quot;p-116772-one-thing-it-isnt-3&quot;&gt;&lt;/a&gt;One thing it isn’t&lt;/h2&gt;
&lt;p&gt;Waffle is not the place to bring your own issue or pull request. We work through the queue in order, and carving out time for individual requests is what turns a 30 minute meeting into a 90 minute one. If you need eyes on something specific, Discourse or Zulip is the right venue.&lt;/p&gt;
&lt;h2&gt;&lt;a class=&quot;anchor&quot; href=&quot;https://discourse.openrobotics.org#p-116772-details-4&quot; name=&quot;p-116772-details-4&quot;&gt;&lt;/a&gt;Details&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;When:&lt;/strong&gt; Thursdays, 30 minutes, &lt;span class=&quot;discourse-local-date&quot;&gt;Thu, Aug 13, 2026 4:30 PM UTC&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Where:&lt;/strong&gt; &lt;a href=&quot;http://meet.google.com/mxm-dwra-pzj&quot;&gt;Google Meet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Board:&lt;/strong&gt; &lt;a href=&quot;https://asymingt.github.io/baffle_maker/&quot;&gt;The Baffle Board&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Just turn up. We’re glad to have you.&lt;/p&gt;
&lt;p&gt;&lt;sub&gt;&lt;em&gt;Why “Waffle”?&lt;/em&gt; The meeting is named after &lt;a href=&quot;http://waffle.io&quot;&gt;waffle.io&lt;/a&gt;, the GitHub-backed kanban board we used to run triage on years ago. The service is long dead, the name stuck. The board we use now is generated by &lt;strong&gt;Baffle Maker&lt;/strong&gt;, built by &lt;a class=&quot;mention&quot; href=&quot;https://discourse.openrobotics.org/u/andrew_symington&quot;&gt;@andrew_symington&lt;/a&gt;, which is a Bazel waffle board, and also a baffle is the partition you put in a duct to control the flow of what’s coming through it. Make of that what you will. It is a large part of why this meeting runs as well as it does now.&lt;/sub&gt;&lt;/p&gt;
            &lt;p&gt;&lt;small&gt;1 post - 1 participant&lt;/small&gt;&lt;/p&gt;
            &lt;p&gt;&lt;a href=&quot;https://discourse.openrobotics.org/t/want-to-get-involved-with-ros-2-come-to-waffle/57362&quot;&gt;Read full topic&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Thu, 13 Aug 2026 01:39:23 +0000</pubDate>
</item>
<item>
	<title>ROS Discourse General: Analyzing rosbags with LLMs and SQL + queryable Nav2 behavior trees</title>
	<guid isPermaLink="false">discourse.openrobotics.org-topic-57339</guid>
	<link>https://discourse.openrobotics.org/t/analyzing-rosbags-with-llms-and-sql-queryable-nav2-behavior-trees/57339</link>
	<description>&lt;p&gt;A few weeks ago &lt;a class=&quot;mention&quot; href=&quot;https://discourse.openrobotics.org/u/jopequ&quot;&gt;@jopequ&lt;/a&gt; shared mcp-rosbags + mcp-lab ( &lt;a class=&quot;inline-onebox&quot; href=&quot;https://discourse.openrobotics.org/t/another-mcp-server-to-analyze-your-rosbags-with-llms-a-ui-to-benchmark-it-against-different-llm-providers/49897&quot;&gt;Another MCP Server to analyze your rosbags with LLMs + a UI to benchmark it against different LLM providers&lt;/a&gt; ) — an MCP server with purpose-built analysis tools (trajectories, laser scans, tf, plotting) and a neat UI for benchmarking providers on it. We’ve been working on the same problem at Pixel Robotics (AMRs for pallet transport) and just wrote up our approach, which lands on a different point in the design space, so I thought a comparison might be useful to the community:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;we use &lt;a href=&quot;https://github.com/turkenberg/mcap_mcp_server&quot; rel=&quot;noopener nofollow ugc&quot;&gt;mcap-mcp-server&lt;/a&gt;, that uses a database under the hood. This allows complex queries / joins to the rosbag for fast analysis. This also means that no specific tools are needed, the LLM already knows how to use SQL&lt;/li&gt;
&lt;li&gt;by extending nav2 BT logging, we can query the behavior tree log efficiently&lt;/li&gt;
&lt;li&gt;we &lt;a href=&quot;https://github.com/pixel-robotics/bt-rosbag-analysis&quot; rel=&quot;noopener nofollow ugc&quot;&gt;share an agent skill &lt;/a&gt; that sets up everything to get started&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;More details, an example walk through and a video in the blog post! &lt;a class=&quot;inline-onebox&quot; href=&quot;https://pixel-robotics.eu/news-events/blog/analyzing-robot-behavior-with-llms/&quot; rel=&quot;noopener nofollow ugc&quot;&gt;How we analyze robot behavior with LLMs — rosbags as SQL&lt;/a&gt;&lt;/p&gt;
            &lt;p&gt;&lt;small&gt;1 post - 1 participant&lt;/small&gt;&lt;/p&gt;
            &lt;p&gt;&lt;a href=&quot;https://discourse.openrobotics.org/t/analyzing-rosbags-with-llms-and-sql-queryable-nav2-behavior-trees/57339&quot;&gt;Read full topic&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Wed, 12 Aug 2026 09:28:35 +0000</pubDate>
</item>
<item>
	<title>ROS Discourse General: Properly close windows processes, discussion about implementation</title>
	<guid isPermaLink="false">discourse.openrobotics.org-topic-57308</guid>
	<link>https://discourse.openrobotics.org/t/properly-close-windows-processes-discussion-about-implementation/57308</link>
	<description>&lt;p&gt;So I went into a bit of a rabbit whole last week! &lt;a href=&quot;https://ci.ros2.org/job/nightly_win_rel/&quot; rel=&quot;noopener nofollow ugc&quot;&gt;CI on windows&lt;/a&gt; kept on getting this particular error:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;lang-auto&quot;&gt;2: [WARNING] [python.exe-2]: 'SIGINT' sent to process[python.exe-2] not supported on Windows, escalating to 'SIGTERM'
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Apparently, windows does not have a proper way to handle SIGINT, which means that it always straight goes to the ungraceful shutdown of SIGTERM.&lt;/p&gt;
&lt;p&gt;So I thought “oh! is that perhaps the reason why we keep getting all of the unhandy access violation ( 3221225477) that we see ever since we went switched ci to server-2025?”&lt;/p&gt;
&lt;p&gt;The answer is… it’s not that simple…&lt;/p&gt;
&lt;p&gt;I tried these two repositories on CI where I tried to have the testing use the proper CTRL_C_EVENT, CTRL_BREAK_EVENT signals and such:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&quot;inline-onebox&quot; href=&quot;https://github.com/knmcguire/osrf_pycommon/tree/new-sigterm-win&quot; rel=&quot;noopener nofollow ugc&quot;&gt;GitHub - knmcguire/osrf_pycommon at new-sigterm-win · GitHub&lt;/a&gt; (I had to remove osrf_pycommon from pixi.toml)&lt;/li&gt;
&lt;li&gt;(Renamed from ros2/launch) &lt;a class=&quot;inline-onebox&quot; href=&quot;https://github.com/knmcguire/ros2_launch/tree/new-sigterm-win&quot; rel=&quot;noopener nofollow ugc&quot;&gt;GitHub - knmcguire/ros2_launch at new-sigterm-win · GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;… which resulted in this CI run with even more failures than before: &lt;a href=&quot;https://ci.ros2.org/job/ci_windows/28952/&quot; rel=&quot;noopener nofollow ugc&quot;&gt;https://ci.ros2.org/job/ci_windows/28952/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So this went a little too deep then I was comfortable with, but I at least tried to implement some of the suggestions given in these issues and &lt;a href=&quot;https://github.com/ros2/launch/pull/306&quot; rel=&quot;noopener nofollow ugc&quot;&gt;old and closed PR&lt;/a&gt;&lt;/p&gt;
&lt;aside class=&quot;onebox githubpullrequest&quot;&gt;
  &lt;header class=&quot;source&quot;&gt;

      &lt;a href=&quot;https://github.com/ros2/launch/pull/306&quot; rel=&quot;noopener nofollow ugc&quot; target=&quot;_blank&quot;&gt;github.com/ros2/launch&lt;/a&gt;
  &lt;/header&gt;

  &lt;article class=&quot;onebox-body&quot;&gt;
    &lt;div class=&quot;github-row&quot;&gt;



    &lt;div class=&quot;github-icon-container&quot; title=&quot;Pull Request&quot;&gt;
      &lt;svg class=&quot;github-icon&quot; height=&quot;60&quot; viewBox=&quot;0 0 12 16&quot; width=&quot;60&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;&lt;path d=&quot;M11 11.28V5c-.03-.78-.34-1.47-.94-2.06C9.46 2.35 8.78 2.03 8 2H7V0L4 3l3 3V4h1c.27.02.48.11.69.31.21.2.3.42.31.69v6.28A1.993 1.993 0 0 0 10 15a1.993 1.993 0 0 0 1-3.72zm-1 2.92c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zM4 3c0-1.11-.89-2-2-2a1.993 1.993 0 0 0-1 3.72v6.56A1.993 1.993 0 0 0 2 15a1.993 1.993 0 0 0 1-3.72V4.72c.59-.34 1-.98 1-1.72zm-.8 10c0 .66-.55 1.2-1.2 1.2-.65 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2zM2 4.2C1.34 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2z&quot; fill-rule=&quot;evenodd&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
    &lt;/div&gt;

  &lt;div class=&quot;github-info-container&quot;&gt;



      &lt;h4&gt;
        &lt;a href=&quot;https://github.com/ros2/launch/pull/306&quot; rel=&quot;noopener nofollow ugc&quot; target=&quot;_blank&quot;&gt;Use signal.CTRL_C_EVENT on windows instead of signal.SIGINT (#306)&lt;/a&gt;
      &lt;/h4&gt;

    &lt;div class=&quot;branches&quot;&gt;
      &lt;code&gt;master&lt;/code&gt; ← &lt;code&gt;ivanpauno/use-ctrl-c-event-on-windows&lt;/code&gt;
    &lt;/div&gt;

      &lt;div class=&quot;github-info&quot;&gt;
        &lt;div class=&quot;date&quot;&gt;
          opened &lt;span class=&quot;discourse-local-date&quot;&gt;09:30PM - 14 Aug 19 UTC&lt;/span&gt;
        &lt;/div&gt;

        &lt;div class=&quot;user&quot;&gt;
          &lt;a href=&quot;https://github.com/ivanpauno&quot; rel=&quot;noopener nofollow ugc&quot; target=&quot;_blank&quot;&gt;
            &lt;img alt=&quot;&quot; class=&quot;onebox-avatar-inline&quot; height=&quot;20&quot; src=&quot;https://us1.discourse-cdn.com/flex022/uploads/ros/original/3X/7/8/78f5e4146a41730a696cc8e4db05d38d99d33515.jpeg&quot; width=&quot;20&quot; /&gt;
            ivanpauno
          &lt;/a&gt;
        &lt;/div&gt;

        &lt;div class=&quot;lines&quot; title=&quot;1 commits changed 1 files with 1 additions and 5 deletions&quot;&gt;
          &lt;a href=&quot;https://github.com/ros2/launch/pull/306/files&quot; rel=&quot;noopener nofollow ugc&quot; target=&quot;_blank&quot;&gt;
            &lt;span class=&quot;added&quot;&gt;+1&lt;/span&gt;
            &lt;span class=&quot;removed&quot;&gt;-5&lt;/span&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

  &lt;div class=&quot;github-row&quot;&gt;
    &lt;p class=&quot;github-body-container&quot;&gt;We were using `signal.SIGTERM` on windows instead of `signal.SIGINT`.
I think t&lt;span class=&quot;show-more-container&quot;&gt;&lt;a class=&quot;show-more&quot; href=&quot;https://github.com/ros2/launch/pull/306&quot; rel=&quot;noopener nofollow ugc&quot; target=&quot;_blank&quot;&gt;…&lt;/a&gt;&lt;/span&gt;&lt;span class=&quot;excerpt hidden&quot;&gt;hat `signal.CTRL_C_EVENT` is the correct signal to be send in replacement of `signal.SIGINT`, which is not supported in [SubprocessTransport.send_signal](https://docs.python.org/3/library/subprocess.html#subprocess.Popen.send_signal).

Related with https://github.com/ros2/ros2cli/pull/315.
See https://github.com/pypa/setuptools/issues/1818.&lt;/span&gt;&lt;/p&gt;
  &lt;/div&gt;

  &lt;/article&gt;

  &lt;div class=&quot;onebox-metadata&quot;&gt;
    
    
  &lt;/div&gt;

  &lt;div style=&quot;clear: both;&quot;&gt;&lt;/div&gt;
&lt;/aside&gt;

&lt;p&gt;Anyway! I failed in this but perhaps someone interested to give more ideas and thoughts, and perhaps want to have a go? It would be nice to actually terminate windows nodes properly this time, and might also fix some other things in the process as well. In general there have been many complaints of ghost processes still hanging after termination, not only on Windows.&lt;/p&gt;
&lt;p&gt;This is a list of intersting issues and PRs I saw open during my research, as it might be handy for others as well:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows Signal Handling &lt;a class=&quot;inline-onebox&quot; href=&quot;https://github.com/ros2/rosbag2/issues/1326&quot; rel=&quot;noopener nofollow ugc&quot;&gt;Issue · GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Hang after repeated ctrl+c on Windows &lt;a class=&quot;inline-onebox&quot; href=&quot;https://github.com/ros2/launch_ros/issues/310&quot; rel=&quot;noopener nofollow ugc&quot;&gt;Hang after repeated ctrl+c on Windows · Issue #310 · ros2/launch_ros · GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Tests on Windows falsely positive reporting passed due to SIGINT handling &lt;a class=&quot;inline-onebox&quot; href=&quot;https://github.com/ros2/launch/issues/767&quot; rel=&quot;noopener nofollow ugc&quot;&gt;Tests on Windows falsely positive reporting passed due to SIGINT handling · Issue #767 · ros2/launch · GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;incorrect signal handling: &lt;a class=&quot;inline-onebox&quot; href=&quot;https://github.com/ros2/launch/issues/666&quot; rel=&quot;noopener nofollow ugc&quot;&gt;Incorrect signal handling · Issue #666 · ros2/launch · GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kill dangling subprocesses &lt;a href=&quot;https://github.com/ros2/launch/pull/632&quot; rel=&quot;noopener nofollow ugc&quot;&gt;https://github.com/ros2/launch/pull/632&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ivanpauno/kill dangling subprocesses&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;inline-onebox&quot; href=&quot;https://github.com/ros2/launch/pull/936&quot; rel=&quot;noopener nofollow ugc&quot;&gt;Ivanpauno/kill dangling subprocesses by anton-matosov · Pull Request #936 · ros2/launch · GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Gracefully handle CTRL+C and CTR+Break events on Windows &lt;a class=&quot;inline-onebox&quot; href=&quot;https://github.com/ros2/rosbag2/issues/1326&quot; rel=&quot;noopener nofollow ugc&quot;&gt;Issue · GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Gracefully handle CTRL+C and CTR+Break events on Windows &lt;a class=&quot;inline-onebox&quot; href=&quot;https://github.com/ros2/rosbag2/pull/1342&quot; rel=&quot;noopener nofollow ugc&quot;&gt;Gracefully handle CTRL+C and CTR+Break events on Windows by MichaelOrlov · Pull Request #1342 · ros2/rosbag2 · GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Gracefully handle SIGINT and SIGTERM in rosbag2 recorder &lt;a href=&quot;https://github.com/ros2/rosbag2/pull/1301&quot; rel=&quot;noopener nofollow ugc&quot;&gt;https://github.com/ros2/rosbag2/pull/1301&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Use signal.CTRL_C_EVENT on windows instead of signal.SIGINT &lt;a class=&quot;inline-onebox&quot; href=&quot;https://github.com/ros2/launch/pull/306&quot; rel=&quot;noopener nofollow ugc&quot;&gt;Use signal.CTRL_C_EVENT on windows instead of signal.SIGINT by ivanpauno · Pull Request #306 · ros2/launch · GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Love to hear your thoughts!&lt;/p&gt;
            &lt;p&gt;&lt;small&gt;3 posts - 2 participants&lt;/small&gt;&lt;/p&gt;
            &lt;p&gt;&lt;a href=&quot;https://discourse.openrobotics.org/t/properly-close-windows-processes-discussion-about-implementation/57308&quot;&gt;Read full topic&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Tue, 11 Aug 2026 12:00:47 +0000</pubDate>
</item>
<item>
	<title>ROS Discourse General: Exploring a human-reviewed ROS 2 agentic pipeline generator</title>
	<guid isPermaLink="false">discourse.openrobotics.org-topic-57268</guid>
	<link>https://discourse.openrobotics.org/t/exploring-a-human-reviewed-ros-2-agentic-pipeline-generator/57268</link>
	<description>&lt;p&gt;I am prototyping **EdgeAI Forge**, a local-first engineering architecture intended to help generate, test, benchmark, and document ROS 2 and machine-vision pipelines.&lt;/p&gt;
&lt;p&gt;The initial target workflow is a ROS 2 vision pipeline generator. Given a requirement such as:&lt;/p&gt;
&lt;p&gt;&amp;gt; Read frames from a USB camera, run object detection, publish detections, expose health status, benchmark performance, and prepare deployment to Jetson.&lt;/p&gt;
&lt;p&gt;the system should eventually produce reviewed artifacts including:&lt;/p&gt;
&lt;p&gt;- package manifests and directory structure;&lt;/p&gt;
&lt;p&gt;- Python or C++ nodes;&lt;/p&gt;
&lt;p&gt;- topics, messages, services, and actions;&lt;/p&gt;
&lt;p&gt;- parameters and launch files;&lt;/p&gt;
&lt;p&gt;- unit, integration, and launch tests;&lt;/p&gt;
&lt;p&gt;- simulation or recorded-data validation;&lt;/p&gt;
&lt;p&gt;- Docker/Jetson packaging;&lt;/p&gt;
&lt;p&gt;- FPS and latency benchmarks; and&lt;/p&gt;
&lt;p&gt;- assumptions, limitations, and operating documentation.&lt;/p&gt;
&lt;p&gt;The current proof of concept contains Planner, Vision, and ROS prompt agents backed by a local Ollama endpoint. It generates design output, not production-ready ROS packages. A broader scaffold contains API, dashboard, infrastructure, and observability components.&lt;/p&gt;
&lt;p&gt;The safety boundary is important: generated robot-motion or production-deployment artifacts should never run automatically. The intended sequence includes simulation, test evidence, human review, explicit approval, logging, and rollback.&lt;/p&gt;
&lt;p&gt;I would appreciate feedback from the ROS community on:&lt;/p&gt;
&lt;p&gt;1. Which package archetype would make the best first supported template?&lt;/p&gt;
&lt;p&gt;2. How should generated packages be evaluated beyond compilation and linting?&lt;/p&gt;
&lt;p&gt;3. Which launch_testing, rosbag, Gazebo, or other simulation patterns should be mandatory?&lt;/p&gt;
&lt;p&gt;4. How should the generator encode QoS, lifecycle nodes, diagnostics, and hardware assumptions?&lt;/p&gt;
&lt;p&gt;5. What safeguards would make this useful without encouraging unsafe deployment practices?&lt;/p&gt;
&lt;p&gt;Project: &lt;a class=&quot;inline-onebox&quot; href=&quot;https://github.com/afridali123/EdgeAI_Forge&quot; rel=&quot;noopener nofollow ugc&quot;&gt;GitHub - afridali123/EdgeAI_Forge · GitHub&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Background: &lt;a class=&quot;inline-onebox&quot; href=&quot;https://www.linkedin.com/pulse/edgeai-forge-my-journey-toward-local-agentic-ai-afrid-thenebanda-lpdhc/&quot; rel=&quot;noopener nofollow ugc&quot;&gt;EdgeAI Forge: My Journey Toward a Local Agentic AI Platform for Industrial Automation&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The project is early, and I am sharing it to collect design criticism before implementing the deeper ROS workflow.&lt;/p&gt;
            &lt;p&gt;&lt;small&gt;1 post - 1 participant&lt;/small&gt;&lt;/p&gt;
            &lt;p&gt;&lt;a href=&quot;https://discourse.openrobotics.org/t/exploring-a-human-reviewed-ros-2-agentic-pipeline-generator/57268&quot;&gt;Read full topic&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Sun, 09 Aug 2026 23:58:56 +0000</pubDate>
</item>
<item>
	<title>ROS Discourse General: Some Knowledge about ros</title>
	<guid isPermaLink="false">discourse.openrobotics.org-topic-57267</guid>
	<link>https://discourse.openrobotics.org/t/some-knowledge-about-ros/57267</link>
	<description>&lt;p&gt;Hi everyone!&lt;/p&gt;
&lt;p&gt;I’m a 2nd-year Mechanical Engineering student at NIT Jalandhar, currently exploring Robotics and Automation.&lt;/p&gt;
&lt;p&gt;I’m starting my journey with C++/Python, electronics, CAD and eventually ROS 2. My long-term goal is to work on real robotics projects and eventually pursue research/internship opportunities in robotics.&lt;/p&gt;
&lt;p&gt;I’m looking to connect with:&lt;br /&gt;
• Students who are also learning Robotics/ROS 2&lt;br /&gt;
• People working on interesting robotics projects&lt;br /&gt;
• Researchers/engineers who are open to collaboration or guidance&lt;br /&gt;
• Students who have previously pursued robotics research internships&lt;/p&gt;
&lt;p&gt;If you’re on a similar journey, I’d love to connect and learn together.&lt;/p&gt;
&lt;p&gt;Also, if there are any beginner-friendly open-source robotics projects where a student can contribute, I’d really appreciate suggestions.&lt;/p&gt;
&lt;p&gt;Thanks!&lt;/p&gt;
            &lt;p&gt;&lt;small&gt;1 post - 1 participant&lt;/small&gt;&lt;/p&gt;
            &lt;p&gt;&lt;a href=&quot;https://discourse.openrobotics.org/t/some-knowledge-about-ros/57267&quot;&gt;Read full topic&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Sun, 09 Aug 2026 23:58:45 +0000</pubDate>
</item>
<item>
	<title>ROS Discourse General: Robotics Student - Perception Systems Question</title>
	<guid isPermaLink="false">discourse.openrobotics.org-topic-57266</guid>
	<link>https://discourse.openrobotics.org/t/robotics-student-perception-systems-question/57266</link>
	<description>&lt;p&gt;Hi all, I’m an MEng Robotics &amp;amp; AI student at UCL working on perception/tracking pipelines (recently built a person re-ID and tracking evaluation pipeline, and a Gaussian-splat reconstruction quality evaluator). I’m trying to understand a specific problem better: how do teams currently notice when a perception or sensor-fusion stack has silently degraded in production, before it causes a visible failure? Do you rely on manual spot-checks, logging + alerts, a formal calibration schedule, or something else? Genuinely trying to learn what’s actually painful here vs. what’s already a solved problem, not selling anything. Would appreciate any war stories, even short ones.&lt;/p&gt;
            &lt;p&gt;&lt;small&gt;2 posts - 2 participants&lt;/small&gt;&lt;/p&gt;
            &lt;p&gt;&lt;a href=&quot;https://discourse.openrobotics.org/t/robotics-student-perception-systems-question/57266&quot;&gt;Read full topic&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Sun, 09 Aug 2026 23:58:07 +0000</pubDate>
</item>
<item>
	<title>ROS Discourse General: Advice on breaking into US robotics/embedded industry as a US citizen with no US history</title>
	<guid isPermaLink="false">discourse.openrobotics.org-topic-57265</guid>
	<link>https://discourse.openrobotics.org/t/advice-on-breaking-into-us-robotics-embedded-industry-as-a-us-citizen-with-no-us-history/57265</link>
	<description>&lt;p&gt;I’m a 4th-year Computer Engineering student in Palestine (Birzeit University, graduating 2027). I focus on embedded systems and robotics. I have US citizenship, but I never lived or worked in the US. There’s no embedded or robotics industry here at all, so I can’t really build experience or a network locally. I’m trying to move to the US, but I’m not sure where to start.&lt;/p&gt;
&lt;p&gt;My background: ROS2 control software for a multi-agent robotics platform, FreeRTOS firmware on custom boards, and a competition robot (WRO Future Engineers) that I built from the PCB up to the low level firmware. I’m fine with relocating, that’s not a problem for me.&lt;/p&gt;
&lt;p&gt;I’m not sure what the right next step is. Should I look for a job directly, try to get into a US grad program first, or something else? If you work in robotics or made a similar move yourself, what would you do in my place?&lt;/p&gt;
            &lt;p&gt;&lt;small&gt;2 posts - 2 participants&lt;/small&gt;&lt;/p&gt;
            &lt;p&gt;&lt;a href=&quot;https://discourse.openrobotics.org/t/advice-on-breaking-into-us-robotics-embedded-industry-as-a-us-citizen-with-no-us-history/57265&quot;&gt;Read full topic&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Sun, 09 Aug 2026 23:57:52 +0000</pubDate>
</item>
<item>
	<title>ROS Discourse General: ROS2 Dev Container Feature + Workspace Update</title>
	<guid isPermaLink="false">discourse.openrobotics.org-topic-57243</guid>
	<link>https://discourse.openrobotics.org/t/ros2-dev-container-feature-workspace-update/57243</link>
	<description>&lt;p&gt;I’ve been working on a ROS2 Dev Container Feature and just updated my VSCode ROS2 Workspace Template to use it instead of my pre-built ROS Docker images.&lt;/p&gt;
&lt;p&gt;The feature is here:&lt;/p&gt;
&lt;aside class=&quot;onebox allowlistedgeneric&quot;&gt;
  &lt;header class=&quot;source&quot;&gt;
      &lt;img alt=&quot;&quot; class=&quot;site-icon&quot; height=&quot;32&quot; src=&quot;https://us1.discourse-cdn.com/flex022/uploads/ros/original/2X/b/bad3e5f9ad67c1ddf145107ce7032ac1d7b22563.svg&quot; width=&quot;32&quot; /&gt;

      &lt;a href=&quot;https://github.com/althack/devcontainers/pkgs/container/devcontainers%2Fros2&quot; rel=&quot;noopener nofollow ugc&quot; target=&quot;_blank&quot;&gt;GitHub&lt;/a&gt;
  &lt;/header&gt;

  &lt;article class=&quot;onebox-body&quot;&gt;
    &lt;img alt=&quot;&quot; class=&quot;thumbnail onebox-avatar&quot; height=&quot;500&quot; src=&quot;https://us1.discourse-cdn.com/flex022/uploads/ros/original/2X/3/337b7cc06184984e148c075df20ef009e0e6ecaa.png&quot; width=&quot;500&quot; /&gt;

&lt;h3&gt;&lt;a href=&quot;https://github.com/althack/devcontainers/pkgs/container/devcontainers%2Fros2&quot; rel=&quot;noopener nofollow ugc&quot; target=&quot;_blank&quot;&gt;Build software better, together&lt;/a&gt;&lt;/h3&gt;

  &lt;p&gt;GitHub is where people build software. More than 150 million people use GitHub to discover, fork, and contribute to over 420 million projects.&lt;/p&gt;


  &lt;/article&gt;

  &lt;div class=&quot;onebox-metadata&quot;&gt;
    
    
  &lt;/div&gt;

  &lt;div style=&quot;clear: both;&quot;&gt;&lt;/div&gt;
&lt;/aside&gt;

&lt;p&gt;Source:&lt;/p&gt;
&lt;aside class=&quot;onebox githubrepo&quot;&gt;
  &lt;header class=&quot;source&quot;&gt;

      &lt;a href=&quot;https://github.com/althack/devcontainers&quot; rel=&quot;noopener nofollow ugc&quot; target=&quot;_blank&quot;&gt;github.com&lt;/a&gt;
  &lt;/header&gt;

  &lt;article class=&quot;onebox-body&quot;&gt;
    &lt;div class=&quot;github-row&quot;&gt;
  &lt;img class=&quot;thumbnail&quot; height=&quot;344&quot; src=&quot;https://us1.discourse-cdn.com/flex022/uploads/ros/optimized/3X/c/2/c2144963db7ed7a5fc4d2e3397fb2fbb21d0229d_2_690x344.png&quot; width=&quot;690&quot; /&gt;

  &lt;h3&gt;&lt;a href=&quot;https://github.com/althack/devcontainers&quot; rel=&quot;noopener nofollow ugc&quot; target=&quot;_blank&quot;&gt;GitHub - althack/devcontainers: My vscode devcontainers&lt;/a&gt;&lt;/h3&gt;

    &lt;p&gt;&lt;span class=&quot;github-repo-description&quot;&gt;My vscode devcontainers&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;

  &lt;/article&gt;

  &lt;div class=&quot;onebox-metadata&quot;&gt;
    
    
  &lt;/div&gt;

  &lt;div style=&quot;clear: both;&quot;&gt;&lt;/div&gt;
&lt;/aside&gt;

&lt;p&gt;The main thing I wanted was to select the ROS distro once in devcontainer.json and have both local development and CI use that same configuration.&lt;/p&gt;
&lt;p&gt;&quot; &lt;a class=&quot;inline-onebox&quot; href=&quot;http://ghcr.io/althack/devcontainers/ros2:0&quot; rel=&quot;noopener nofollow ugc&quot;&gt;Package devcontainers/ros2 · GitHub&lt;/a&gt; &quot;: {&lt;/p&gt;
&lt;p&gt;“distro”: “lyrical”,&lt;/p&gt;
&lt;p&gt;“package”: “desktop”&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;I also cleaned up a bunch of the old X11/WSLg configuration. WSL2 GUI support now works through the normal VS Code Dev Container setup, and native Linux X11 support is available as a separate opt-in feature.&lt;/p&gt;
&lt;p&gt;If you’re using ROS2 with Dev Containers, I’d be interested to hear how it works for your setup!&lt;/p&gt;
            &lt;p&gt;&lt;small&gt;1 post - 1 participant&lt;/small&gt;&lt;/p&gt;
            &lt;p&gt;&lt;a href=&quot;https://discourse.openrobotics.org/t/ros2-dev-container-feature-workspace-update/57243&quot;&gt;Read full topic&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Sat, 08 Aug 2026 16:26:29 +0000</pubDate>
</item>
<item>
	<title>ROS Discourse General: Has a CPU shared-memory backend for rosidl::Buffer been explored?</title>
	<guid isPermaLink="false">discourse.openrobotics.org-topic-57240</guid>
	<link>https://discourse.openrobotics.org/t/has-a-cpu-shared-memory-backend-for-rosidl-buffer-been-explored/57240</link>
	<description>&lt;p&gt;I have been looking into &lt;code&gt;rosidl::Buffer&lt;/code&gt; and the current buffer backend support, particularly for large variable-length payloads such as images and point clouds.&lt;/p&gt;
&lt;p&gt;One idea I am interested in is a CPU shared-memory backend for &lt;code&gt;rosidl::Buffer&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;I realize that this overlaps to some extent with functionality that already exists at lower layers. For example, some middleware / RMW implementations already provide shared-memory transport or other zero-copy optimizations. Depending on the implementation, moving data through shared memory may therefore already be possible without introducing a dedicated Buffer backend.&lt;/p&gt;
&lt;p&gt;What I am trying to understand is whether there is still a useful role for shared memory at the &lt;code&gt;rosidl::Buffer&lt;/code&gt; layer.&lt;/p&gt;
&lt;p&gt;My interest is specifically in large variable-length fields where avoiding copies of the payload itself is useful. Rather than treating shared memory only as a transport optimization for a serialized message, a Buffer backend could potentially make the payload storage itself shared and let a buffer-aware RMW transport a descriptor or reference when appropriate.&lt;/p&gt;
&lt;p&gt;Conceptually:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;lang-auto&quot;&gt;ROS message
  metadata
  rosidl::Buffer&amp;lt;uint8_t&amp;gt;
          |
          +-- CPU shared-memory backend
                  |
                  +-- shared payload storage
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This seems potentially complementary to transport-level shared memory rather than necessarily a replacement for it. On the other hand, I can also imagine that the overlap with middleware-native SHM mechanisms may be a reason why such a backend has not been pursued.&lt;/p&gt;
&lt;p&gt;In particular, I would be interested in hearing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Has anyone already explored a CPU shared-memory backend for &lt;code&gt;rosidl::Buffer&lt;/code&gt;?&lt;/li&gt;
&lt;li&gt;Is sharing the backing storage of large variable-length payloads considered an intended use of the Buffer backend abstraction?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Before prototyping something in this direction, I wanted to check whether there is already related work or design discussion that I have missed. I previously explored a similar problem for CUDA IPC in &lt;a href=&quot;https://discourse.openrobotics.org/t/ros2-cuda-ipc-zero-copy-gpu-data-sharing-between-ros-2-processes/57157/9&quot;&gt;this discussion&lt;/a&gt;, so I would especially like to avoid independently reimplementing something that is already being worked on elsewhere.&lt;/p&gt;
&lt;h2&gt;&lt;a class=&quot;anchor&quot; href=&quot;https://discourse.openrobotics.org#p-116601-related-links-1&quot; name=&quot;p-116601-related-links-1&quot;&gt;&lt;/a&gt;Related links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://discourse.openrobotics.org/t/ros-pmc-minutes-for-july-21-2026/56999&quot;&gt;ROS PMC minutes for July 21, 2026&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;“Qualcomm is working on a buffer implementation, which would be the first non-NVIDIA one”&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;inline-onebox&quot; href=&quot;https://discourse.openrobotics.org/t/ros2-cuda-ipc-zero-copy-gpu-data-sharing-between-ros-2-processes/57157/9&quot;&gt;ros2_cuda_ipc: Zero-copy GPU data sharing between ROS 2 processes - #9 by ZhenshengLee&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
            &lt;p&gt;&lt;small&gt;5 posts - 3 participants&lt;/small&gt;&lt;/p&gt;
            &lt;p&gt;&lt;a href=&quot;https://discourse.openrobotics.org/t/has-a-cpu-shared-memory-backend-for-rosidl-buffer-been-explored/57240&quot;&gt;Read full topic&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Sat, 08 Aug 2026 14:30:45 +0000</pubDate>
</item>
<item>
	<title>ROS Discourse General: Experimental order-sensitive consistency residual for Odometry/TF streams — minimal C++ reproducer</title>
	<guid isPermaLink="false">discourse.openrobotics.org-topic-57232</guid>
	<link>https://discourse.openrobotics.org/t/experimental-order-sensitive-consistency-residual-for-odometry-tf-streams-minimal-c-reproducer/57232</link>
	<description>&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Synthetic test results:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Smooth linear motion: &lt;code&gt;4.9848e-08&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Abrupt pose/orientation jump: &lt;code&gt;0.000881456&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is absolutely not a validated anomaly detector yet. Normalization, frame conventions and real-world thresholds all need work.&lt;/p&gt;
&lt;p&gt;No ROS, Eigen, or external dependencies required to run the reproducer.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;lang-auto&quot;&gt;#include &amp;lt;cmath&amp;gt;
#include &amp;lt;iostream&amp;gt;

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 &amp;lt;&amp;lt; &quot;smooth: &quot; &amp;lt;&amp;lt; order_sensitive_residual(a,b,c) &amp;lt;&amp;lt; '\n';

  c.z=2.0; c.qw=.92106099; c.qx=.38941834; c.qy=c.qz=0;
  std::cout &amp;lt;&amp;lt; &quot;jump:   &quot; &amp;lt;&amp;lt; order_sensitive_residual(a,b,c) &amp;lt;&amp;lt; '\n';
}
&lt;/code&gt;&lt;/pre&gt;
            &lt;p&gt;&lt;small&gt;1 post - 1 participant&lt;/small&gt;&lt;/p&gt;
            &lt;p&gt;&lt;a href=&quot;https://discourse.openrobotics.org/t/experimental-order-sensitive-consistency-residual-for-odometry-tf-streams-minimal-c-reproducer/57232&quot;&gt;Read full topic&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Sat, 08 Aug 2026 00:56:00 +0000</pubDate>
</item>
<item>
	<title>ROS Discourse General: [GSoC 2026] ROS 2 Client Library Performance Monitoring: Midterm Progress Update</title>
	<guid isPermaLink="false">discourse.openrobotics.org-topic-57204</guid>
	<link>https://discourse.openrobotics.org/t/gsoc-2026-ros-2-client-library-performance-monitoring-midterm-progress-update/57204</link>
	<description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Organization:&lt;/strong&gt; OSRF&lt;br /&gt;
&lt;strong&gt;Contributor:&lt;/strong&gt; Ammaar Ahmed (&lt;a href=&quot;https://github.com/ammaarrahmed&quot; rel=&quot;noopener nofollow ugc&quot;&gt;GitHub&lt;/a&gt;, &lt;a href=&quot;https://www.linkedin.com/in/ammaarlatif101/&quot; rel=&quot;noopener nofollow ugc&quot;&gt;LinkedIn&lt;/a&gt;)&lt;br /&gt;
&lt;strong&gt;Mentors:&lt;/strong&gt; Kimberly McGuire (&lt;a href=&quot;https://github.com/knmcguire&quot; rel=&quot;noopener nofollow ugc&quot;&gt;GitHub&lt;/a&gt;) and Skyler Medeiros (&lt;a href=&quot;https://github.com/skyegalaxy&quot; rel=&quot;noopener nofollow ugc&quot;&gt;GitHub&lt;/a&gt;)&lt;br /&gt;
&lt;strong&gt;GSoC project:&lt;/strong&gt; &lt;a href=&quot;https://summerofcode.withgoogle.com/programs/2026/projects/XzCZfpPX&quot; rel=&quot;noopener nofollow ugc&quot;&gt;ROS 2 Client Library Performance Monitoring&lt;/a&gt;&lt;br /&gt;
&lt;strong&gt;Repository:&lt;/strong&gt; &lt;a href=&quot;https://github.com/ammaarrahmed/ros2-performance-monitoring&quot; rel=&quot;noopener nofollow ugc&quot;&gt;ros2-performance-monitoring&lt;/a&gt;&lt;br /&gt;
&lt;strong&gt;Live dashboard:&lt;/strong&gt; &lt;a href=&quot;https://performance.ammaar.lol&quot; rel=&quot;noopener nofollow ugc&quot;&gt;performance.ammaar.lol&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hello everyone,&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;h3&gt;&lt;a class=&quot;anchor&quot; href=&quot;https://discourse.openrobotics.org#p-116533-why-this-project-exists-1&quot; name=&quot;p-116533-why-this-project-exists-1&quot;&gt;&lt;/a&gt;Why this project exists&lt;/h3&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Did this ROS 2 version become faster or slower?&lt;/li&gt;
&lt;li&gt;Is a slowdown widespread, or limited to one demanding test?&lt;/li&gt;
&lt;li&gt;Did latency improve at the cost of CPU or memory?&lt;/li&gt;
&lt;li&gt;Were both runs produced by the same workload?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This project connects benchmark execution, result processing, and visualization. Its purpose is to make the results easier to reproduce, compare, and understand.&lt;/p&gt;
&lt;h3&gt;&lt;a class=&quot;anchor&quot; href=&quot;https://discourse.openrobotics.org#p-116533-current-status-and-workflow-2&quot; name=&quot;p-116533-current-status-and-workflow-2&quot;&gt;&lt;/a&gt;Current Status and Workflow&lt;/h3&gt;
&lt;p&gt;The project provides a CLI  workflow for running a reduced &lt;code&gt;rclcpp&lt;/code&gt; 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.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;ros2-performance-monitoring run&lt;/code&gt; command executes the supported benchmark suite and converts the raw benchmark outputs into a consistent JSONL format. The &lt;code&gt;dashboard up&lt;/code&gt; 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 &lt;code&gt;README.md&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The workflow is:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;lang-auto&quot;&gt;Run a ROS 2 benchmark

        ↓

Collect benchmark results

        ↓

Normalize measurements

        ↓

Compare runs in the dashboard
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The dashboard helps answer both &lt;strong&gt;what changed&lt;/strong&gt; and &lt;strong&gt;why it changed&lt;/strong&gt; . 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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Default comparison view&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;lightbox-wrapper&quot;&gt;&lt;a class=&quot;lightbox&quot; href=&quot;https://us1.discourse-cdn.com/flex022/uploads/ros/original/3X/d/5/d5a6e823137ac4534ae2fb006da5f67a310a3475.png&quot; rel=&quot;noopener nofollow ugc&quot; title=&quot;image&quot;&gt;&lt;img alt=&quot;image&quot; height=&quot;338&quot; src=&quot;https://us1.discourse-cdn.com/flex022/uploads/ros/optimized/3X/d/5/d5a6e823137ac4534ae2fb006da5f67a310a3475_2_690x338.png&quot; width=&quot;690&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Figure X. Default dashboard comparing the median Jazzy and median Lyrical benchmark runs.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Manual explorer&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;lightbox-wrapper&quot;&gt;&lt;a class=&quot;lightbox&quot; href=&quot;https://us1.discourse-cdn.com/flex022/uploads/ros/original/3X/d/a/daa943b28eb592fcd5a3c13208d651cf2844bc4d.png&quot; rel=&quot;noopener nofollow ugc&quot; title=&quot;Screenshot From 2026-08-04 20-45-58&quot;&gt;&lt;img alt=&quot;Screenshot From 2026-08-04 20-45-58&quot; height=&quot;336&quot; src=&quot;https://us1.discourse-cdn.com/flex022/uploads/ros/optimized/3X/d/a/daa943b28eb592fcd5a3c13208d651cf2844bc4d_2_690x336.png&quot; width=&quot;690&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Figure Y. Manual explorer showing matching benchmark configurations for detailed investigation.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;The complete workflow from running benchmarks to exploring comparisons is working locally, and the dashboard is publicly available at &lt;code&gt;performance.ammaar.lol&lt;/code&gt;. Current work focuses on improving repeated run summaries and handling incomplete upstream benchmark data.&lt;/p&gt;
&lt;p&gt;I would like to thank &lt;strong&gt;Kimberly McGuire&lt;/strong&gt; and &lt;strong&gt;Skyler Medeiros&lt;/strong&gt; for their guidance, careful reviews, and feedback throughout the project. I am also grateful to &lt;strong&gt;OSRF&lt;/strong&gt;, the ROS community, and everyone who answered questions and made me feel welcome in the community.&lt;/p&gt;
&lt;p&gt;Work completed so far&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Built a single CLI workflow that prepares the benchmark project, runs it in Docker, and saves the results.&lt;/li&gt;
&lt;li&gt;Added a consistent result format so measurements from many benchmark files can be searched and compared together.&lt;/li&gt;
&lt;li&gt;Covered publish and subscribe tests as well as client and service tests, from 10-byte messages through &lt;code&gt;4 MiB&lt;/code&gt; messages.&lt;/li&gt;
&lt;li&gt;Added support for &lt;code&gt;Fast DDS&lt;/code&gt;, &lt;code&gt;Cyclone DDS&lt;/code&gt;, and the available &lt;code&gt;Zenoh&lt;/code&gt; configurations.&lt;/li&gt;
&lt;li&gt;Recorded the context needed for fair comparisons, including ROS version, middleware, executor, process layout, communication mode, source revisions, and machine platform.&lt;/li&gt;
&lt;li&gt;Added checks that reject missing or incompatible result files instead of silently presenting partial data as complete.&lt;/li&gt;
&lt;li&gt;Built guided, detailed, and manual Grafana views for comparing latency, throughput, CPU, memory, reliability, and test coverage.&lt;/li&gt;
&lt;li&gt;Replaced the confusing headline percentages with a plain language comparison result, a reason, and a suggested next action.&lt;/li&gt;
&lt;li&gt;Added safe container reuse and image reuse so repeated benchmarks do not rebuild large Docker images unnecessarily.&lt;/li&gt;
&lt;li&gt;Added optional CPU pinning to reduce interference on machines with different types of CPU cores.&lt;/li&gt;
&lt;li&gt;Added tests and documentation throughout the benchmark, parsing, exporting, and dashboard workflow.&lt;/li&gt;
&lt;li&gt;Deployed a public read only dashboard and documented how its code, data, archives, and services are maintained.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&lt;a class=&quot;anchor&quot; href=&quot;https://discourse.openrobotics.org#p-116533-work-remaining-3&quot; name=&quot;p-116533-work-remaining-3&quot;&gt;&lt;/a&gt;Work remaining&lt;/h2&gt;
&lt;p&gt;There is still time left in the &lt;strong&gt;GSoC&lt;/strong&gt; period. The main remaining work is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Turn repeated run aggregation into a supported command that validates matching runs, excludes warm ups, records its sources, produces median results, and communicates variability clearly.&lt;/li&gt;
&lt;li&gt;Handle incomplete upstream output, including non finite values, missing latency files, unreliable message counters, multi-process synchronization, and pinned submodule revisions.&lt;/li&gt;
&lt;li&gt;Make result activation and archiving safer, and move duplicated knowledge about benchmark directory layouts into shared metadata.&lt;/li&gt;
&lt;li&gt;Fix Kilted support, improve setup documentation, and test the complete workflow on clean machines.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Support for &lt;code&gt;rclpy&lt;/code&gt;, hosted automation, CI benchmarking, hosting under &lt;code&gt;performance.ros2.org&lt;/code&gt; 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.&lt;/p&gt;
&lt;h2&gt;&lt;a class=&quot;anchor&quot; href=&quot;https://discourse.openrobotics.org#p-116533-i-would-value-your-feedback-4&quot; name=&quot;p-116533-i-would-value-your-feedback-4&quot;&gt;&lt;/a&gt;I would value your feedback&lt;/h2&gt;
&lt;p&gt;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 &lt;a href=&quot;https://performance.ammaar.lol&quot; rel=&quot;noopener nofollow ugc&quot;&gt;public dashboard&lt;/a&gt;. 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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
            &lt;p&gt;&lt;small&gt;3 posts - 2 participants&lt;/small&gt;&lt;/p&gt;
            &lt;p&gt;&lt;a href=&quot;https://discourse.openrobotics.org/t/gsoc-2026-ros-2-client-library-performance-monitoring-midterm-progress-update/57204&quot;&gt;Read full topic&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Thu, 06 Aug 2026 20:16:21 +0000</pubDate>
</item>
<item>
	<title>ROS Industrial: From URDF to SimReady: What a Robotiq Gripper Taught Us About Simulation Assets</title>
	<guid isPermaLink="false">51df34b1e4b08840dcfd2841:51df4543e4b0e97ae8d7ea7d:6a6254e6601bf664a10be634</guid>
	<link>https://rosindustrial.org/news/2026/7/23/from-urdf-to-simready-what-a-robotiq-gripper-taught-us-about-simulation-assets</link>
	<description>&lt;p class=&quot;&quot;&gt;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.&lt;/p&gt;&lt;p class=&quot;&quot;&gt;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 &lt;a href=&quot;https://www.universal-robots.com/media/1807465/ur5e_e-series_datasheets_web.pdf&quot;&gt;Universal Robots UR5e arms&lt;/a&gt; and &lt;a href=&quot;https://robotiq.com/products/adaptive-grippers#Two-Finger-Gripper&quot;&gt;Robotiq 2F-85 grippers&lt;/a&gt;. 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.&lt;/p&gt;





















  
  














































  

    
  
    

      

      
        &lt;figure class=&quot;               sqs-block-image-figure               intrinsic             &quot;&gt;
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                &lt;img alt=&quot;&quot; height=&quot;528&quot; src=&quot;https://images.squarespace-cdn.com/content/v1/51df34b1e4b08840dcfd2841/3b2f3c52-a69d-4076-ba4f-f0eca80262d3/Lab+Space+-+Isaac+Sim.jpg?format=1000w&quot; width=&quot;936&quot; /&gt;

            
          
        
          
        

        
          
          &lt;figcaption class=&quot;image-caption-wrapper&quot;&gt;
            &lt;p class=&quot;&quot;&gt;Isaac Sim representation of the lab system&lt;/p&gt;
          &lt;/figcaption&gt;
        
      
        &lt;/figure&gt;
      

    
  


  













































  

    
  
    

      

      
        &lt;figure class=&quot;               sqs-block-image-figure               intrinsic             &quot;&gt;
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                &lt;img alt=&quot;&quot; height=&quot;672&quot; src=&quot;https://images.squarespace-cdn.com/content/v1/51df34b1e4b08840dcfd2841/6873a364-7294-41aa-a68d-59f91b7cbfbe/Lab+Space+-+Photo.jpg?format=1000w&quot; width=&quot;936&quot; /&gt;

            
          
        
          
        

        
          
          &lt;figcaption class=&quot;image-caption-wrapper&quot;&gt;
            &lt;p class=&quot;&quot;&gt;Photograph of the lab setup&lt;/p&gt;
          &lt;/figcaption&gt;
        
      
        &lt;/figure&gt;
      

    
  


  





  &lt;h2&gt;The first problem: available assets are not automatically usable assets&lt;/h2&gt;&lt;p class=&quot;&quot;&gt;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.&lt;/p&gt;&lt;p class=&quot;&quot;&gt;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.&lt;/p&gt;&lt;p class=&quot;&quot;&gt;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.&lt;/p&gt;&lt;p class=&quot;&quot;&gt;That distinction is central to the Robotiq 2F-85.&lt;/p&gt;&lt;h2&gt;Why the Robotiq 2F-85 is a useful test case&lt;/h2&gt;&lt;p class=&quot;&quot;&gt;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?&lt;/p&gt;&lt;p class=&quot;&quot;&gt;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.&lt;/p&gt;&lt;p class=&quot;&quot;&gt;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.&lt;/p&gt;&lt;h2&gt;What we tried from the ROS ecosystem&lt;/h2&gt;&lt;p class=&quot;&quot;&gt;After our initial asset testing, we reviewed several public resources related to Robotiq grippers, including the older &lt;a href=&quot;https://github.com/ros-industrial-attic/robotiq&quot;&gt;ROS-Industrial Robotiq repository&lt;/a&gt;, &lt;a href=&quot;https://github.com/PickNikRobotics/ros2_robotiq_gripper&quot;&gt;PickNik’s &lt;strong&gt;ros2_robotiq_gripper&lt;/strong&gt;&lt;/a&gt;, and &lt;a href=&quot;https://github.com/UW-Lab/UWLab/tree/main&quot;&gt;UW-Lab&lt;/a&gt; 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.&lt;/p&gt;&lt;p class=&quot;&quot;&gt;The best-performing candidate in our lab testing was the &lt;a href=&quot;https://huggingface.co/datasets/UW-Lab/uwlab-assets/blob/main/Robots/UniversalRobots/2f85RobotiqGripperCalibrated/robotiq_2f85_gripper_calibrated.usd&quot;&gt;UW-Lab calibrated USD asset for the Robotiq 2F-85&lt;/a&gt;. 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.&lt;/p&gt;





















  
  














































  

    
  
    

      

      
        &lt;figure class=&quot;               sqs-block-image-figure               intrinsic             &quot;&gt;
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                &lt;img alt=&quot;&quot; height=&quot;528&quot; src=&quot;https://images.squarespace-cdn.com/content/v1/51df34b1e4b08840dcfd2841/844d19ec-1df3-4330-8c39-d6f4f4784bbd/Robotiq+Gripper+-+Simulated.jpg?format=1000w&quot; width=&quot;936&quot; /&gt;

            
          
        
          
        

        
          
          &lt;figcaption class=&quot;image-caption-wrapper&quot;&gt;
            &lt;p class=&quot;&quot;&gt;Simulated Robotiq 2F-85 mounted on the UR arm&lt;/p&gt;
          &lt;/figcaption&gt;
        
      
        &lt;/figure&gt;
      

    
  


  





  &lt;p class=&quot;&quot;&gt;That made the UW-Lab asset a much better starting point. It did not make the problem disappear.&lt;/p&gt;&lt;h2&gt;The remaining fidelity gap&lt;/h2&gt;&lt;p class=&quot;&quot;&gt;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.&lt;/p&gt;&lt;p class=&quot;&quot;&gt;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.&lt;/p&gt;





















  
  














































  

    
  
    

      

      
        &lt;figure class=&quot;               sqs-block-image-figure               intrinsic             &quot;&gt;
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                &lt;img alt=&quot;&quot; height=&quot;351&quot; src=&quot;https://images.squarespace-cdn.com/content/v1/51df34b1e4b08840dcfd2841/48dc0fc9-a338-4a86-9a14-89fbf8034deb/Robotiq+Gripper+-+Photo.jpg?format=1000w&quot; width=&quot;468&quot; /&gt;

            
          
        
          
        

        
          
          &lt;figcaption class=&quot;image-caption-wrapper&quot;&gt;
            &lt;p class=&quot;&quot;&gt;Physical Robotiq 2F-85 on the lab robot&lt;/p&gt;
          &lt;/figcaption&gt;
        
      
        &lt;/figure&gt;
      

    
  


  





  &lt;p class=&quot;&quot;&gt;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.&lt;/p&gt;&lt;h2&gt;The broader lesson: conversion is not fidelity&lt;/h2&gt;&lt;p class=&quot;&quot;&gt;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.&lt;/p&gt;&lt;p class=&quot;&quot;&gt;A converter can translate what is present. It cannot reliably invent what is missing.&lt;/p&gt;&lt;p class=&quot;&quot;&gt;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.&lt;/p&gt;&lt;p class=&quot;&quot;&gt;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.&lt;/p&gt;&lt;h2&gt;Practical takeaways for robotics teams&lt;/h2&gt;&lt;p class=&quot;&quot;&gt;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.&lt;/p&gt;&lt;p class=&quot;&quot;&gt;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.&lt;/p&gt;&lt;p class=&quot;&quot;&gt;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.&lt;/p&gt;&lt;p class=&quot;&quot;&gt;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.&lt;/p&gt;&lt;p class=&quot;&quot;&gt;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.&lt;/p&gt;&lt;h2&gt;Toward a better ROS-to-SimReady workflow&lt;/h2&gt;&lt;p class=&quot;&quot;&gt;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.&lt;/p&gt;&lt;p class=&quot;&quot;&gt;A practical workflow could look something like this:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p class=&quot;&quot;&gt;Manufacturers provide CAD, URDF or SDF descriptions, kinematic details, material properties, actuator behavior, and validation data;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;&quot;&gt;ROS and open-source tools support accessible robot descriptions and integration;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;&quot;&gt;USD-based simulation workflows support composition, reuse, and high-quality scene representation; and&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;&quot;&gt;SimReady-style validation defines whether an asset is ready for the intended class of simulation tasks.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;&quot;&gt;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.&lt;/p&gt;&lt;p class=&quot;&quot;&gt;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.”&lt;/p&gt;&lt;h2&gt;Conclusion&lt;/h2&gt;&lt;p class=&quot;&quot;&gt;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.&lt;/p&gt;&lt;p class=&quot;&quot;&gt;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.&lt;/p&gt;</description>
	<pubDate>Wed, 05 Aug 2026 21:02:52 +0000</pubDate>
</item>
<item>
	<title>ROS Discourse General: Last day to purchase regular price ROSCon Global tickets is Monday, August 24th</title>
	<guid isPermaLink="false">discourse.openrobotics.org-topic-57162</guid>
	<link>https://discourse.openrobotics.org/t/last-day-to-purchase-regular-price-roscon-global-tickets-is-monday-august-24th/57162</link>
	<description>&lt;p&gt;Hi Everyone,&lt;/p&gt;
&lt;p&gt;Quick reminder, the last day to &lt;a href=&quot;https://roscon.regfox.com/roscon-2026&quot;&gt;purchase regular price tickets&lt;/a&gt; for ROSCon Global in Toronto is &lt;span class=&quot;discourse-local-date&quot;&gt;Tue, Aug 25, 2026 6:59 AM UTC&lt;/span&gt;.&lt;/p&gt;
            &lt;p&gt;&lt;small&gt;1 post - 1 participant&lt;/small&gt;&lt;/p&gt;
            &lt;p&gt;&lt;a href=&quot;https://discourse.openrobotics.org/t/last-day-to-purchase-regular-price-roscon-global-tickets-is-monday-august-24th/57162&quot;&gt;Read full topic&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Tue, 04 Aug 2026 21:59:52 +0000</pubDate>
</item>
<item>
	<title>ROS Discourse General: Announcing protoros2: use protobuf in ros2 without compromise</title>
	<guid isPermaLink="false">discourse.openrobotics.org-topic-57152</guid>
	<link>https://discourse.openrobotics.org/t/announcing-protoros2-use-protobuf-in-ros2-without-compromise/57152</link>
	<description>&lt;p&gt;Hi ROS Community! &lt;img alt=&quot;:waving_hand:&quot; class=&quot;emoji&quot; height=&quot;20&quot; src=&quot;https://emoji.discourse-cdn.com/noto/waving_hand.png?v=15&quot; title=&quot;:waving_hand:&quot; width=&quot;20&quot; /&gt;&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Today, we’re excited to introduce protoros2 — a middleware wrapper and orchestration engine designed to provide zero-intrusive protobuf support for ROS 2. &lt;a href=&quot;https://github.com/ZhenshengLee/protoros2&quot; rel=&quot;noopener nofollow ugc&quot;&gt;ZhenshengLee/protoros2: use protobuf in ros2 without compromise&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;(The name is heavily inspired by the awesome flatros2 &lt;a class=&quot;inline-onebox&quot; href=&quot;https://github.com/Ekumen-OS/flatros2&quot; rel=&quot;noopener nofollow ugc&quot;&gt;GitHub - Ekumen-OS/flatros2 · GitHub&lt;/a&gt; project!)&lt;/p&gt;
&lt;h3&gt;&lt;a class=&quot;anchor&quot; href=&quot;https://discourse.openrobotics.org#p-116444-what-does-protoros2-do-1&quot; name=&quot;p-116444-what-does-protoros2-do-1&quot;&gt;&lt;/a&gt;&lt;img alt=&quot;:rocket:&quot; class=&quot;emoji&quot; height=&quot;20&quot; src=&quot;https://emoji.discourse-cdn.com/noto/rocket.png?v=15&quot; title=&quot;:rocket:&quot; width=&quot;20&quot; /&gt; What does protoros2 do?&lt;/h3&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;It provides an out-of-the-box EnterpriseNode wrapper that offers multi-channel communication:&lt;/p&gt;
&lt;p&gt;• 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.&lt;br /&gt;
• 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.&lt;/p&gt;
&lt;h3&gt;&lt;a class=&quot;anchor&quot; href=&quot;https://discourse.openrobotics.org#p-116444-key-features-use-cases-2&quot; name=&quot;p-116444-key-features-use-cases-2&quot;&gt;&lt;/a&gt;&lt;img alt=&quot;:sparkles:&quot; class=&quot;emoji&quot; height=&quot;20&quot; src=&quot;https://emoji.discourse-cdn.com/noto/sparkles.png?v=15&quot; title=&quot;:sparkles:&quot; width=&quot;20&quot; /&gt; Key Features &amp;amp; Use Cases&lt;/h3&gt;
&lt;p&gt;We designed protoros2 to be flexible enough to accommodate different team workflows, supporting multiple “Single Source of Truth” (SSOT) architectures seamlessly:&lt;/p&gt;
&lt;p&gt;• Use Case A: Standard ROS 2 .msg as SSOT&lt;br /&gt;
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.&lt;br /&gt;
• Use Case B: AI/Robotics .proto as SSOT&lt;br /&gt;
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.&lt;br /&gt;
• Native ROS 2 Executor Support:&lt;br /&gt;
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.&lt;br /&gt;
• MLOps Ecosystem Ready:&lt;br /&gt;
Full compatibility with mcap format and rosbag2 plugins. Data scientists can consume protobuf bags directly with native python bindings.&lt;/p&gt;
&lt;h3&gt;&lt;a class=&quot;anchor&quot; href=&quot;https://discourse.openrobotics.org#p-116444-enterprise-security-built-in-3&quot; name=&quot;p-116444-enterprise-security-built-in-3&quot;&gt;&lt;/a&gt;&lt;img alt=&quot;:shield:&quot; class=&quot;emoji&quot; height=&quot;20&quot; src=&quot;https://emoji.discourse-cdn.com/noto/shield.png?v=15&quot; title=&quot;:shield:&quot; width=&quot;20&quot; /&gt; Enterprise Security Built-in&lt;/h3&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;h3&gt;&lt;a class=&quot;anchor&quot; href=&quot;https://discourse.openrobotics.org#p-116444-acknowledgement-4&quot; name=&quot;p-116444-acknowledgement-4&quot;&gt;&lt;/a&gt;&lt;img alt=&quot;:folded_hands:&quot; class=&quot;emoji&quot; height=&quot;20&quot; src=&quot;https://emoji.discourse-cdn.com/noto/folded_hands.png?v=15&quot; title=&quot;:folded_hands:&quot; width=&quot;20&quot; /&gt; Acknowledgement&lt;/h3&gt;
&lt;p&gt;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:&lt;/p&gt;
&lt;p&gt;• rosidl_typesupport_protobuf &lt;a href=&quot;https://github.com/eclipse-ecal/rosidl_typesupport_protobuf:&quot; rel=&quot;noopener nofollow ugc&quot;&gt;https://github.com/eclipse-ecal/rosidl_typesupport_protobuf:&lt;/a&gt; For providing the robust C++ TypeSupport handle and TypeAdapter generation engine.&lt;br /&gt;
• proto2ros &lt;a href=&quot;https://github.com/rai-opensource/proto2ros:&quot; rel=&quot;noopener nofollow ugc&quot;&gt;https://github.com/rai-opensource/proto2ros:&lt;/a&gt; For the brilliant AST parser bridging .proto definitions to synthetic IDL .msg.&lt;br /&gt;
• ros-central-registry &lt;a href=&quot;https://github.com/intrinsic-opensource/ros-central-registry/blob/main/examples:&quot; rel=&quot;noopener nofollow ugc&quot;&gt;https://github.com/intrinsic-opensource/ros-central-registry/blob/main/examples:&lt;/a&gt; For the excellent Bazel + ROS 2 integration examples and Protobuf C++ references.&lt;/p&gt;
            &lt;p&gt;&lt;small&gt;5 posts - 3 participants&lt;/small&gt;&lt;/p&gt;
            &lt;p&gt;&lt;a href=&quot;https://discourse.openrobotics.org/t/announcing-protoros2-use-protobuf-in-ros2-without-compromise/57152&quot;&gt;Read full topic&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Tue, 04 Aug 2026 07:11:37 +0000</pubDate>
</item>
<item>
	<title>ROS Discourse General: Boston Robot Hackers announces August Monthly Meeting</title>
	<guid isPermaLink="false">discourse.openrobotics.org-topic-57148</guid>
	<link>https://discourse.openrobotics.org/t/boston-robot-hackers-announces-august-monthly-meeting/57148</link>
	<description>&lt;p&gt;&lt;strong&gt;Boston Robot Hackers is pleased share info about our August meeting:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Topic: &lt;a href=&quot;https://bostonrobothackers.com/news/23-shivam-chopra-talk-announcement.html&quot; rel=&quot;noopener nofollow ugc&quot;&gt;Forward &amp;amp; Inverse Kinematics: The Math: From joint angles to end-effector poses&quot;&lt;/a&gt;&lt;br /&gt;
Speaker:  &lt;a href=&quot;https://www.linkedin.com/in/choprashivam/&quot; rel=&quot;noopener nofollow ugc&quot;&gt;Shivam Chopra, PhD&lt;/a&gt;&lt;br /&gt;
Date: August 6 2026&lt;br /&gt;
Time: 7:00pm to 9:00pm&lt;br /&gt;
Location: &lt;a href=&quot;https://www.artisansasylum.com&quot; rel=&quot;noopener nofollow ugc&quot;&gt;Artisans Asylum, Alston, Boston&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Also featured two lighting talks&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;a href=&quot;https://bostonrobothackers.com/projects/pupper.html&quot; rel=&quot;noopener nofollow ugc&quot;&gt;Pupper Project team&lt;/a&gt; will give an update of their progress and hopefully show off their puppy&lt;/li&gt;
&lt;li&gt;The &lt;a href=&quot;https://bwsi.mit.edu&quot; rel=&quot;noopener nofollow ugc&quot;&gt;Beaver Works Summer Institute&lt;/a&gt; will present highlights of this summerâ€™s program&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&lt;a class=&quot;anchor&quot; href=&quot;https://discourse.openrobotics.org#p-116439-please-regiser-brheventbritecom-1&quot; name=&quot;p-116439-please-regiser-brheventbritecom-1&quot;&gt;&lt;/a&gt;PLEASE REGISER! &lt;a href=&quot;http://brh.eventbrite.com&quot; rel=&quot;noopener nofollow ugc&quot;&gt;brh.eventbrite.com&lt;/a&gt;&lt;/h2&gt;
            &lt;p&gt;&lt;small&gt;1 post - 1 participant&lt;/small&gt;&lt;/p&gt;
            &lt;p&gt;&lt;a href=&quot;https://discourse.openrobotics.org/t/boston-robot-hackers-announces-august-monthly-meeting/57148&quot;&gt;Read full topic&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Tue, 04 Aug 2026 00:49:02 +0000</pubDate>
</item>
<item>
	<title>ROS Discourse General: ADEL 2.0 – C++/Rust Deterministic Execution Layer for Microsecond Edge Compute &amp; Robotics</title>
	<guid isPermaLink="false">discourse.openrobotics.org-topic-57134</guid>
	<link>https://discourse.openrobotics.org/t/adel-2-0-c-rust-deterministic-execution-layer-for-microsecond-edge-compute-robotics/57134</link>
	<description>&lt;p&gt;Hi ROS Community!&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Key Highlights:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Microsecond-latency spatial trajectory recalculation.&lt;/li&gt;
&lt;li&gt;Deterministic, zero-jitter C++/Rust core execution loop.&lt;/li&gt;
&lt;li&gt;Lightweight memory footprint suitable for embedded edge targets.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Interactive Monitor &amp;amp; Visualizer:&lt;/p&gt;
&lt;aside class=&quot;onebox allowlistedgeneric&quot;&gt;
  &lt;header class=&quot;source&quot;&gt;
      &lt;img alt=&quot;&quot; class=&quot;site-icon&quot; /&gt;

      &lt;a href=&quot;https://space-nova-monitor-2026.streamlit.app/&quot; rel=&quot;noopener nofollow ugc&quot; target=&quot;_blank&quot;&gt;Streamlit&lt;/a&gt;
  &lt;/header&gt;

  &lt;article class=&quot;onebox-body&quot;&gt;
    &lt;div class=&quot;aspect-image&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;thumbnail&quot; height=&quot;362&quot; src=&quot;https://us1.discourse-cdn.com/flex022/uploads/ros/optimized/3X/2/1/218b92db68e2d4573a627d69ac86776cdb791abf_2_690x362.jpeg&quot; width=&quot;690&quot; /&gt;&lt;/div&gt;

&lt;h3&gt;&lt;a href=&quot;https://space-nova-monitor-2026.streamlit.app/&quot; rel=&quot;noopener nofollow ugc&quot; target=&quot;_blank&quot;&gt;Space Nova | ADEL 2.0 Autonomous Flight Engine&lt;/a&gt;&lt;/h3&gt;

  &lt;p&gt;This app was built in Streamlit! Check it out and visit https://streamlit.io for more awesome community apps. ðŸŽˆ&lt;/p&gt;


  &lt;/article&gt;

  &lt;div class=&quot;onebox-metadata&quot;&gt;
    
    
  &lt;/div&gt;

  &lt;div style=&quot;clear: both;&quot;&gt;&lt;/div&gt;
&lt;/aside&gt;

&lt;p&gt;We are actively scheduling 15-day to 30-day Hardware-in-the-Loop (HIL) benchmarking pilots with robotics hardware teams and autonomous system integrators.&lt;/p&gt;
&lt;p&gt;Feel free to test the live monitor above or reach out at &lt;a href=&quot;mailto:annesham649@gmail.com&quot;&gt;annesham649@gmail.com&lt;/a&gt; if youâ€™d like to benchmark ADEL 2.0 against your current ROS control stack!&lt;/p&gt;
            &lt;p&gt;&lt;small&gt;1 post - 2 participants&lt;/small&gt;&lt;/p&gt;
            &lt;p&gt;&lt;a href=&quot;https://discourse.openrobotics.org/t/adel-2-0-c-rust-deterministic-execution-layer-for-microsecond-edge-compute-robotics/57134&quot;&gt;Read full topic&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Mon, 03 Aug 2026 16:08:07 +0000</pubDate>
</item>
<item>
	<title>ROS Discourse General: ROS 2 Realtime Support Package</title>
	<guid isPermaLink="false">discourse.openrobotics.org-topic-57113</guid>
	<link>https://discourse.openrobotics.org/t/ros-2-realtime-support-package/57113</link>
	<description>&lt;p&gt;We have been working on adding real-time functionality to &lt;code&gt;rcl&lt;/code&gt; and &lt;code&gt;rclcpp&lt;/code&gt; since 2022.&lt;br /&gt;
In response to this proposal, we have created a new package that provides real-time functionality without changing the existing packages.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/esol-community/ros2_realtime_support&quot; rel=&quot;noopener nofollow ugc&quot;&gt;esol-community/ros2_realtime_support&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a class=&quot;anchor&quot; href=&quot;https://discourse.openrobotics.org#p-116390-background-1&quot; name=&quot;p-116390-background-1&quot;&gt;&lt;/a&gt;Background&lt;/h2&gt;
&lt;p&gt;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 &lt;code&gt;rcl&lt;/code&gt; and &lt;code&gt;rclcpp&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;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.&lt;br /&gt;
Since &lt;code&gt;CallbackIsolatedExecutor&lt;/code&gt; was announced around the same time, we have also changed our policy to provide functionality in separate packages.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://discourse.openrobotics.org/t/update-rep-2017-prototype-and-executor-using-os-native-threads/43457&quot;&gt;Update REP-2017 prototype and executor using OS native threads - ROS/ROS General - Open Robotics Discourse&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a class=&quot;anchor&quot; href=&quot;https://discourse.openrobotics.org#p-116390-how-to-use-2&quot; name=&quot;p-116390-how-to-use-2&quot;&gt;&lt;/a&gt;How to use&lt;/h2&gt;
&lt;p&gt;For now, we provide &lt;code&gt;rclcpp&lt;/code&gt;-friendly classes. There are four things to do:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Add package description to CMakeLists.txt and package.xml&lt;/li&gt;
&lt;li&gt;Add a configuration file in YAML format&lt;/li&gt;
&lt;li&gt;Change the &lt;code&gt;main&lt;/code&gt; routine in the source file
&lt;ul&gt;
&lt;li&gt;Change &lt;code&gt;rclcpp::init&lt;/code&gt;, &lt;code&gt;rclcpp::shutdown&lt;/code&gt; to the &lt;code&gt;rclcpp_realtime&lt;/code&gt; namespace&lt;/li&gt;
&lt;li&gt;Change executors to be able to apply thread attributes provided by &lt;code&gt;rclcpp_realtime&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This allows thread attribute settings to be applied to executors by specifying an environment variable or a configuration file with &lt;code&gt;--ros-args&lt;/code&gt;.&lt;br /&gt;
See the README below for details.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/esol-community/ros2_realtime_support/blob/rolling/examples_rclcpp_realtime/README.md&quot; rel=&quot;noopener nofollow ugc&quot;&gt;ros2_realtime_support/examples_rclcpp_realtime/README.md at rolling · esol-community/ros2_realtime_support&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a class=&quot;anchor&quot; href=&quot;https://discourse.openrobotics.org#p-116390-discussion-future-work-3&quot; name=&quot;p-116390-discussion-future-work-3&quot;&gt;&lt;/a&gt;Discussion &amp;amp; Future Work&lt;/h2&gt;
&lt;p&gt;Despite the name, real-time support, not much has been done.&lt;br /&gt;
The thread attributes can be managed through the extended &lt;code&gt;rcl&lt;/code&gt; interfaces; APIs for thread operations, abstracted by these attributes, are provided, and executors that use the attributes have been added.&lt;/p&gt;
&lt;p&gt;In the future, we will change the mutexes and condition variables used in &lt;code&gt;rclcpp_realtime&lt;/code&gt; on an RTOS to call OS-native APIs.&lt;br /&gt;
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.&lt;/p&gt;
            &lt;p&gt;&lt;small&gt;1 post - 1 participant&lt;/small&gt;&lt;/p&gt;
            &lt;p&gt;&lt;a href=&quot;https://discourse.openrobotics.org/t/ros-2-realtime-support-package/57113&quot;&gt;Read full topic&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Sun, 02 Aug 2026 13:21:09 +0000</pubDate>
</item>
<item>
	<title>ROS Discourse General: Uv on ROS 2: a field report on workspace-level virtual environments — five failure modes and minimal colcon/ament proposals</title>
	<guid isPermaLink="false">discourse.openrobotics.org-topic-57111</guid>
	<link>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</link>
	<description>&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;: 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 (&lt;code&gt;[build_scripts] executable = /usr/bin/env python3&lt;/code&gt;) does not cover &lt;code&gt;--symlink-install&lt;/code&gt;, 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.&lt;/p&gt;
&lt;h1&gt;&lt;a class=&quot;anchor&quot; href=&quot;https://discourse.openrobotics.org#p-116387-background-1&quot; name=&quot;p-116387-background-1&quot;&gt;&lt;/a&gt;Background&lt;/h1&gt;
&lt;p&gt;PEP 668 disabled &lt;code&gt;pip install&lt;/code&gt; into the system Python on Ubuntu 24.04, and deep-learning robotics often needs exact version pins and custom package indexes (e.g. &lt;code&gt;torch==2.6.0+cu124&lt;/code&gt;) 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 &lt;a href=&quot;https://discourse.openrobotics.org/t/letting-python-be-python-should-ros-2-be-less-strict-with-the-python-ecosystem-notably-pip-conda-venv/52385&quot;&gt;Letting Python Be Python&lt;/a&gt;, the idea that workspaces could become venvs was raised, along with the question of what it would take to get there; &lt;a href=&quot;https://discourse.openrobotics.org/t/status-of-colcon-building-standards-based-python-packages/40578&quot;&gt;Status of Colcon building “standards-based” Python packages&lt;/a&gt; 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, &lt;code&gt;ros2 run&lt;/code&gt;, and &lt;code&gt;ros2 launch&lt;/code&gt; in use, and recorded what broke and why.&lt;/p&gt;
&lt;h1&gt;&lt;a class=&quot;anchor&quot; href=&quot;https://discourse.openrobotics.org#p-116387-what-works-and-what-breaks-2&quot; name=&quot;p-116387-what-works-and-what-breaks-2&quot;&gt;&lt;/a&gt;What works and what breaks&lt;/h1&gt;
&lt;p&gt;With a venv created by &lt;code&gt;uv venv --system-site-packages&lt;/code&gt; from the distro interpreter, and &lt;code&gt;python-preference = &quot;only-system&quot;&lt;/code&gt; set in the &lt;code&gt;[tool.uv]&lt;/code&gt; 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.&lt;/p&gt;

Setup: Ubuntu 24.04 / apt Jazzy / Python 3.12.3 / setuptools 68.1.2 / uv 0.11.28, and pyproject.toml &lt;a href=&quot;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/1&quot;&gt;(click for more details)&lt;/a&gt;
&lt;p&gt;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:&lt;/p&gt;
&lt;div class=&quot;md-table&quot;&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Failure mode&lt;/th&gt;
&lt;th&gt;Cause&lt;/th&gt;
&lt;th&gt;Current workaround&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Every shell needs &lt;em&gt;two&lt;/em&gt; setup steps (&lt;code&gt;source install/setup.bash&lt;/code&gt; &lt;strong&gt;and&lt;/strong&gt; venv activation), in order&lt;/td&gt;
&lt;td&gt;The ROS environment and the venv have no knowledge of each other&lt;/td&gt;
&lt;td&gt;Hand-written shell setup per project&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;colcon treats directories inside the venv as packages during discovery&lt;/td&gt;
&lt;td&gt;Package discovery descends into every subdirectory&lt;/td&gt;
&lt;td&gt;&lt;code&gt;touch .venv/COLCON_IGNORE&lt;/code&gt; (&lt;a href=&quot;https://docs.ros.org/en/jazzy/How-To-Guides/Using-Python-Packages.html&quot;&gt;documented&lt;/a&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ros2 run&lt;/code&gt; executes ament_python nodes with the system interpreter even while a venv is active&lt;/td&gt;
&lt;td&gt;colcon runs &lt;code&gt;setup.py&lt;/code&gt; with its own &lt;code&gt;sys.executable&lt;/code&gt;; setuptools writes that interpreter into console-script shebangs&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Incomplete — see next section&lt;/strong&gt; (&lt;a href=&quot;https://github.com/ros2/ros2/issues/1094&quot; rel=&quot;noopener nofollow ugc&quot;&gt;ros2/ros2#1094&lt;/a&gt;, open since 2021)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;numpy 2.x in the venv breaks apt-built extensions (cv_bridge) at import&lt;/td&gt;
&lt;td&gt;Jazzy binaries are built against numpy 1.26’s C ABI&lt;/td&gt;
&lt;td&gt;Pin &lt;code&gt;numpy&amp;lt;2&lt;/code&gt; in the workspace&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;uv provisions its own standalone CPython, which mismatches distro-built C extensions&lt;/td&gt;
&lt;td&gt;uv’s default &lt;code&gt;python-preference&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;python-preference = &quot;only-system&quot;&lt;/code&gt; in pyproject.toml (&lt;code&gt;[tool.uv]&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;h1&gt;&lt;a class=&quot;anchor&quot; href=&quot;https://discourse.openrobotics.org#p-116387-the-remaining-gap-3&quot; name=&quot;p-116387-the-remaining-gap-3&quot;&gt;&lt;/a&gt;The remaining gap&lt;/h1&gt;
&lt;p&gt;Four of the five have complete workarounds; &lt;span class=&quot;hashtag-raw&quot;&gt;#3&lt;/span&gt; does not. A known mitigation is &lt;code&gt;[build_scripts] executable = /usr/bin/env python3&lt;/code&gt; in setup.cfg (mechanism related to &lt;a href=&quot;https://github.com/colcon/colcon-core/pull/183&quot; rel=&quot;noopener nofollow ugc&quot;&gt;colcon-core#183&lt;/a&gt;, reported in &lt;a href=&quot;https://github.com/ros2/ros2/issues/1094#issuecomment-2870744418&quot; rel=&quot;noopener nofollow ugc&quot;&gt;ros2/ros2#1094&lt;/a&gt;). We measured it on Jazzy:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Regular &lt;code&gt;colcon build&lt;/code&gt;: &lt;strong&gt;works&lt;/strong&gt; — scripts get env shebangs and resolve to the active venv.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;colcon build --symlink-install&lt;/code&gt;: &lt;strong&gt;not applied&lt;/strong&gt; — the develop/editable code path keeps &lt;code&gt;#!/usr/bin/python3&lt;/code&gt;, so the mode commonly used during development is not covered.&lt;/li&gt;
&lt;li&gt;Launching colcon from the venv itself — &lt;code&gt;.venv/bin/python -m colcon build&lt;/code&gt; — covers both modes (with &lt;code&gt;--system-site-packages&lt;/code&gt;, the apt-installed colcon is importable from the venv, so nothing extra needs to be installed). The limitation: the venv’s absolute path is written into the generated shebangs, so the result does not survive venv recreation and &lt;code&gt;install/&lt;/code&gt; is not relocatable.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bottom line: &lt;strong&gt;when colcon is launched from the system Python — the common configuration in tutorials and CI — there is currently no complete workaround.&lt;/strong&gt;&lt;/p&gt;
&lt;h1&gt;&lt;a class=&quot;anchor&quot; href=&quot;https://discourse.openrobotics.org#p-116387-proposed-changes-4&quot; name=&quot;p-116387-proposed-changes-4&quot;&gt;&lt;/a&gt;Proposed changes&lt;/h1&gt;
&lt;p&gt;One design principle for all four: &lt;strong&gt;opt-in, no fixed venv location or name, and no behavior change for workspaces that do not involve a venv.&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;P1 — discovery&lt;/strong&gt;: skip any directory containing &lt;code&gt;pyvenv.cfg&lt;/code&gt; (the PEP 405 marker every venv has) during package discovery — an automatic &lt;code&gt;COLCON_IGNORE&lt;/code&gt; for venvs of any name, in any location.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;P2 — shebangs&lt;/strong&gt;: an option to emit &lt;code&gt;#!/usr/bin/env python3&lt;/code&gt; shebangs on both the install and the develop (&lt;code&gt;--symlink-install&lt;/code&gt;) code paths. The setup.cfg mitigation covers only the install path and has to be repeated in every package; an option at the build-tool level would cover a whole workspace at once. Where no venv is active, &lt;code&gt;env python3&lt;/code&gt; resolves to &lt;code&gt;/usr/bin/python3&lt;/code&gt; as before.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;P3 — activation&lt;/strong&gt;: record the path of the interpreter colcon built with under &lt;code&gt;install/&lt;/code&gt;, and let &lt;code&gt;setup.bash&lt;/code&gt; read it and, if that interpreter belongs to a venv, activate it (with an opt-out environment variable). This is a minimal mechanism for the “workspaces as venvs” idea from the threads above, and it leaves the venv’s location entirely up to the user.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;&lt;a class=&quot;anchor&quot; href=&quot;https://discourse.openrobotics.org#p-116387-relation-to-existing-work-5&quot; name=&quot;p-116387-relation-to-existing-work-5&quot;&gt;&lt;/a&gt;Relation to existing work&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/nzlz/colcon-uv&quot; rel=&quot;noopener nofollow ugc&quot;&gt;colcon-uv&lt;/a&gt; manages Python dependencies per package, installed during &lt;code&gt;colcon build&lt;/code&gt;. This post focuses on one environment and one lockfile per workspace; the two granularities address different needs (per-package isolation vs. one shared environment for a whole launch graph) and can coexist.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://discourse.openrobotics.org/t/pixi-as-a-co-official-way-of-installing-ros-on-linux/51764&quot;&gt;Pixi as a co-official installation method&lt;/a&gt; concerns how ROS itself is installed. The scope here is different and does not compete with it: keeping the standard apt installation and making the Python layer of one workspace reproducible.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://discourse.openrobotics.org/t/ros-python-wheels-pip-installable-ros-2-packages/49688&quot;&gt;ros-python-wheels&lt;/a&gt; distributes ROS client libraries as pip-installable wheels. The direction here is complementary: using pip/uv-managed dependencies inside a standard, apt-based ROS workspace.&lt;/li&gt;
&lt;li&gt;A similar uv setup (&lt;code&gt;--system-site-packages&lt;/code&gt; + lockfile) has been shared in &lt;a href=&quot;https://discourse.openrobotics.org/t/status-of-colcon-building-standards-based-python-packages/40578&quot;&gt;Status of Colcon building “standards-based” Python packages&lt;/a&gt;, with nodes started directly through &lt;code&gt;python&lt;/code&gt;. The measurements above cover the case where colcon, &lt;code&gt;ros2 run&lt;/code&gt;, and &lt;code&gt;ros2 launch&lt;/code&gt; stay in use.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;&lt;a class=&quot;anchor&quot; href=&quot;https://discourse.openrobotics.org#p-116387-open-questions-6&quot; name=&quot;p-116387-open-questions-6&quot;&gt;&lt;/a&gt;Open questions&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;For P1: would a package-identification extension in colcon-core, modeled on the existing &lt;code&gt;COLCON_IGNORE&lt;/code&gt; one, be an acceptable shape — or would this fit better as a separately distributed extension package?&lt;/li&gt;
&lt;li&gt;For P2, which layer would be better suited to handle the develop-path shebang — colcon-core, or the setuptools develop machinery?&lt;/li&gt;
&lt;li&gt;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)?&lt;/li&gt;
&lt;/ol&gt;
            &lt;p&gt;&lt;small&gt;17 posts - 6 participants&lt;/small&gt;&lt;/p&gt;
            &lt;p&gt;&lt;a href=&quot;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&quot;&gt;Read full topic&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Sun, 02 Aug 2026 09:48:52 +0000</pubDate>
</item>
<item>
	<title>ROS Discourse General: VectorField Planner: 7 µs global path queries with strict optimality — REST API for occupancy grids, Nav2 plugin on roadmap</title>
	<guid isPermaLink="false">discourse.openrobotics.org-topic-57094</guid>
	<link>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</link>
	<description>&lt;p&gt;Hi all,&lt;/p&gt;
&lt;p&gt;I’ve been working on a global planning engine aimed at warehouse/fleet&lt;br /&gt;
deployments, and I just opened a free API tier. I’d love feedback from people&lt;br /&gt;
running real Nav2 fleets.&lt;/p&gt;
&lt;h2&gt;&lt;a class=&quot;anchor&quot; href=&quot;https://discourse.openrobotics.org#p-116337-what-it-does-1&quot; name=&quot;p-116337-what-it-does-1&quot;&gt;&lt;/a&gt;What it does&lt;/h2&gt;
&lt;p&gt;You upload an occupancy grid once. It solves a field for your goal (charging&lt;br /&gt;
station, pick station, dock), and from then on every path query — from any&lt;br /&gt;
start cell — returns a &lt;strong&gt;strictly optimal&lt;/strong&gt; path in microseconds, without&lt;br /&gt;
re-searching the map.&lt;/p&gt;
&lt;p&gt;The pitch for fleet operators: the cost of global planning stops scaling with&lt;br /&gt;
the number of robots.&lt;/p&gt;
&lt;h2&gt;&lt;a class=&quot;anchor&quot; href=&quot;https://discourse.openrobotics.org#p-116337-measured-numbers-c-core-single-thread-low-end-2-core-cpu-2&quot; name=&quot;p-116337-measured-numbers-c-core-single-thread-low-end-2-core-cpu-2&quot;&gt;&lt;/a&gt;Measured numbers (C++ core, single thread, low-end 2-core CPU)&lt;/h2&gt;
&lt;p&gt;1M-cell 3D warehouse map (100³, mezzanine floors + rack walls):&lt;/p&gt;
&lt;div class=&quot;md-table&quot;&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;VectorField&lt;/th&gt;
&lt;th&gt;A* (C++, typical)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;One-time solve per goal&lt;/td&gt;
&lt;td&gt;47 ms&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Query, any start pose&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;7 µs&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~5 ms, every query&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Optimality&lt;/td&gt;
&lt;td&gt;1.0000 (BFS-verified)&lt;/td&gt;
&lt;td&gt;optimal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Peak memory&lt;/td&gt;
&lt;td&gt;5 MB&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10,000 simultaneous queries&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;70 ms total&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~50 s&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;p&gt;Dynamic sites: obstacle &lt;em&gt;removal&lt;/em&gt; (cleared shelves, opened gates) is patched&lt;br /&gt;
exactly, 5.9× faster than a rebuild, zero error. Every solve is a fixed,&lt;br /&gt;
bounded number of identical array operations, so worst-case latency is known&lt;br /&gt;
in advance — relevant if you need timing guarantees for certification.&lt;/p&gt;
&lt;h2&gt;&lt;a class=&quot;anchor&quot; href=&quot;https://discourse.openrobotics.org#p-116337-where-this-fits-in-a-ros-stack-3&quot; name=&quot;p-116337-where-this-fits-in-a-ros-stack-3&quot;&gt;&lt;/a&gt;Where this fits in a ROS stack&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Input: an occupancy grid (the same data you already publish on &lt;code&gt;/map&lt;/code&gt; or&lt;br /&gt;
keep in a &lt;code&gt;costmap_2d&lt;/code&gt; layer)&lt;/li&gt;
&lt;li&gt;Output: an optimal cell path per query&lt;/li&gt;
&lt;li&gt;Today: plain REST API, so anything that can HTTP can plan. A native &lt;strong&gt;Nav2&lt;br /&gt;
global-planner plugin (drop-in replacement for Navfn) is on the roadmap&lt;/strong&gt; —&lt;br /&gt;
the field-reuse model maps nicely onto multi-goal / fleet planners, which is&lt;br /&gt;
exactly where Navfn recomputes the most.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Typical integration I’m picturing: your fleet manager uploads the map once per&lt;br /&gt;
shift (or per layout change), then every robot’s global plan request is a&lt;br /&gt;
~7 µs lookup instead of a Navfn re-search.&lt;/p&gt;
&lt;h2&gt;&lt;a class=&quot;anchor&quot; href=&quot;https://discourse.openrobotics.org#p-116337-honest-limitations-4&quot; name=&quot;p-116337-honest-limitations-4&quot;&gt;&lt;/a&gt;Honest limitations&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Built for structured, mostly-static environments — warehouses, factories,&lt;br /&gt;
indoor drones. Not for highly dynamic unstructured spaces.&lt;/li&gt;
&lt;li&gt;Obstacle insertion currently uses a repair fallback; exact fast insertion is&lt;br /&gt;
roadmap work.&lt;/li&gt;
&lt;li&gt;It’s a hosted API (with an on-prem license option), not an open-source&lt;br /&gt;
package. Free tier is genuinely free: 100³ maps, 1,000 solves + 100K&lt;br /&gt;
queries/month.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&lt;a class=&quot;anchor&quot; href=&quot;https://discourse.openrobotics.org#p-116337-links-5&quot; name=&quot;p-116337-links-5&quot;&gt;&lt;/a&gt;Links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Live browser demo (races the solver against A*, no sign-up):&lt;br /&gt;
&lt;a href=&quot;https://vectorfield.top&quot; rel=&quot;noopener nofollow ugc&quot;&gt;https://vectorfield.top&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Free API key (instant): &lt;a href=&quot;https://vectorfield.top&quot; rel=&quot;noopener nofollow ugc&quot;&gt;https://vectorfield.top&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;API docs: &lt;a class=&quot;inline-onebox&quot; href=&quot;https://vectorfield.top/docs&quot; rel=&quot;noopener nofollow ugc&quot;&gt;VectorField Planner API - Swagger UI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Questions I’d especially love feedback on:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;For those running multi-robot fleets: how do you handle global replanning&lt;br /&gt;
cost today? Is 5 ms/query/robot actually hurting you, or is local planning&lt;br /&gt;
the real bottleneck?&lt;/li&gt;
&lt;li&gt;What would a Nav2 plugin need to do for you to consider it (topic/action&lt;br /&gt;
interface, costmap update cadence, multi-goal support)?&lt;/li&gt;
&lt;li&gt;Any interest in an on-prem / offline deployment for sites without&lt;br /&gt;
connectivity?&lt;/li&gt;
&lt;/ol&gt;
            &lt;p&gt;&lt;small&gt;5 posts - 3 participants&lt;/small&gt;&lt;/p&gt;
            &lt;p&gt;&lt;a href=&quot;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&quot;&gt;Read full topic&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Fri, 31 Jul 2026 17:02:06 +0000</pubDate>
</item>
<item>
	<title>ROS Discourse General: A new tool to create ros2 package with executables, c++ and Python node in one package</title>
	<guid isPermaLink="false">discourse.openrobotics.org-topic-57089</guid>
	<link>https://discourse.openrobotics.org/t/a-new-tool-to-create-ros2-package-with-executables-c-and-python-node-in-one-package/57089</link>
	<description>&lt;p&gt;site: &lt;a class=&quot;inline-onebox&quot; href=&quot;https://github.com/yjphhw/ros2_pkg_create&quot; rel=&quot;noopener nofollow ugc&quot;&gt;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&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;useage is very easy, just download the ros2_pkg_create.py and put in a workspace(direction),&lt;/p&gt;
&lt;p&gt;and run &lt;img alt=&quot;:slight_smile:&quot; class=&quot;emoji&quot; height=&quot;20&quot; src=&quot;https://emoji.discourse-cdn.com/noto/slight_smile.png?v=15&quot; title=&quot;:slight_smile:&quot; width=&quot;20&quot; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;lang-auto&quot;&gt;python3 ros2_pkg_create &amp;lt;package_name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;such as create demo_pkg:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;lang-auto&quot;&gt;python3 ros2_pkg_create demo_pkg
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;output is :&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;:rocket:&quot; class=&quot;emoji&quot; height=&quot;20&quot; src=&quot;https://emoji.discourse-cdn.com/noto/rocket.png?v=15&quot; title=&quot;:rocket:&quot; width=&quot;20&quot; /&gt; 正在生成混合功能包: my_pkg&lt;br /&gt;
&lt;img alt=&quot;:white_check_mark:&quot; class=&quot;emoji&quot; height=&quot;20&quot; src=&quot;https://emoji.discourse-cdn.com/noto/white_check_mark.png?v=15&quot; title=&quot;:white_check_mark:&quot; width=&quot;20&quot; /&gt; 已创建: src/my_pkg/CMakeLists.txt&lt;br /&gt;
&lt;img alt=&quot;:white_check_mark:&quot; class=&quot;emoji&quot; height=&quot;20&quot; src=&quot;https://emoji.discourse-cdn.com/noto/white_check_mark.png?v=15&quot; title=&quot;:white_check_mark:&quot; width=&quot;20&quot; /&gt; 已创建: src/my_pkg/package.xml&lt;br /&gt;
&lt;img alt=&quot;:white_check_mark:&quot; class=&quot;emoji&quot; height=&quot;20&quot; src=&quot;https://emoji.discourse-cdn.com/noto/white_check_mark.png?v=15&quot; title=&quot;:white_check_mark:&quot; width=&quot;20&quot; /&gt; 已创建: src/my_pkg/setup.cfg&lt;br /&gt;
&lt;img alt=&quot;:white_check_mark:&quot; class=&quot;emoji&quot; height=&quot;20&quot; src=&quot;https://emoji.discourse-cdn.com/noto/white_check_mark.png?v=15&quot; title=&quot;:white_check_mark:&quot; width=&quot;20&quot; /&gt; 已创建: src/my_pkg/LICENSE&lt;br /&gt;
&lt;img alt=&quot;:white_check_mark:&quot; class=&quot;emoji&quot; height=&quot;20&quot; src=&quot;https://emoji.discourse-cdn.com/noto/white_check_mark.png?v=15&quot; title=&quot;:white_check_mark:&quot; width=&quot;20&quot; /&gt; 已创建: src/my_pkg/src/hello_world.cpp&lt;br /&gt;
&lt;img alt=&quot;:white_check_mark:&quot; class=&quot;emoji&quot; height=&quot;20&quot; src=&quot;https://emoji.discourse-cdn.com/noto/white_check_mark.png?v=15&quot; title=&quot;:white_check_mark:&quot; width=&quot;20&quot; /&gt; 已创建目录: src/my_pkg/include/my_pkg/&lt;br /&gt;
&lt;img alt=&quot;:white_check_mark:&quot; class=&quot;emoji&quot; height=&quot;20&quot; src=&quot;https://emoji.discourse-cdn.com/noto/white_check_mark.png?v=15&quot; title=&quot;:white_check_mark:&quot; width=&quot;20&quot; /&gt; 已创建: src/my_pkg/src/script_node.py&lt;br /&gt;
&lt;img alt=&quot;:white_check_mark:&quot; class=&quot;emoji&quot; height=&quot;20&quot; src=&quot;https://emoji.discourse-cdn.com/noto/white_check_mark.png?v=15&quot; title=&quot;:white_check_mark:&quot; width=&quot;20&quot; /&gt; 已创建: src/my_pkg/my_pkg/&lt;strong&gt;init&lt;/strong&gt;.py&lt;br /&gt;
&lt;img alt=&quot;:white_check_mark:&quot; class=&quot;emoji&quot; height=&quot;20&quot; src=&quot;https://emoji.discourse-cdn.com/noto/white_check_mark.png?v=15&quot; title=&quot;:white_check_mark:&quot; width=&quot;20&quot; /&gt; 已创建: src/my_pkg/my_pkg/py_node.py&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;:tada:&quot; class=&quot;emoji&quot; height=&quot;20&quot; src=&quot;https://emoji.discourse-cdn.com/noto/tada.png?v=15&quot; title=&quot;:tada:&quot; width=&quot;20&quot; /&gt; 功能包 [my_pkg] 生成完毕！&lt;br /&gt;
&lt;img alt=&quot;:light_bulb:&quot; class=&quot;emoji&quot; height=&quot;20&quot; src=&quot;https://emoji.discourse-cdn.com/noto/light_bulb.png?v=15&quot; title=&quot;:light_bulb:&quot; width=&quot;20&quot; /&gt; 提示: 记得在 CMakeLists.txt 中根据需要补充依赖项。&lt;/p&gt;
&lt;p&gt;按照以下步骤进行下一步操作:&lt;br /&gt;
&lt;img alt=&quot;:light_bulb:&quot; class=&quot;emoji&quot; height=&quot;20&quot; src=&quot;https://emoji.discourse-cdn.com/noto/light_bulb.png?v=15&quot; title=&quot;:light_bulb:&quot; width=&quot;20&quot; /&gt; 1.编译功能包: colcon build --symlink-install --packages-select my_pkg&lt;br /&gt;
&lt;img alt=&quot;:light_bulb:&quot; class=&quot;emoji&quot; height=&quot;20&quot; src=&quot;https://emoji.discourse-cdn.com/noto/light_bulb.png?v=15&quot; title=&quot;:light_bulb:&quot; width=&quot;20&quot; /&gt; 2.安装功能包: source install/setup.bash&lt;br /&gt;
&lt;img alt=&quot;:rocket:&quot; class=&quot;emoji&quot; height=&quot;20&quot; src=&quot;https://emoji.discourse-cdn.com/noto/rocket.png?v=15&quot; title=&quot;:rocket:&quot; width=&quot;20&quot; /&gt; 3.测试可执行程序: hello_world&lt;br /&gt;
&lt;img alt=&quot;:rocket:&quot; class=&quot;emoji&quot; height=&quot;20&quot; src=&quot;https://emoji.discourse-cdn.com/noto/rocket.png?v=15&quot; title=&quot;:rocket:&quot; width=&quot;20&quot; /&gt; 4.测试 C++节点: ros2 run my_pkg hello_world&lt;br /&gt;
&lt;img alt=&quot;:rocket:&quot; class=&quot;emoji&quot; height=&quot;20&quot; src=&quot;https://emoji.discourse-cdn.com/noto/rocket.png?v=15&quot; title=&quot;:rocket:&quot; width=&quot;20&quot; /&gt; 5.测试 Python 节点: ros2 run my_pkg script_node&lt;br /&gt;
&lt;img alt=&quot;:rocket:&quot; class=&quot;emoji&quot; height=&quot;20&quot; src=&quot;https://emoji.discourse-cdn.com/noto/rocket.png?v=15&quot; title=&quot;:rocket:&quot; width=&quot;20&quot; /&gt; 6.测试 Python 模块: ros2 run my_pkg my_py_node&lt;/p&gt;
&lt;p&gt;follow the instructions in output, you can build and run package in one minute.&lt;/p&gt;
&lt;p&gt;you will get a ros2 pkg template, you can easily add C++ , Python and normal executable.&lt;/p&gt;
&lt;p&gt;welcom to Star the project: &lt;a class=&quot;inline-onebox&quot; href=&quot;https://github.com/yjphhw/ros2_pkg_create&quot; rel=&quot;noopener nofollow ugc&quot;&gt;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&lt;/a&gt;&lt;/p&gt;
            &lt;p&gt;&lt;small&gt;1 post - 1 participant&lt;/small&gt;&lt;/p&gt;
            &lt;p&gt;&lt;a href=&quot;https://discourse.openrobotics.org/t/a-new-tool-to-create-ros2-package-with-executables-c-and-python-node-in-one-package/57089&quot;&gt;Read full topic&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Fri, 31 Jul 2026 13:29:54 +0000</pubDate>
</item>
<item>
	<title>ROS Discourse General: How do you understand the architecture of a large ROS 2 workspace?</title>
	<guid isPermaLink="false">discourse.openrobotics.org-topic-57075</guid>
	<link>https://discourse.openrobotics.org/t/how-do-you-understand-the-architecture-of-a-large-ros-2-workspace/57075</link>
	<description>&lt;p&gt;Hi everyone,&lt;/p&gt;
&lt;p&gt;I’m curious about how other ROS 2 developers approach understanding a large or unfamiliar workspace.&lt;/p&gt;
&lt;p&gt;When joining an existing project or reviewing a large codebase, I often find myself asking questions like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Which packages depend on each other?&lt;/li&gt;
&lt;li&gt;Which nodes communicate together?&lt;/li&gt;
&lt;li&gt;What topics, services, and actions are used?&lt;/li&gt;
&lt;li&gt;Are there isolated nodes or communication issues?&lt;/li&gt;
&lt;li&gt;Does the implementation still match the intended architecture?&lt;/li&gt;
&lt;li&gt;How do you quickly get a high-level understanding before running the system?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I’m interested in learning about your workflow.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Which tools do you use?&lt;/li&gt;
&lt;li&gt;Do you rely mostly on runtime tools such as &lt;code&gt;rqt_graph&lt;/code&gt;, Foxglove, or RViz?&lt;/li&gt;
&lt;li&gt;Do you have internal scripts or documentation that help?&lt;/li&gt;
&lt;li&gt;Do you manually inspect the source code?&lt;/li&gt;
&lt;li&gt;Do you perform any kind of static analysis before launching the system?&lt;/li&gt;
&lt;li&gt;How do you review architectural changes in CI?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I’m particularly interested in workflows for medium-to-large industrial projects where a workspace may contain dozens (or even hundreds) of packages.&lt;/p&gt;
&lt;p&gt;Looking forward to hearing how everyone approaches this problem and what has worked well in practice.&lt;/p&gt;
            &lt;p&gt;&lt;small&gt;7 posts - 5 participants&lt;/small&gt;&lt;/p&gt;
            &lt;p&gt;&lt;a href=&quot;https://discourse.openrobotics.org/t/how-do-you-understand-the-architecture-of-a-large-ros-2-workspace/57075&quot;&gt;Read full topic&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Thu, 30 Jul 2026 16:51:41 +0000</pubDate>
</item>
<item>
	<title>ROS Discourse General: Jenkins version upgrade of build.ros2.org [Scheduled Buildfarm Downtime]</title>
	<guid isPermaLink="false">discourse.openrobotics.org-topic-57073</guid>
	<link>https://discourse.openrobotics.org/t/jenkins-version-upgrade-of-build-ros2-org-scheduled-buildfarm-downtime/57073</link>
	<description>&lt;p&gt;Hello ROS Community,&lt;/p&gt;
&lt;p&gt;The OSRF Infrastructure Project is planning to update the Jenkins version of &lt;a href=&quot;https://build.ros2.org/&quot; rel=&quot;noopener nofollow ugc&quot;&gt;https://build.ros2.org&lt;/a&gt; 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:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://build.ros2.org/&quot; rel=&quot;noopener nofollow ugc&quot;&gt;https://build.ros2.org&lt;/a&gt; (Jenkins) will be temporarily unavailable or in shutdown mode (not running jobs).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;The migration is scheduled to begin on Monday &lt;span class=&quot;discourse-local-date&quot;&gt;Mon, Aug 3, 2026 11:30 AM UTC&lt;/span&gt; (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.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Att,&lt;/p&gt;
&lt;p&gt;Cristóbal&lt;/p&gt;
            &lt;p&gt;&lt;small&gt;4 posts - 2 participants&lt;/small&gt;&lt;/p&gt;
            &lt;p&gt;&lt;a href=&quot;https://discourse.openrobotics.org/t/jenkins-version-upgrade-of-build-ros2-org-scheduled-buildfarm-downtime/57073&quot;&gt;Read full topic&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Thu, 30 Jul 2026 16:37:57 +0000</pubDate>
</item>
<item>
	<title>ROS Discourse General: Chinese legged/humanoids banned in USA, what are the alternatives?</title>
	<guid isPermaLink="false">discourse.openrobotics.org-topic-57040</guid>
	<link>https://discourse.openrobotics.org/t/chinese-legged-humanoids-banned-in-usa-what-are-the-alternatives/57040</link>
	<description>&lt;p&gt;Just saw that newly imported &lt;a href=&quot;https://www.reuters.com/world/trump-administration-ban-new-chinese-robots-inverters-protecting-us-ai-buildout-2026-07-28/&quot; rel=&quot;noopener nofollow ugc&quot;&gt;Chinese legged and humanoid robots are now banned in USA&lt;/a&gt;, 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).&lt;/p&gt;
&lt;p&gt;What other alternatives are there?&lt;br /&gt;
Will this spur open source/open hardware design?&lt;/p&gt;
&lt;p&gt;Again, Iâ€™m adding poll of what legged/humanoid robots have you used/planned to use &lt;img alt=&quot;:down_arrow:&quot; class=&quot;emoji&quot; height=&quot;20&quot; src=&quot;https://emoji.discourse-cdn.com/noto/down_arrow.png?v=15&quot; title=&quot;:down_arrow:&quot; width=&quot;20&quot; /&gt;&lt;/p&gt;

&lt;div class=&quot;poll-title&quot;&gt;What legged/humanoid robots have you used/will use?&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Chinese( Unitree Go2, G1, etc)&lt;/li&gt;
&lt;li&gt;Boston Dynamics (Spot, Atlas, etc)&lt;/li&gt;
&lt;li&gt;Musk(Optimus)&lt;/li&gt;
&lt;li&gt;Figure&lt;/li&gt;
&lt;li&gt;Anybotics&lt;/li&gt;
&lt;li&gt;Open source/ Open Hardware&lt;/li&gt;
&lt;li&gt;Other&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://discourse.openrobotics.org/t/chinese-legged-humanoids-banned-in-usa-what-are-the-alternatives/57040/1&quot;&gt;Click to view the poll.&lt;/a&gt;&lt;/p&gt;
            &lt;p&gt;&lt;small&gt;4 posts - 2 participants&lt;/small&gt;&lt;/p&gt;
            &lt;p&gt;&lt;a href=&quot;https://discourse.openrobotics.org/t/chinese-legged-humanoids-banned-in-usa-what-are-the-alternatives/57040&quot;&gt;Read full topic&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Wed, 29 Jul 2026 08:24:43 +0000</pubDate>
</item>
<item>
	<title>ROS Discourse General: Learning Zenoh: A New Communication Layer for ROS 2</title>
	<guid isPermaLink="false">discourse.openrobotics.org-topic-57014</guid>
	<link>https://discourse.openrobotics.org/t/learning-zenoh-a-new-communication-layer-for-ros-2/57014</link>
	<description>&lt;p&gt;Hi everyone,&lt;/p&gt;
&lt;p&gt;Recently, I’ve been learning more about &lt;strong&gt;Zenoh&lt;/strong&gt; 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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;This post is the first step in my exploraiton of Zenoh. Over the next few weeks, I plan to document:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Installing Zenoh with ROS 2 Humble&lt;/li&gt;
&lt;li&gt;Integrating Zenoh into a existing ROS 2 project&lt;/li&gt;
&lt;li&gt;Comparing DDS and Zenoh in practical robotics scenarios&lt;/li&gt;
&lt;li&gt;Sharing performance observation from a real robot&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you’ve already used Zenoh in your projects, I’d be happy to hear about your experences, recommendations, or challenges you’ve encountered.&lt;/p&gt;
&lt;p&gt;&lt;span lang=&quot;en&quot;&gt;My article on the relevant topic:&lt;/span&gt;&lt;br /&gt;
Medium: &lt;a href=&quot;https://medium.com/@bengokaysaglam/beyond-dds-introducing-zenoh-for-modern-ros-2-systems-1cacbfcc21f3&quot; rel=&quot;noopener nofollow ugc&quot;&gt;https://medium.com/@bengokaysaglam/beyond-dds-introducing-zenoh-for-modern-ros-2-systems-1cacbfcc21f3&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Looking forward to learning from the community!&lt;/p&gt;
            &lt;p&gt;&lt;small&gt;3 posts - 2 participants&lt;/small&gt;&lt;/p&gt;
            &lt;p&gt;&lt;a href=&quot;https://discourse.openrobotics.org/t/learning-zenoh-a-new-communication-layer-for-ros-2/57014&quot;&gt;Read full topic&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Tue, 28 Jul 2026 12:08:33 +0000</pubDate>
</item>

</channel>
</rss>
