<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Robotics on SGVD.ai</title>
    <link>https://sgvd.ai/tags/robotics/</link>
    <description>Recent content in Robotics on SGVD.ai</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Wed, 17 Jun 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://sgvd.ai/tags/robotics/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Fast Zero-Copy Messaging with ROS 2 Intra-Process Communication</title>
      <link>https://sgvd.ai/post/2026-06-17-ros2-intra-process-communication/</link>
      <pubDate>Wed, 17 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://sgvd.ai/post/2026-06-17-ros2-intra-process-communication/</guid>
      <description>&lt;p&gt;ROS 2 uses so-called &amp;ldquo;middleware&amp;rdquo; to perform communication between nodes.
Over the years different middleware vendors have vied to become the Chosen Implementation, importantly by focusing on message passing efficiency.
However:&lt;/p&gt;
&lt;p&gt;You can be even more efficient by just &lt;strong&gt;skipping the middleware completely&lt;/strong&gt; and achieve true &lt;strong&gt;zero-copy messaging&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;And all you have to do is apply a simple convention:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;All publishers SHOULD allocate messages using unique pointers.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;All publishers SHOULD publish the messages using &lt;code&gt;std::move&lt;/code&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;All subscribers SHOULD expect either a &lt;code&gt;ConstSharedPtr&lt;/code&gt; or a const reference.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enable &lt;code&gt;use_intra_process_comms&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Read on to understand why.&lt;/p&gt;</description>
    </item>
    <item>
      <title>ROS 2 with Nix</title>
      <link>https://sgvd.ai/post/2026-03-25-ros2-with-nix/</link>
      <pubDate>Wed, 25 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://sgvd.ai/post/2026-03-25-ros2-with-nix/</guid>
      <description>&lt;p&gt;Recently I started getting into the world of &lt;a href=&#34;https://nixos.org/explore/&#34;&gt;Nix&lt;/a&gt;.
First, to manage my user environment using &lt;a href=&#34;https://github.com/nix-community/home-manager&#34;&gt;Home Manager&lt;/a&gt;, and now to manage my ROS 2 development environment.
&lt;em&gt;On any Linux distribution&lt;/em&gt;.&lt;/p&gt;
&lt;h2 id=&#34;tldr&#34;&gt;TL;DR&lt;/h2&gt;
&lt;p&gt;Want to have a full ROS 2 development environment, completely from scratch &lt;em&gt;on any Linux distribution&lt;/em&gt;?
Just run these two commands:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sh &amp;lt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;curl --proto &lt;span class=&#34;s1&#34;&gt;&amp;#39;=https&amp;#39;&lt;/span&gt; --tlsv1.2 -L https://nixos.org/nix/install&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; --daemon
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nix develop &lt;span class=&#34;s1&#34;&gt;&amp;#39;github:lopsided98/nix-ros-overlay/master#example-ros2-desktop-jazzy&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Boom, you&amp;rsquo;re in a ROS 2 Jazzy development shell, where you can just immediately run something like:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Raspberry Pi &#43; ROS 2 &#43; Camera</title>
      <link>https://sgvd.ai/post/2020-10-08-raspberry-pi-ros-2-camera/</link>
      <pubDate>Thu, 08 Oct 2020 00:00:00 +0000</pubDate>
      <guid>https://sgvd.ai/post/2020-10-08-raspberry-pi-ros-2-camera/</guid>
      <description>&lt;p&gt;I have written before about running ROS 2 on different Single Board
Computers (SBCs), including an Odroid-XU4 and a Coral Edge TPU dev
board. Recently I got my hands on a Raspberry Pi 4b and of course
thought: &amp;ldquo;let’s put ROS 2 on it!&amp;rdquo;&lt;/p&gt;
&lt;p&gt;There are several resources on running ROS 2 on a Raspberry Pi using
Ubuntu as your OS, but I started out with Raspberry Pi OS (formally
known as Raspbian), and I will describe here how to install ROS 2 onto
that. And, as a bonus, I will also show how to use the Raspberry Pi
Camera Module V2 in this set up. Let’s get started!&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Run ROS 2 Foxy on a Coral TPU</title>
      <link>https://sgvd.ai/post/2020-09-10-how-to-run-ros2-foxy-on-coral-edge/</link>
      <pubDate>Thu, 10 Sep 2020 00:00:00 +0000</pubDate>
      <guid>https://sgvd.ai/post/2020-09-10-how-to-run-ros2-foxy-on-coral-edge/</guid>
      <description>&lt;p&gt;When I created a robot 15 years ago out of PVC tubes, acrylic plates, a very heavy laptop and my mother’s yoga mat, that was tasked with collecting brightly coloured balls but &lt;a href=&#34;https://youtu.be/6Mg8qMu17SM?t=353&#34;&gt;was more interested in plain white walls&lt;/a&gt;, I could have only dreamt of the Computer Vision possibilities crammed into affordable credit card sized boards available nowadays. &lt;a href=&#34;https://coral.ai/products/dev-board&#34;&gt;Google’s Coral board&lt;/a&gt; is one of these, equipped with a Tensor Processing Unit (TPU) that is optimised to run modern deep neural networks very efficiently.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to run ROS 2 on an Odroid-XU4</title>
      <link>https://sgvd.ai/post/2020-04-17-how-to-run-ros2-on-an-odroid-xu4/</link>
      <pubDate>Fri, 17 Apr 2020 00:00:00 +0000</pubDate>
      <guid>https://sgvd.ai/post/2020-04-17-how-to-run-ros2-on-an-odroid-xu4/</guid>
      <description>&lt;p&gt;The second generation of the Robot Operating System (ROS) is steadily
maturing. Although there are still plenty of features outstanding on
the &lt;a href=&#34;https://index.ros.org/doc/ros2/Roadmap/#roadmap&#34;&gt;official
roadmap&lt;/a&gt;, ROS 2 has
by now had its first official Long Term Support (LTS) release, Dashing
Diademata. This release, and even more so the currently latest
release, Eloquent Elusor, is now at a stage where it can comfortably
be used as the base of new robotics projects.&lt;/p&gt;
&lt;p&gt;In my RoboCup team, the &lt;a href=&#34;https://robocup.herts.ac.uk/&#34;&gt;Bold Hearts&lt;/a&gt;,
we are now using ROS 2 on our robots. They were originally based on
ROBOTIS’s
&lt;a href=&#34;http://emanual.robotis.com/docs/en/platform/op/getting_started/&#34;&gt;DARwIn-OP&lt;/a&gt;
platform, but have undergone several upgrades over the years. One of
these is that they currently use the
&lt;a href=&#34;https://www.odroid.co.uk/hardkernel-odroid-xu4/odroid-xu4&#34;&gt;Odroid-XU4&lt;/a&gt;
as their main computation device: an 8-core big.LITTLE 32 bit ARM
single-board computer (SBC), not too dissimilar from a Raspberry Pi,
with quite some performance. Getting started with ROS 2 on one of
these is as simple as following the steps below.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
