<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="atom.xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://your-docusaurus-site.example.com/blog</id>
    <title>Physical AI &amp; Humanoid Robotics Blog</title>
    <updated>2025-12-06T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://your-docusaurus-site.example.com/blog"/>
    <subtitle>Physical AI &amp; Humanoid Robotics Blog</subtitle>
    <icon>https://your-docusaurus-site.example.com/img/Booklogo.png</icon>
    <entry>
        <title type="html"><![CDATA[Welcome to Physical AI & Humanoid Robotics]]></title>
        <id>https://your-docusaurus-site.example.com/blog/welcome-to-physical-ai</id>
        <link href="https://your-docusaurus-site.example.com/blog/welcome-to-physical-ai"/>
        <updated>2025-12-06T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Welcome to the Physical AI & Humanoid Robotics blog! This is where we share insights, tutorials, research updates, and practical guides to help you master the art of building intelligent robots that interact with the physical world.]]></summary>
        <content type="html"><![CDATA[<p>Welcome to the <strong>Physical AI &amp; Humanoid Robotics</strong> blog! This is where we share insights, tutorials, research updates, and practical guides to help you master the art of building intelligent robots that interact with the physical world.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-is-physical-ai">What is Physical AI?<a href="https://your-docusaurus-site.example.com/blog/welcome-to-physical-ai#what-is-physical-ai" class="hash-link" aria-label="Direct link to What is Physical AI?" title="Direct link to What is Physical AI?" translate="no">​</a></h2>
<p>For too long, AI has been confined to screens—chatbots, image generators, and recommendation engines. While powerful, these systems are fundamentally limited: <strong>they cannot touch, manipulate, or navigate the real world.</strong></p>
<p>Physical AI changes this. It's about giving intelligence a body—sensors to perceive, actuators to move, and algorithms to reason about the physical environment.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-humanoid-robots">Why Humanoid Robots?<a href="https://your-docusaurus-site.example.com/blog/welcome-to-physical-ai#why-humanoid-robots" class="hash-link" aria-label="Direct link to Why Humanoid Robots?" title="Direct link to Why Humanoid Robots?" translate="no">​</a></h2>
<p>Humanoid robots are the ultimate embodiment of Physical AI. By mimicking human form and capabilities, they can:</p>
<ul>
<li class=""><strong>Operate in human-designed environments</strong> (stairs, doorways, tools)</li>
<li class=""><strong>Collaborate naturally with people</strong> (intuitive gestures, social cues)</li>
<li class=""><strong>Adapt to diverse tasks</strong> (from warehouse logistics to elderly care)</li>
</ul>
<p>The market is exploding: companies like Tesla (Optimus), Boston Dynamics (Atlas), and Figure AI are racing to deploy general-purpose humanoids at scale.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-youll-find-here">What You'll Find Here<a href="https://your-docusaurus-site.example.com/blog/welcome-to-physical-ai#what-youll-find-here" class="hash-link" aria-label="Direct link to What You'll Find Here" title="Direct link to What You'll Find Here" translate="no">​</a></h2>
<p>This blog complements our comprehensive textbook with:</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="-research-highlights">🧪 <strong>Research Highlights</strong><a href="https://your-docusaurus-site.example.com/blog/welcome-to-physical-ai#-research-highlights" class="hash-link" aria-label="Direct link to -research-highlights" title="Direct link to -research-highlights" translate="no">​</a></h3>
<ul>
<li class="">Cutting-edge papers in locomotion, manipulation, and VLA models</li>
<li class="">Deep dives into algorithms like PPO, MPC, and whole-body control</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="️-hands-on-tutorials">🛠️ <strong>Hands-On Tutorials</strong><a href="https://your-docusaurus-site.example.com/blog/welcome-to-physical-ai#%EF%B8%8F-hands-on-tutorials" class="hash-link" aria-label="Direct link to ️-hands-on-tutorials" title="Direct link to ️-hands-on-tutorials" translate="no">​</a></h3>
<ul>
<li class="">Step-by-step ROS 2 guides</li>
<li class="">Isaac Sim workflow tips</li>
<li class="">Real hardware debugging stories</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="-project-showcases">🤖 <strong>Project Showcases</strong><a href="https://your-docusaurus-site.example.com/blog/welcome-to-physical-ai#-project-showcases" class="hash-link" aria-label="Direct link to -project-showcases" title="Direct link to -project-showcases" translate="no">​</a></h3>
<ul>
<li class="">Student capstone projects</li>
<li class="">Open-source humanoid builds</li>
<li class="">Industry case studies</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="-industry-insights">💡 <strong>Industry Insights</strong><a href="https://your-docusaurus-site.example.com/blog/welcome-to-physical-ai#-industry-insights" class="hash-link" aria-label="Direct link to -industry-insights" title="Direct link to -industry-insights" translate="no">​</a></h3>
<ul>
<li class="">Interviews with robotics engineers</li>
<li class="">Startup spotlights</li>
<li class="">Hardware vs. software tradeoffs</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="join-the-journey">Join the Journey<a href="https://your-docusaurus-site.example.com/blog/welcome-to-physical-ai#join-the-journey" class="hash-link" aria-label="Direct link to Join the Journey" title="Direct link to Join the Journey" translate="no">​</a></h2>
<p>Physical AI is not just a course—it's a movement. Whether you're a:</p>
<ul>
<li class=""><strong>Student</strong> learning the fundamentals</li>
<li class=""><strong>Researcher</strong> pushing the boundaries</li>
<li class=""><strong>Engineer</strong> building the next Optimus</li>
<li class=""><strong>Enthusiast</strong> fascinated by robots</li>
</ul>
<p>...this blog is for you.</p>
<p>Let's build the future together. 🚀</p>
<hr>
<p><strong>Next Post:</strong> <a href="https://your-docusaurus-site.example.com/blog/welcome-to-physical-ai#" class="">ROS 2 Quick Start: Your First Node in 5 Minutes</a></p>
<p><em>Stay updated: <a href="https://github.com/Ibrahim-Tayyab?tab=repositories" target="_blank" rel="noopener noreferrer" class="">GitHub</a> | Created by Muhammed Ibrahim</em></p>]]></content>
        <author>
            <name>Muhammed Ibrahim</name>
            <uri>https://github.com/Ibrahim-Tayyab</uri>
        </author>
        <category label="Physical AI" term="Physical AI"/>
        <category label="Humanoid Robotics" term="Humanoid Robotics"/>
        <category label="Research" term="Research"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[ROS 2 Quick Start: Your First Node in 5 Minutes]]></title>
        <id>https://your-docusaurus-site.example.com/blog/ros2-first-node-guide</id>
        <link href="https://your-docusaurus-site.example.com/blog/ros2-first-node-guide"/>
        <updated>2025-12-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[If you're new to robotics, ROS 2 (Robot Operating System 2) might seem intimidating. But creating your first node is surprisingly simple! Let's build a "Hello World" publisher-subscriber system.]]></summary>
        <content type="html"><![CDATA[<p>If you're new to robotics, <strong>ROS 2 (Robot Operating System 2)</strong> might seem intimidating. But creating your first node is surprisingly simple! Let's build a "Hello World" publisher-subscriber system.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="prerequisites">Prerequisites<a href="https://your-docusaurus-site.example.com/blog/ros2-first-node-guide#prerequisites" class="hash-link" aria-label="Direct link to Prerequisites" title="Direct link to Prerequisites" translate="no">​</a></h2>
<ul>
<li class="">Ubuntu 22.04 (or Docker)</li>
<li class="">ROS 2 Humble installed</li>
<li class="">Python 3.10+</li>
</ul>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)"># Quick install (if needed)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token function" style="color:rgb(220, 220, 170)">sudo</span><span class="token plain"> </span><span class="token function" style="color:rgb(220, 220, 170)">apt</span><span class="token plain"> </span><span class="token function" style="color:rgb(220, 220, 170)">install</span><span class="token plain"> ros-humble-desktop python3-colcon-common-extensions</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(78, 201, 176)">source</span><span class="token plain"> /opt/ros/humble/setup.bash</span><br></span></code></pre></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-1-create-a-workspace">Step 1: Create a Workspace<a href="https://your-docusaurus-site.example.com/blog/ros2-first-node-guide#step-1-create-a-workspace" class="hash-link" aria-label="Direct link to Step 1: Create a Workspace" title="Direct link to Step 1: Create a Workspace" translate="no">​</a></h2>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">mkdir</span><span class="token plain"> </span><span class="token parameter variable" style="color:rgb(156, 220, 254)">-p</span><span class="token plain"> ~/ros2_ws/src</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(78, 201, 176)">cd</span><span class="token plain"> ~/ros2_ws/src</span><br></span></code></pre></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-2-create-a-package">Step 2: Create a Package<a href="https://your-docusaurus-site.example.com/blog/ros2-first-node-guide#step-2-create-a-package" class="hash-link" aria-label="Direct link to Step 2: Create a Package" title="Direct link to Step 2: Create a Package" translate="no">​</a></h2>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">ros2 pkg create --build-type ament_python hello_ros2 </span><span class="token parameter variable" style="color:rgb(156, 220, 254)">--dependencies</span><span class="token plain"> rclpy std_msgs</span><br></span></code></pre></div></div>
<p>This creates:</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">hello_ros2/</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">├── package.xml</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">├── setup.py</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">├── hello_ros2/</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">│   └── __init__.py</span><br></span></code></pre></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-3-write-the-publisher-node">Step 3: Write the Publisher Node<a href="https://your-docusaurus-site.example.com/blog/ros2-first-node-guide#step-3-write-the-publisher-node" class="hash-link" aria-label="Direct link to Step 3: Write the Publisher Node" title="Direct link to Step 3: Write the Publisher Node" translate="no">​</a></h2>
<p>Create <code>hello_ros2/publisher.py</code>:</p>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">import</span><span class="token plain"> rclpy</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">from</span><span class="token plain"> rclpy</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">node </span><span class="token keyword" style="color:rgb(86, 156, 214)">import</span><span class="token plain"> Node</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">from</span><span class="token plain"> std_msgs</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">msg </span><span class="token keyword" style="color:rgb(86, 156, 214)">import</span><span class="token plain"> String</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">class</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">HelloPublisher</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">Node</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><span class="token keyword" style="color:rgb(86, 156, 214)">def</span><span class="token plain"> </span><span class="token function" style="color:rgb(220, 220, 170)">__init__</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        </span><span class="token builtin" style="color:rgb(86, 156, 214)">super</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">__init__</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token string" style="color:rgb(206, 145, 120)">'hello_publisher'</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">publisher </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">create_publisher</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">String</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">'greetings'</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">10</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">timer </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">create_timer</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token number" style="color:rgb(181, 206, 168)">1.0</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">publish_message</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">counter </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><span class="token keyword" style="color:rgb(86, 156, 214)">def</span><span class="token plain"> </span><span class="token function" style="color:rgb(220, 220, 170)">publish_message</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        msg </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> String</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        msg</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">data </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> </span><span class="token string-interpolation string" style="color:rgb(206, 145, 120)">f'Hello, ROS 2! Message #</span><span class="token string-interpolation interpolation punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token string-interpolation interpolation">self</span><span class="token string-interpolation interpolation punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token string-interpolation interpolation">counter</span><span class="token string-interpolation interpolation punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token string-interpolation string" style="color:rgb(206, 145, 120)">'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">publisher</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">publish</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">msg</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">get_logger</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">info</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token string-interpolation string" style="color:rgb(206, 145, 120)">f'Published: "</span><span class="token string-interpolation interpolation punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token string-interpolation interpolation">msg</span><span class="token string-interpolation interpolation punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token string-interpolation interpolation">data</span><span class="token string-interpolation interpolation punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token string-interpolation string" style="color:rgb(206, 145, 120)">"'</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">counter </span><span class="token operator" style="color:rgb(212, 212, 212)">+=</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">def</span><span class="token plain"> </span><span class="token function" style="color:rgb(220, 220, 170)">main</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">args</span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token boolean">None</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    rclpy</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">init</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">args</span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain">args</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    node </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> HelloPublisher</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    rclpy</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">spin</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">node</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    node</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">destroy_node</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    rclpy</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">shutdown</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">if</span><span class="token plain"> __name__ </span><span class="token operator" style="color:rgb(212, 212, 212)">==</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">'__main__'</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    main</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><br></span></code></pre></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-4-write-the-subscriber-node">Step 4: Write the Subscriber Node<a href="https://your-docusaurus-site.example.com/blog/ros2-first-node-guide#step-4-write-the-subscriber-node" class="hash-link" aria-label="Direct link to Step 4: Write the Subscriber Node" title="Direct link to Step 4: Write the Subscriber Node" translate="no">​</a></h2>
<p>Create <code>hello_ros2/subscriber.py</code>:</p>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">import</span><span class="token plain"> rclpy</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">from</span><span class="token plain"> rclpy</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">node </span><span class="token keyword" style="color:rgb(86, 156, 214)">import</span><span class="token plain"> Node</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">from</span><span class="token plain"> std_msgs</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">msg </span><span class="token keyword" style="color:rgb(86, 156, 214)">import</span><span class="token plain"> String</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">class</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">HelloSubscriber</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">Node</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><span class="token keyword" style="color:rgb(86, 156, 214)">def</span><span class="token plain"> </span><span class="token function" style="color:rgb(220, 220, 170)">__init__</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        </span><span class="token builtin" style="color:rgb(86, 156, 214)">super</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">__init__</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token string" style="color:rgb(206, 145, 120)">'hello_subscriber'</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">subscription </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">create_subscription</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">            String</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">            </span><span class="token string" style="color:rgb(206, 145, 120)">'greetings'</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">            self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">listener_callback</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">            </span><span class="token number" style="color:rgb(181, 206, 168)">10</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><span class="token keyword" style="color:rgb(86, 156, 214)">def</span><span class="token plain"> </span><span class="token function" style="color:rgb(220, 220, 170)">listener_callback</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> msg</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">get_logger</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">info</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token string-interpolation string" style="color:rgb(206, 145, 120)">f'Received: "</span><span class="token string-interpolation interpolation punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token string-interpolation interpolation">msg</span><span class="token string-interpolation interpolation punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token string-interpolation interpolation">data</span><span class="token string-interpolation interpolation punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token string-interpolation string" style="color:rgb(206, 145, 120)">"'</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">def</span><span class="token plain"> </span><span class="token function" style="color:rgb(220, 220, 170)">main</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">args</span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token boolean">None</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    rclpy</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">init</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">args</span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain">args</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    node </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> HelloSubscriber</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    rclpy</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">spin</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">node</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    node</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">destroy_node</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    rclpy</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">shutdown</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">if</span><span class="token plain"> __name__ </span><span class="token operator" style="color:rgb(212, 212, 212)">==</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">'__main__'</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    main</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><br></span></code></pre></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-5-register-entry-points">Step 5: Register Entry Points<a href="https://your-docusaurus-site.example.com/blog/ros2-first-node-guide#step-5-register-entry-points" class="hash-link" aria-label="Direct link to Step 5: Register Entry Points" title="Direct link to Step 5: Register Entry Points" translate="no">​</a></h2>
<p>Edit <code>setup.py</code>:</p>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">entry_points</span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><span class="token string" style="color:rgb(206, 145, 120)">'console_scripts'</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        </span><span class="token string" style="color:rgb(206, 145, 120)">'publisher = hello_ros2.publisher:main'</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        </span><span class="token string" style="color:rgb(206, 145, 120)">'subscriber = hello_ros2.subscriber:main'</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><br></span></code></pre></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-6-build-and-run">Step 6: Build and Run<a href="https://your-docusaurus-site.example.com/blog/ros2-first-node-guide#step-6-build-and-run" class="hash-link" aria-label="Direct link to Step 6: Build and Run" title="Direct link to Step 6: Build and Run" translate="no">​</a></h2>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token builtin class-name" style="color:rgb(78, 201, 176)">cd</span><span class="token plain"> ~/ros2_ws</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">colcon build --packages-select hello_ros2</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(78, 201, 176)">source</span><span class="token plain"> install/setup.bash</span><br></span></code></pre></div></div>
<p><strong>Terminal 1:</strong></p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">ros2 run hello_ros2 publisher</span><br></span></code></pre></div></div>
<p><strong>Terminal 2:</strong></p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">ros2 run hello_ros2 subscriber</span><br></span></code></pre></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="output">Output<a href="https://your-docusaurus-site.example.com/blog/ros2-first-node-guide#output" class="hash-link" aria-label="Direct link to Output" title="Direct link to Output" translate="no">​</a></h2>
<p><strong>Publisher:</strong></p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">[INFO] [hello_publisher]: Published: "Hello, ROS 2! Message #0"</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">[INFO] [hello_publisher]: Published: "Hello, ROS 2! Message #1"</span><br></span></code></pre></div></div>
<p><strong>Subscriber:</strong></p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">[INFO] [hello_subscriber]: Received: "Hello, ROS 2! Message #0"</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">[INFO] [hello_subscriber]: Received: "Hello, ROS 2! Message #1"</span><br></span></code></pre></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-just-happened">What Just Happened?<a href="https://your-docusaurus-site.example.com/blog/ros2-first-node-guide#what-just-happened" class="hash-link" aria-label="Direct link to What Just Happened?" title="Direct link to What Just Happened?" translate="no">​</a></h2>
<ol>
<li class=""><strong>Publisher Node</strong> sends messages to the <code>/greetings</code> topic every second</li>
<li class=""><strong>Subscriber Node</strong> listens to <code>/greetings</code> and logs received messages</li>
<li class=""><strong>ROS 2 middleware</strong> handles all the networking magic behind the scenes</li>
</ol>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="next-steps">Next Steps<a href="https://your-docusaurus-site.example.com/blog/ros2-first-node-guide#next-steps" class="hash-link" aria-label="Direct link to Next Steps" title="Direct link to Next Steps" translate="no">​</a></h2>
<ul>
<li class="">Add parameters (e.g., message frequency)</li>
<li class="">Create custom message types</li>
<li class="">Visualize with <code>rqt_graph</code></li>
</ul>
<p>🎉 <strong>Congratulations!</strong> You've just built your first ROS 2 system. From here, you can control real robots, integrate sensors, and build autonomous behaviors.</p>
<hr>
<p><strong>Full Code:</strong> <a href="https://github.com/Ibrahim-Tayyab?tab=repositories" target="_blank" rel="noopener noreferrer" class="">GitHub Repo</a><br>
<strong>Next Tutorial:</strong> Service Calls and Action Servers<br>
<strong>Author:</strong> Muhammed Ibrahim</p>]]></content>
        <author>
            <name>Muhammed Ibrahim</name>
            <uri>https://github.com/Ibrahim-Tayyab</uri>
        </author>
        <category label="ROS 2" term="ROS 2"/>
        <category label="Tutorials" term="Tutorials"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Research Spotlight: Learning Bipedal Walking in 2 Hours]]></title>
        <id>https://your-docusaurus-site.example.com/blog/humanoid-walking-breakthrough</id>
        <link href="https://your-docusaurus-site.example.com/blog/humanoid-walking-breakthrough"/>
        <updated>2025-12-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A recent breakthrough from NVIDIA and ETH Zurich demonstrates how massively parallel simulation in Isaac Gym enables humanoid robots to learn complex locomotion policies in record time.]]></summary>
        <content type="html"><![CDATA[<p>A recent breakthrough from NVIDIA and ETH Zurich demonstrates how <strong>massively parallel simulation</strong> in Isaac Gym enables humanoid robots to learn complex locomotion policies in record time.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-challenge">The Challenge<a href="https://your-docusaurus-site.example.com/blog/humanoid-walking-breakthrough#the-challenge" class="hash-link" aria-label="Direct link to The Challenge" title="Direct link to The Challenge" translate="no">​</a></h2>
<p>Traditional reinforcement learning for bipedal walking faces two major bottlenecks:</p>
<ol>
<li class=""><strong>Sample Inefficiency:</strong> Millions of training steps required</li>
<li class=""><strong>Wall-Clock Time:</strong> Days or weeks of training even on powerful GPUs</li>
</ol>
<p>Real-world training is even worse—robots fall, break, and require constant resets.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-solution-isaac-gym">The Solution: Isaac Gym<a href="https://your-docusaurus-site.example.com/blog/humanoid-walking-breakthrough#the-solution-isaac-gym" class="hash-link" aria-label="Direct link to The Solution: Isaac Gym" title="Direct link to The Solution: Isaac Gym" translate="no">​</a></h2>
<p><strong>Isaac Gym</strong> runs thousands of physics simulations <strong>in parallel on a single GPU</strong>, leveraging:</p>
<ul>
<li class=""><strong>GPU-accelerated physics</strong> (PhysX on CUDA)</li>
<li class=""><strong>Vectorized RL environments</strong> (4096+ instances simultaneously)</li>
<li class=""><strong>Zero CPU-GPU data transfer</strong> (end-to-end on device)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="performance-gains">Performance Gains<a href="https://your-docusaurus-site.example.com/blog/humanoid-walking-breakthrough#performance-gains" class="hash-link" aria-label="Direct link to Performance Gains" title="Direct link to Performance Gains" translate="no">​</a></h3>
<table><thead><tr><th>Method</th><th>Environments</th><th>Training Time</th><th>Hardware</th></tr></thead><tbody><tr><td><strong>Traditional (PyBullet)</strong></td><td>16</td><td>48 hours</td><td>CPU cluster</td></tr><tr><td><strong>Isaac Gym</strong></td><td>4096</td><td><strong>2 hours</strong></td><td>Single RTX 4090</td></tr></tbody></table>
<p><strong>256× speedup!</strong></p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-algorithm-ppo-with-domain-randomization">The Algorithm: PPO with Domain Randomization<a href="https://your-docusaurus-site.example.com/blog/humanoid-walking-breakthrough#the-algorithm-ppo-with-domain-randomization" class="hash-link" aria-label="Direct link to The Algorithm: PPO with Domain Randomization" title="Direct link to The Algorithm: PPO with Domain Randomization" translate="no">​</a></h2>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)"># Simplified training loop</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">for</span><span class="token plain"> iteration </span><span class="token keyword" style="color:rgb(86, 156, 214)">in</span><span class="token plain"> </span><span class="token builtin" style="color:rgb(86, 156, 214)">range</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token number" style="color:rgb(181, 206, 168)">10000</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><span class="token comment" style="color:rgb(106, 153, 85)"># Simulate 4096 humanoids in parallel</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    states </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> env</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">reset</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><span class="token keyword" style="color:rgb(86, 156, 214)">for</span><span class="token plain"> step </span><span class="token keyword" style="color:rgb(86, 156, 214)">in</span><span class="token plain"> </span><span class="token builtin" style="color:rgb(86, 156, 214)">range</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">horizon</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        actions </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> policy</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">predict</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">states</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        states</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> rewards</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> dones </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> env</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">step</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">actions</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        </span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        </span><span class="token comment" style="color:rgb(106, 153, 85)"># Randomize physics each episode</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        </span><span class="token keyword" style="color:rgb(86, 156, 214)">if</span><span class="token plain"> done</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">            env</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">randomize_dynamics</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><span class="token comment" style="color:rgb(106, 153, 85)"># Update policy with collected data</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    policy</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">update</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">replay_buffer</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><br></span></code></pre></div></div>
<p><strong>Key Innovations:</strong></p>
<ul>
<li class=""><strong>Privileged Learning:</strong> Teacher policy sees ground-truth state, student only sensors</li>
<li class=""><strong>Curriculum Learning:</strong> Gradually increase terrain difficulty</li>
<li class=""><strong>Asymmetric Actor-Critic:</strong> Separate networks for perception and control</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="results">Results<a href="https://your-docusaurus-site.example.com/blog/humanoid-walking-breakthrough#results" class="hash-link" aria-label="Direct link to Results" title="Direct link to Results" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="sim-performance">Sim Performance<a href="https://your-docusaurus-site.example.com/blog/humanoid-walking-breakthrough#sim-performance" class="hash-link" aria-label="Direct link to Sim Performance" title="Direct link to Sim Performance" translate="no">​</a></h3>
<ul>
<li class=""><strong>Walking Speed:</strong> 1.2 m/s (human-like)</li>
<li class=""><strong>Stability:</strong> 97% success rate on flat terrain</li>
<li class=""><strong>Generalization:</strong> Handles stairs, slopes, and push disturbances</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="sim-to-real-transfer">Sim-to-Real Transfer<a href="https://your-docusaurus-site.example.com/blog/humanoid-walking-breakthrough#sim-to-real-transfer" class="hash-link" aria-label="Direct link to Sim-to-Real Transfer" title="Direct link to Sim-to-Real Transfer" translate="no">​</a></h3>
<p>After training purely in simulation, the policy was deployed to a <strong>Unitree H1 humanoid</strong>:</p>
<p>✅ <strong>Zero-shot transfer:</strong> No real-world fine-tuning<br>
<!-- -->✅ <strong>Robust to modeling errors:</strong> Works despite inaccurate mass/friction<br>
<!-- -->✅ <strong>Real-time inference:</strong> 50 Hz control loop on Jetson Orin</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-it-matters">Why It Matters<a href="https://your-docusaurus-site.example.com/blog/humanoid-walking-breakthrough#why-it-matters" class="hash-link" aria-label="Direct link to Why It Matters" title="Direct link to Why It Matters" translate="no">​</a></h2>
<p>This research validates a <strong>new paradigm for robot learning</strong>:</p>
<ol>
<li class=""><strong>Train massively in parallel simulation</strong> (cheap, safe, fast)</li>
<li class=""><strong>Use domain randomization</strong> to bridge sim-to-real gap</li>
<li class=""><strong>Deploy directly to hardware</strong> with minimal tuning</li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="implications">Implications:<a href="https://your-docusaurus-site.example.com/blog/humanoid-walking-breakthrough#implications" class="hash-link" aria-label="Direct link to Implications:" title="Direct link to Implications:" translate="no">​</a></h3>
<ul>
<li class=""><strong>Democratization:</strong> Small labs can compete without expensive hardware fleets</li>
<li class=""><strong>Rapid Iteration:</strong> Test ideas in hours, not weeks</li>
<li class=""><strong>Scaling Laws:</strong> More compute = better policies (like LLMs!)</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="try-it-yourself">Try It Yourself<a href="https://your-docusaurus-site.example.com/blog/humanoid-walking-breakthrough#try-it-yourself" class="hash-link" aria-label="Direct link to Try It Yourself" title="Direct link to Try It Yourself" translate="no">​</a></h2>
<p>NVIDIA provides open-source examples:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">git</span><span class="token plain"> clone https://github.com/NVIDIA-Omniverse/IsaacGymEnvs.git</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(78, 201, 176)">cd</span><span class="token plain"> IsaacGymEnvs</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">pip </span><span class="token function" style="color:rgb(220, 220, 170)">install</span><span class="token plain"> </span><span class="token parameter variable" style="color:rgb(156, 220, 254)">-e</span><span class="token plain"> </span><span class="token builtin class-name" style="color:rgb(78, 201, 176)">.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">python train.py </span><span class="token assign-left variable" style="color:rgb(156, 220, 254)">task</span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain">Humanoid</span><br></span></code></pre></div></div>
<p><strong>Requirements:</strong></p>
<ul>
<li class="">RTX 3060+ GPU (12GB+ VRAM recommended)</li>
<li class="">Ubuntu 20.04/22.04</li>
<li class="">Isaac Gym Preview 4</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-road-ahead">The Road Ahead<a href="https://your-docusaurus-site.example.com/blog/humanoid-walking-breakthrough#the-road-ahead" class="hash-link" aria-label="Direct link to The Road Ahead" title="Direct link to The Road Ahead" translate="no">​</a></h2>
<p>Current limitations:</p>
<ul>
<li class=""><strong>Terrain diversity:</strong> Still struggles with mud, ice, slippery surfaces</li>
<li class=""><strong>Object manipulation:</strong> Walking + carrying objects is hard</li>
<li class=""><strong>Energy efficiency:</strong> Policies are not optimized for battery life</li>
</ul>
<p><strong>Next-gen research:</strong></p>
<ul>
<li class="">Combining RL with Model Predictive Control (MPC)</li>
<li class="">Multi-task learning (walk + grasp + navigate)</li>
<li class="">Learning from human motion capture data</li>
</ul>
<hr>
<p><strong>Paper:</strong> <a href="https://arxiv.org/abs/2109.11978" target="_blank" rel="noopener noreferrer" class="">Learning to Walk in Minutes Using Massively Parallel Deep RL</a><br>
<strong>Code:</strong> <a href="https://github.com/NVIDIA-Omniverse/IsaacGymEnvs" target="_blank" rel="noopener noreferrer" class="">GitHub - IsaacGymEnvs</a></p>
<p><em>Questions? Discuss in our <a href="https://discord.gg/physical-ai" target="_blank" rel="noopener noreferrer" class="">Discord community</a></em></p>]]></content>
        <author>
            <name>Muhammed Ibrahim</name>
            <uri>https://github.com/Ibrahim-Tayyab</uri>
        </author>
        <category label="Research" term="Research"/>
        <category label="Humanoid Robotics" term="Humanoid Robotics"/>
        <category label="NVIDIA Isaac" term="NVIDIA Isaac"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Vision-Language-Action Models: The Future of Robotic Intelligence]]></title>
        <id>https://your-docusaurus-site.example.com/blog/vla-models-explained</id>
        <link href="https://your-docusaurus-site.example.com/blog/vla-models-explained"/>
        <updated>2025-12-03T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[How do you teach a robot to understand "Pick up the red mug and place it on the shelf"? The answer lies in Vision-Language-Action (VLA) models—the breakthrough that's transforming robotics.]]></summary>
        <content type="html"><![CDATA[<p>How do you teach a robot to understand "Pick up the red mug and place it on the shelf"? The answer lies in <strong>Vision-Language-Action (VLA) models</strong>—the breakthrough that's transforming robotics.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-problem-with-traditional-robotics">The Problem with Traditional Robotics<a href="https://your-docusaurus-site.example.com/blog/vla-models-explained#the-problem-with-traditional-robotics" class="hash-link" aria-label="Direct link to The Problem with Traditional Robotics" title="Direct link to The Problem with Traditional Robotics" translate="no">​</a></h2>
<p>Classical robot programming requires:</p>
<ol>
<li class=""><strong>Hard-coded behaviors</strong> for every task</li>
<li class=""><strong>Explicit state machines</strong> (IF this THEN that)</li>
<li class=""><strong>No generalization</strong> to new objects or commands</li>
</ol>
<p>This approach <strong>doesn't scale</strong>. You'd need thousands of engineers to program every possible scenario.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="enter-vla-models">Enter VLA Models<a href="https://your-docusaurus-site.example.com/blog/vla-models-explained#enter-vla-models" class="hash-link" aria-label="Direct link to Enter VLA Models" title="Direct link to Enter VLA Models" translate="no">​</a></h2>
<p>VLA models integrate three modalities:</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-vision-️">1. <strong>Vision</strong> 👁️<a href="https://your-docusaurus-site.example.com/blog/vla-models-explained#1-vision-%EF%B8%8F" class="hash-link" aria-label="Direct link to 1-vision-️" title="Direct link to 1-vision-️" translate="no">​</a></h3>
<ul>
<li class="">RGB cameras, depth sensors, LIDAR</li>
<li class="">Object detection, segmentation, pose estimation</li>
<li class=""><strong>Example:</strong> "I see a red cylindrical object (mug)"</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-language-">2. <strong>Language</strong> 💬<a href="https://your-docusaurus-site.example.com/blog/vla-models-explained#2-language-" class="hash-link" aria-label="Direct link to 2-language-" title="Direct link to 2-language-" translate="no">​</a></h3>
<ul>
<li class="">Natural language understanding (GPT-4, LLaMA)</li>
<li class="">Task decomposition and planning</li>
<li class=""><strong>Example:</strong> "Pick up" → [approach, grasp, lift, move, release]</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-action-">3. <strong>Action</strong> 🤖<a href="https://your-docusaurus-site.example.com/blog/vla-models-explained#3-action-" class="hash-link" aria-label="Direct link to 3-action-" title="Direct link to 3-action-" translate="no">​</a></h3>
<ul>
<li class="">Low-level motor control</li>
<li class="">Inverse kinematics, trajectory planning</li>
<li class=""><strong>Example:</strong> Joint angles [θ₁, θ₂, ..., θₙ] to execute grasp</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="architecture">Architecture<a href="https://your-docusaurus-site.example.com/blog/vla-models-explained#architecture" class="hash-link" aria-label="Direct link to Architecture" title="Direct link to Architecture" translate="no">​</a></h2>
<div class="language-mermaid codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-mermaid codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">graph LR</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    A[Camera Input] --&gt; B[Vision Encoder]</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    C[Voice Command] --&gt; D[Language Model]</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    B --&gt; E[VLA Policy]</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    D --&gt; E</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    E --&gt; F[Robot Actions]</span><br></span></code></pre></div></div>
<p><strong>Key Components:</strong></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="vision-encoder">Vision Encoder<a href="https://your-docusaurus-site.example.com/blog/vla-models-explained#vision-encoder" class="hash-link" aria-label="Direct link to Vision Encoder" title="Direct link to Vision Encoder" translate="no">​</a></h3>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)"># Using CLIP or ResNet</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">image_features </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> vision_encoder</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">camera_frame</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token comment" style="color:rgb(106, 153, 85)"># Output: 512-dim embedding</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="language-model">Language Model<a href="https://your-docusaurus-site.example.com/blog/vla-models-explained#language-model" class="hash-link" aria-label="Direct link to Language Model" title="Direct link to Language Model" translate="no">​</a></h3>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)"># Using GPT-4 or fine-tuned LLaMA</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">task_plan </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> llm</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">generate</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><span class="token string-interpolation string" style="color:rgb(206, 145, 120)">f"Break down this task: </span><span class="token string-interpolation interpolation punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token string-interpolation interpolation">user_command</span><span class="token string-interpolation interpolation punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token string-interpolation string" style="color:rgb(206, 145, 120)">"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token comment" style="color:rgb(106, 153, 85)"># Output: ["approach object", "align gripper", "close gripper", ...]</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="action-policy">Action Policy<a href="https://your-docusaurus-site.example.com/blog/vla-models-explained#action-policy" class="hash-link" aria-label="Direct link to Action Policy" title="Direct link to Action Policy" translate="no">​</a></h3>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)"># Transformer-based policy</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">action </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> policy_network</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    vision_features</span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain">image_features</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    language_features</span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain">task_embedding</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    robot_state</span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain">joint_positions</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token comment" style="color:rgb(106, 153, 85)"># Output: joint velocities or end-effector pose</span><br></span></code></pre></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="state-of-the-art-vla-models">State-of-the-Art VLA Models<a href="https://your-docusaurus-site.example.com/blog/vla-models-explained#state-of-the-art-vla-models" class="hash-link" aria-label="Direct link to State-of-the-Art VLA Models" title="Direct link to State-of-the-Art VLA Models" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-rt-2-google-deepmind">1. <strong>RT-2 (Google DeepMind)</strong><a href="https://your-docusaurus-site.example.com/blog/vla-models-explained#1-rt-2-google-deepmind" class="hash-link" aria-label="Direct link to 1-rt-2-google-deepmind" title="Direct link to 1-rt-2-google-deepmind" translate="no">​</a></h3>
<ul>
<li class=""><strong>Training:</strong> 6 billion parameters, trained on web images + robotics data</li>
<li class=""><strong>Zero-shot generalization:</strong> Can manipulate objects it's never seen</li>
<li class=""><strong>Performance:</strong> 62% success rate on novel tasks</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-palm-e-google">2. <strong>PaLM-E (Google)</strong><a href="https://your-docusaurus-site.example.com/blog/vla-models-explained#2-palm-e-google" class="hash-link" aria-label="Direct link to 2-palm-e-google" title="Direct link to 2-palm-e-google" translate="no">​</a></h3>
<ul>
<li class=""><strong>Multimodal:</strong> Integrates vision, language, and sensor data into a single 562B param model</li>
<li class=""><strong>Embodied reasoning:</strong> Can answer questions about the physical world</li>
<li class=""><strong>Example:</strong> "Which room has the most chairs?" → navigates + counts</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-openvla-open-source">3. <strong>OpenVLA (Open Source)</strong><a href="https://your-docusaurus-site.example.com/blog/vla-models-explained#3-openvla-open-source" class="hash-link" aria-label="Direct link to 3-openvla-open-source" title="Direct link to 3-openvla-open-source" translate="no">​</a></h3>
<ul>
<li class=""><strong>Training:</strong> 7B parameters, fully open-source</li>
<li class=""><strong>Dataset:</strong> 970K robot trajectories from Open X-Embodiment</li>
<li class=""><strong>Advantage:</strong> Can be fine-tuned on custom hardware</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="building-your-own-vla-agent">Building Your Own VLA Agent<a href="https://your-docusaurus-site.example.com/blog/vla-models-explained#building-your-own-vla-agent" class="hash-link" aria-label="Direct link to Building Your Own VLA Agent" title="Direct link to Building Your Own VLA Agent" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-1-collect-data">Step 1: Collect Data<a href="https://your-docusaurus-site.example.com/blog/vla-models-explained#step-1-collect-data" class="hash-link" aria-label="Direct link to Step 1: Collect Data" title="Direct link to Step 1: Collect Data" translate="no">​</a></h3>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)"># Record demonstrations</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">dataset </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">for</span><span class="token plain"> episode </span><span class="token keyword" style="color:rgb(86, 156, 214)">in</span><span class="token plain"> </span><span class="token builtin" style="color:rgb(86, 156, 214)">range</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token number" style="color:rgb(181, 206, 168)">1000</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    obs </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> env</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">reset</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    language_command </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> get_user_command</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><span class="token keyword" style="color:rgb(86, 156, 214)">while</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(86, 156, 214)">not</span><span class="token plain"> done</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        action </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> human_teleop</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain">  </span><span class="token comment" style="color:rgb(106, 153, 85)"># Collect expert actions</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        obs</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> reward</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> done </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> env</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">step</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">action</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        dataset</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">append</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">obs</span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token string" style="color:rgb(206, 145, 120)">'image'</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> language_command</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> action</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-2-train-the-policy">Step 2: Train the Policy<a href="https://your-docusaurus-site.example.com/blog/vla-models-explained#step-2-train-the-policy" class="hash-link" aria-label="Direct link to Step 2: Train the Policy" title="Direct link to Step 2: Train the Policy" translate="no">​</a></h3>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">import</span><span class="token plain"> torch</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">from</span><span class="token plain"> transformers </span><span class="token keyword" style="color:rgb(86, 156, 214)">import</span><span class="token plain"> CLIPVisionModel</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> GPT2Model</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">class</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">VLAPolicy</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">torch</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">nn</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">Module</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><span class="token keyword" style="color:rgb(86, 156, 214)">def</span><span class="token plain"> </span><span class="token function" style="color:rgb(220, 220, 170)">__init__</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        </span><span class="token builtin" style="color:rgb(86, 156, 214)">super</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">__init__</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">vision_encoder </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> CLIPVisionModel</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">from_pretrained</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token string" style="color:rgb(206, 145, 120)">"openai/clip-vit-base-patch32"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">language_encoder </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> GPT2Model</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">from_pretrained</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token string" style="color:rgb(206, 145, 120)">"gpt2"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">action_head </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> torch</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">nn</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">Linear</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token number" style="color:rgb(181, 206, 168)">512</span><span class="token plain"> </span><span class="token operator" style="color:rgb(212, 212, 212)">+</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">768</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> action_dim</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><span class="token keyword" style="color:rgb(86, 156, 214)">def</span><span class="token plain"> </span><span class="token function" style="color:rgb(220, 220, 170)">forward</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> image</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> text_tokens</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> robot_state</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        vision_feat </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">vision_encoder</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">image</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">pooler_output</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        lang_feat </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">language_encoder</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">text_tokens</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">last_hidden_state</span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token operator" style="color:rgb(212, 212, 212)">-</span><span class="token number" style="color:rgb(181, 206, 168)">1</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        </span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        combined </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> torch</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">cat</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token plain">vision_feat</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> lang_feat</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> dim</span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token operator" style="color:rgb(212, 212, 212)">-</span><span class="token number" style="color:rgb(181, 206, 168)">1</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        action </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">action_head</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">combined</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        </span><span class="token keyword" style="color:rgb(86, 156, 214)">return</span><span class="token plain"> action</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token comment" style="color:rgb(106, 153, 85)"># Train with behavioral cloning</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">for</span><span class="token plain"> epoch </span><span class="token keyword" style="color:rgb(86, 156, 214)">in</span><span class="token plain"> </span><span class="token builtin" style="color:rgb(86, 156, 214)">range</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token number" style="color:rgb(181, 206, 168)">100</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><span class="token keyword" style="color:rgb(86, 156, 214)">for</span><span class="token plain"> batch </span><span class="token keyword" style="color:rgb(86, 156, 214)">in</span><span class="token plain"> dataloader</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        images</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> commands</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> actions </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> batch</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        predicted_actions </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> model</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">images</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> commands</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> robot_state</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        loss </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> torch</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">nn</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">MSELoss</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">predicted_actions</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> actions</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        loss</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">backward</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        optimizer</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">step</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-3-deploy-to-ros-2">Step 3: Deploy to ROS 2<a href="https://your-docusaurus-site.example.com/blog/vla-models-explained#step-3-deploy-to-ros-2" class="hash-link" aria-label="Direct link to Step 3: Deploy to ROS 2" title="Direct link to Step 3: Deploy to ROS 2" translate="no">​</a></h3>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">import</span><span class="token plain"> rclpy</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">from</span><span class="token plain"> rclpy</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">node </span><span class="token keyword" style="color:rgb(86, 156, 214)">import</span><span class="token plain"> Node</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">from</span><span class="token plain"> sensor_msgs</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">msg </span><span class="token keyword" style="color:rgb(86, 156, 214)">import</span><span class="token plain"> Image</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">from</span><span class="token plain"> std_msgs</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">msg </span><span class="token keyword" style="color:rgb(86, 156, 214)">import</span><span class="token plain"> String</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">class</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">VLANode</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">Node</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><span class="token keyword" style="color:rgb(86, 156, 214)">def</span><span class="token plain"> </span><span class="token function" style="color:rgb(220, 220, 170)">__init__</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        </span><span class="token builtin" style="color:rgb(86, 156, 214)">super</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">__init__</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token string" style="color:rgb(206, 145, 120)">'vla_node'</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">model </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> load_trained_model</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        </span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">create_subscription</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">Image</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">'/camera/image'</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">image_callback</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">10</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">create_subscription</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">String</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">'/voice_command'</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">command_callback</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">10</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        </span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">action_pub </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">create_publisher</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">JointState</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">'/joint_commands'</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">10</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><span class="token keyword" style="color:rgb(86, 156, 214)">def</span><span class="token plain"> </span><span class="token function" style="color:rgb(220, 220, 170)">image_callback</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> msg</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">latest_image </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> msg</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><span class="token keyword" style="color:rgb(86, 156, 214)">def</span><span class="token plain"> </span><span class="token function" style="color:rgb(220, 220, 170)">command_callback</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> msg</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        </span><span class="token comment" style="color:rgb(106, 153, 85)"># Run inference</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        action </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">model</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">predict</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">latest_image</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> msg</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">data</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        </span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        </span><span class="token comment" style="color:rgb(106, 153, 85)"># Publish to robot</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        joint_msg </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> JointState</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        joint_msg</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">position </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> action</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">action_pub</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">publish</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">joint_msg</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><br></span></code></pre></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="real-world-applications">Real-World Applications<a href="https://your-docusaurus-site.example.com/blog/vla-models-explained#real-world-applications" class="hash-link" aria-label="Direct link to Real-World Applications" title="Direct link to Real-World Applications" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="-manufacturing">🏭 <strong>Manufacturing</strong><a href="https://your-docusaurus-site.example.com/blog/vla-models-explained#-manufacturing" class="hash-link" aria-label="Direct link to -manufacturing" title="Direct link to -manufacturing" translate="no">​</a></h3>
<ul>
<li class="">"Assemble the blue gear onto the red shaft"</li>
<li class="">Handles part variations without reprogramming</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="-healthcare">🏥 <strong>Healthcare</strong><a href="https://your-docusaurus-site.example.com/blog/vla-models-explained#-healthcare" class="hash-link" aria-label="Direct link to -healthcare" title="Direct link to -healthcare" translate="no">​</a></h3>
<ul>
<li class="">"Hand me the scalpel" → robot identifies and grasps surgical tool</li>
<li class="">Voice control for sterile environments</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="-home-assistance">🏠 <strong>Home Assistance</strong><a href="https://your-docusaurus-site.example.com/blog/vla-models-explained#-home-assistance" class="hash-link" aria-label="Direct link to -home-assistance" title="Direct link to -home-assistance" translate="no">​</a></h3>
<ul>
<li class="">"Clear the table after dinner"</li>
<li class="">Adapts to different table layouts and dish types</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="challenges-and-future-directions">Challenges and Future Directions<a href="https://your-docusaurus-site.example.com/blog/vla-models-explained#challenges-and-future-directions" class="hash-link" aria-label="Direct link to Challenges and Future Directions" title="Direct link to Challenges and Future Directions" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="current-limitations">Current Limitations:<a href="https://your-docusaurus-site.example.com/blog/vla-models-explained#current-limitations" class="hash-link" aria-label="Direct link to Current Limitations:" title="Direct link to Current Limitations:" translate="no">​</a></h3>
<ul>
<li class=""><strong>Data hunger:</strong> Requires millions of demonstrations</li>
<li class=""><strong>Sim-to-real gap:</strong> Models trained in simulation often fail on real robots</li>
<li class=""><strong>Safety:</strong> Hard to guarantee safe behavior in all scenarios</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="emerging-solutions">Emerging Solutions:<a href="https://your-docusaurus-site.example.com/blog/vla-models-explained#emerging-solutions" class="hash-link" aria-label="Direct link to Emerging Solutions:" title="Direct link to Emerging Solutions:" translate="no">​</a></h3>
<ul>
<li class=""><strong>Foundation models:</strong> Leverage pre-trained vision/language models (less data needed)</li>
<li class=""><strong>Synthetic data:</strong> Use Isaac Sim + procedural generation</li>
<li class=""><strong>Human-in-the-loop:</strong> Real-time safety monitoring</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="try-it-now">Try It Now<a href="https://your-docusaurus-site.example.com/blog/vla-models-explained#try-it-now" class="hash-link" aria-label="Direct link to Try It Now" title="Direct link to Try It Now" translate="no">​</a></h2>
<p><strong>Open-Source VLA Projects:</strong></p>
<ul>
<li class=""><a href="https://openvla.github.io/" target="_blank" rel="noopener noreferrer" class="">OpenVLA</a></li>
<li class=""><a href="https://robotics-transformer-x.github.io/" target="_blank" rel="noopener noreferrer" class="">RT-X Datasets</a></li>
<li class=""><a href="https://github.com/Ibrahim-Tayyab?tab=repositories" target="_blank" rel="noopener noreferrer" class="">Ibrahim's VLA Resources</a></li>
</ul>
<p><strong>Getting Started:</strong></p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">git</span><span class="token plain"> clone https://github.com/Ibrahim-Tayyab/vla-robotics.git</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">pip </span><span class="token function" style="color:rgb(220, 220, 170)">install</span><span class="token plain"> </span><span class="token parameter variable" style="color:rgb(156, 220, 254)">-r</span><span class="token plain"> requirements.txt</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">python scripts/train_vla.py </span><span class="token parameter variable" style="color:rgb(156, 220, 254)">--config</span><span class="token plain"> configs/base.yaml</span><br></span></code></pre></div></div>
<hr>
<p><strong>Further Reading:</strong></p>
<ul>
<li class=""><a href="https://arxiv.org/abs/2307.15818" target="_blank" rel="noopener noreferrer" class="">RT-2 Paper (Google)</a></li>
<li class=""><a href="https://arxiv.org/abs/2303.03378" target="_blank" rel="noopener noreferrer" class="">PaLM-E Paper</a></li>
<li class=""><a href="https://robotics-transformer-x.github.io/" target="_blank" rel="noopener noreferrer" class="">Open X-Embodiment Dataset</a></li>
</ul>
<p><em>By Muhammed Ibrahim | <a href="https://github.com/Ibrahim-Tayyab?tab=repositories" target="_blank" rel="noopener noreferrer" class="">GitHub</a></em></p>]]></content>
        <author>
            <name>Muhammed Ibrahim</name>
            <uri>https://github.com/Ibrahim-Tayyab</uri>
        </author>
        <category label="Vision-Language-Action" term="Vision-Language-Action"/>
        <category label="Research" term="Research"/>
        <category label="Tutorials" term="Tutorials"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[5 Essential Tips for Sim-to-Real Transfer]]></title>
        <id>https://your-docusaurus-site.example.com/blog/sim-to-real-transfer-tips</id>
        <link href="https://your-docusaurus-site.example.com/blog/sim-to-real-transfer-tips"/>
        <updated>2025-12-02T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[You've trained a perfect policy in simulation—it walks, grasps, and navigates flawlessly. Then you deploy it to the real robot and... it fails immediately. Sound familiar?]]></summary>
        <content type="html"><![CDATA[<p>You've trained a perfect policy in simulation—it walks, grasps, and navigates flawlessly. Then you deploy it to the real robot and... <strong>it fails immediately.</strong> Sound familiar?</p>
<p>This is the infamous <strong>sim-to-real gap</strong>. Here are 5 battle-tested strategies to bridge it.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-domain-randomization-">1. Domain Randomization 🎲<a href="https://your-docusaurus-site.example.com/blog/sim-to-real-transfer-tips#1-domain-randomization-" class="hash-link" aria-label="Direct link to 1. Domain Randomization 🎲" title="Direct link to 1. Domain Randomization 🎲" translate="no">​</a></h2>
<p><strong>The Problem:</strong> Simulators have perfect physics. Reality doesn't.</p>
<p><strong>The Solution:</strong> Make your simulation <strong>less perfect</strong> during training.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-to-randomize">What to Randomize:<a href="https://your-docusaurus-site.example.com/blog/sim-to-real-transfer-tips#what-to-randomize" class="hash-link" aria-label="Direct link to What to Randomize:" title="Direct link to What to Randomize:" translate="no">​</a></h3>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">class</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">RandomizedEnv</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><span class="token keyword" style="color:rgb(86, 156, 214)">def</span><span class="token plain"> </span><span class="token function" style="color:rgb(220, 220, 170)">reset</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        </span><span class="token comment" style="color:rgb(106, 153, 85)"># Physics parameters</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">set_gravity</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">uniform</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token number" style="color:rgb(181, 206, 168)">9.5</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">10.5</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain">  </span><span class="token comment" style="color:rgb(106, 153, 85)"># Not exactly 9.81</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">set_friction</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">uniform</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token number" style="color:rgb(181, 206, 168)">0.3</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">1.2</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">set_mass_scale</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">uniform</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token number" style="color:rgb(181, 206, 168)">0.8</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">1.3</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        </span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        </span><span class="token comment" style="color:rgb(106, 153, 85)"># Visual appearance</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">set_lighting</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">uniform</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token number" style="color:rgb(181, 206, 168)">0.4</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">1.8</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">apply_texture_randomization</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        </span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        </span><span class="token comment" style="color:rgb(106, 153, 85)"># Sensor noise</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">set_camera_noise</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">gaussian</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token number" style="color:rgb(181, 206, 168)">0</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">0.05</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">set_joint_encoder_noise</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">gaussian</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token number" style="color:rgb(181, 206, 168)">0</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">0.01</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        </span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        </span><span class="token keyword" style="color:rgb(86, 156, 214)">return</span><span class="token plain"> self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">get_observation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><br></span></code></pre></div></div>
<p><strong>Why It Works:</strong> The policy learns to be <strong>robust to variations</strong>, so real-world imperfections don't surprise it.</p>
<p><strong>Real Example:</strong> Boston Dynamics uses this for Atlas—they randomize foot contact dynamics so the robot handles slippery surfaces.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-system-identification-">2. System Identification 🔬<a href="https://your-docusaurus-site.example.com/blog/sim-to-real-transfer-tips#2-system-identification-" class="hash-link" aria-label="Direct link to 2. System Identification 🔬" title="Direct link to 2. System Identification 🔬" translate="no">​</a></h2>
<p><strong>The Problem:</strong> Your URDF says the link weighs 2.5 kg. Reality? It's actually 2.8 kg.</p>
<p><strong>The Solution:</strong> Measure the real robot and update the simulation.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="parameters-to-identify">Parameters to Identify:<a href="https://your-docusaurus-site.example.com/blog/sim-to-real-transfer-tips#parameters-to-identify" class="hash-link" aria-label="Direct link to Parameters to Identify:" title="Direct link to Parameters to Identify:" translate="no">​</a></h3>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">def</span><span class="token plain"> </span><span class="token function" style="color:rgb(220, 220, 170)">system_id_experiment</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><span class="token triple-quoted-string string" style="color:rgb(206, 145, 120)">"""</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token triple-quoted-string string" style="color:rgb(206, 145, 120)">    Run controlled experiments on real robot to estimate parameters</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token triple-quoted-string string" style="color:rgb(206, 145, 120)">    """</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><span class="token comment" style="color:rgb(106, 153, 85)"># 1. Mass estimation (drop test)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    measured_mass </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> estimate_mass_from_acceleration</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><span class="token comment" style="color:rgb(106, 153, 85)"># 2. Friction (sliding test)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    measured_friction </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> estimate_friction_coefficient</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><span class="token comment" style="color:rgb(106, 153, 85)"># 3. Motor dynamics (step response)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    motor_params </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> fit_motor_transfer_function</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><span class="token comment" style="color:rgb(106, 153, 85)"># 4. Sensor calibration</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    camera_intrinsics </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> calibrate_camera</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><span class="token keyword" style="color:rgb(86, 156, 214)">return</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        </span><span class="token string" style="color:rgb(206, 145, 120)">'mass'</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> measured_mass</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        </span><span class="token string" style="color:rgb(206, 145, 120)">'friction'</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> measured_friction</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        </span><span class="token string" style="color:rgb(206, 145, 120)">'motor_params'</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> motor_params</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        </span><span class="token string" style="color:rgb(206, 145, 120)">'camera'</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> camera_intrinsics</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><br></span></code></pre></div></div>
<p><strong>Tools:</strong></p>
<ul>
<li class=""><strong>For mass/inertia:</strong> Swing test or CAD measurements</li>
<li class=""><strong>For friction:</strong> Inclined plane test</li>
<li class=""><strong>For motors:</strong> Step input + encoder data</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-residual-learning-">3. Residual Learning 🧩<a href="https://your-docusaurus-site.example.com/blog/sim-to-real-transfer-tips#3-residual-learning-" class="hash-link" aria-label="Direct link to 3. Residual Learning 🧩" title="Direct link to 3. Residual Learning 🧩" translate="no">​</a></h2>
<p><strong>The Problem:</strong> Your simulation is 95% accurate. That last 5% breaks everything.</p>
<p><strong>The Solution:</strong> Train a <strong>small correction policy</strong> on real robot data.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="architecture">Architecture:<a href="https://your-docusaurus-site.example.com/blog/sim-to-real-transfer-tips#architecture" class="hash-link" aria-label="Direct link to Architecture:" title="Direct link to Architecture:" translate="no">​</a></h3>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">class</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">ResidualPolicy</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><span class="token keyword" style="color:rgb(86, 156, 214)">def</span><span class="token plain"> </span><span class="token function" style="color:rgb(220, 220, 170)">__init__</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> sim_policy</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> residual_network</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">sim_policy </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> sim_policy  </span><span class="token comment" style="color:rgb(106, 153, 85)"># Frozen, trained in sim</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">residual </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> residual_network  </span><span class="token comment" style="color:rgb(106, 153, 85)"># Small, trained on real data</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><span class="token keyword" style="color:rgb(86, 156, 214)">def</span><span class="token plain"> </span><span class="token function" style="color:rgb(220, 220, 170)">predict</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> observation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        sim_action </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">sim_policy</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">observation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        correction </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">residual</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">observation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        </span><span class="token keyword" style="color:rgb(86, 156, 214)">return</span><span class="token plain"> sim_action </span><span class="token operator" style="color:rgb(212, 212, 212)">+</span><span class="token plain"> correction</span><br></span></code></pre></div></div>
<p><strong>Data Requirements:</strong></p>
<ul>
<li class=""><strong>Sim policy:</strong> 1M+ samples (cheap in simulation)</li>
<li class=""><strong>Residual:</strong> Only 1K-10K real samples (expensive but manageable)</li>
</ul>
<p><strong>Success Story:</strong> Used by Tesla for Optimus—sim policy handles 90% of walking, residual fixes hardware-specific quirks.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="4-privileged-learning-teacher-student-">4. Privileged Learning (Teacher-Student) 👨‍🏫<a href="https://your-docusaurus-site.example.com/blog/sim-to-real-transfer-tips#4-privileged-learning-teacher-student-" class="hash-link" aria-label="Direct link to 4. Privileged Learning (Teacher-Student) 👨‍🏫" title="Direct link to 4. Privileged Learning (Teacher-Student) 👨‍🏫" translate="no">​</a></h2>
<p><strong>The Problem:</strong> In simulation, you have ground-truth state (exact positions, forces). In reality, you only have noisy sensors.</p>
<p><strong>The Solution:</strong> Train a <strong>teacher</strong> with perfect information, then distill to a <strong>student</strong> that uses only sensors.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="training-process">Training Process:<a href="https://your-docusaurus-site.example.com/blog/sim-to-real-transfer-tips#training-process" class="hash-link" aria-label="Direct link to Training Process:" title="Direct link to Training Process:" translate="no">​</a></h3>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)"># Phase 1: Train teacher with privileged info</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">teacher_obs </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><span class="token string" style="color:rgb(206, 145, 120)">'joint_positions'</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> exact_positions</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><span class="token string" style="color:rgb(206, 145, 120)">'contact_forces'</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> exact_forces</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><span class="token string" style="color:rgb(206, 145, 120)">'object_poses'</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> ground_truth_poses</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">teacher_policy </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> train_rl</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">teacher_obs</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token comment" style="color:rgb(106, 153, 85)"># Phase 2: Train student to mimic teacher</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">student_obs </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><span class="token string" style="color:rgb(206, 145, 120)">'joint_positions'</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> noisy_encoder_data</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><span class="token string" style="color:rgb(206, 145, 120)">'imu'</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> noisy_imu_data</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><span class="token string" style="color:rgb(206, 145, 120)">'camera'</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> rgb_image</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">student_policy </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> train_imitation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    student_input</span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain">student_obs</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    teacher_output</span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain">teacher_policy</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">teacher_obs</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><br></span></code></pre></div></div>
<p><strong>Why It Works:</strong> The teacher learns the optimal policy. The student learns to <strong>infer</strong> the missing information from realistic sensors.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="5-curriculum-learning-">5. Curriculum Learning 📚<a href="https://your-docusaurus-site.example.com/blog/sim-to-real-transfer-tips#5-curriculum-learning-" class="hash-link" aria-label="Direct link to 5. Curriculum Learning 📚" title="Direct link to 5. Curriculum Learning 📚" translate="no">​</a></h2>
<p><strong>The Problem:</strong> Training directly on the final task is too hard (and dangerous) for the real robot.</p>
<p><strong>The Solution:</strong> Start easy, gradually increase difficulty.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="example-bipedal-walking-curriculum">Example: Bipedal Walking Curriculum<a href="https://your-docusaurus-site.example.com/blog/sim-to-real-transfer-tips#example-bipedal-walking-curriculum" class="hash-link" aria-label="Direct link to Example: Bipedal Walking Curriculum" title="Direct link to Example: Bipedal Walking Curriculum" translate="no">​</a></h3>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">class</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">WalkingCurriculum</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><span class="token keyword" style="color:rgb(86, 156, 214)">def</span><span class="token plain"> </span><span class="token function" style="color:rgb(220, 220, 170)">__init__</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">difficulty_level </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><span class="token keyword" style="color:rgb(86, 156, 214)">def</span><span class="token plain"> </span><span class="token function" style="color:rgb(220, 220, 170)">get_task</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        </span><span class="token keyword" style="color:rgb(86, 156, 214)">if</span><span class="token plain"> self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">difficulty_level </span><span class="token operator" style="color:rgb(212, 212, 212)">==</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">0</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">            </span><span class="token keyword" style="color:rgb(86, 156, 214)">return</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"Stand still without falling"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        </span><span class="token keyword" style="color:rgb(86, 156, 214)">elif</span><span class="token plain"> self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">difficulty_level </span><span class="token operator" style="color:rgb(212, 212, 212)">==</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">1</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">            </span><span class="token keyword" style="color:rgb(86, 156, 214)">return</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"Shift weight between feet"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        </span><span class="token keyword" style="color:rgb(86, 156, 214)">elif</span><span class="token plain"> self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">difficulty_level </span><span class="token operator" style="color:rgb(212, 212, 212)">==</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">2</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">            </span><span class="token keyword" style="color:rgb(86, 156, 214)">return</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"Take single step forward"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        </span><span class="token keyword" style="color:rgb(86, 156, 214)">elif</span><span class="token plain"> self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">difficulty_level </span><span class="token operator" style="color:rgb(212, 212, 212)">==</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">3</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">            </span><span class="token keyword" style="color:rgb(86, 156, 214)">return</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"Walk at 0.3 m/s on flat terrain"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        </span><span class="token keyword" style="color:rgb(86, 156, 214)">elif</span><span class="token plain"> self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">difficulty_level </span><span class="token operator" style="color:rgb(212, 212, 212)">==</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">4</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">            </span><span class="token keyword" style="color:rgb(86, 156, 214)">return</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"Walk at 1.0 m/s with push disturbances"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        </span><span class="token keyword" style="color:rgb(86, 156, 214)">elif</span><span class="token plain"> self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">difficulty_level </span><span class="token operator" style="color:rgb(212, 212, 212)">==</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">5</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">            </span><span class="token keyword" style="color:rgb(86, 156, 214)">return</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"Navigate stairs and slopes"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">    </span><span class="token keyword" style="color:rgb(86, 156, 214)">def</span><span class="token plain"> </span><span class="token function" style="color:rgb(220, 220, 170)">advance_if_ready</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> success_rate</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">        </span><span class="token keyword" style="color:rgb(86, 156, 214)">if</span><span class="token plain"> success_rate </span><span class="token operator" style="color:rgb(212, 212, 212)">&gt;</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">0.8</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">            self</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">difficulty_level </span><span class="token operator" style="color:rgb(212, 212, 212)">+=</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">1</span><br></span></code></pre></div></div>
<p><strong>Real Deployment:</strong></p>
<ol>
<li class="">✅ Train levels 0-3 entirely in simulation</li>
<li class="">✅ Fine-tune level 4 on real robot (safe push tests)</li>
<li class="">✅ Deploy level 5 only after extensive validation</li>
</ol>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="bonus-the-reality-check-checklist-">Bonus: The "Reality Check" Checklist ✅<a href="https://your-docusaurus-site.example.com/blog/sim-to-real-transfer-tips#bonus-the-reality-check-checklist-" class="hash-link" aria-label="Direct link to Bonus: The &quot;Reality Check&quot; Checklist ✅" title="Direct link to Bonus: The &quot;Reality Check&quot; Checklist ✅" translate="no">​</a></h2>
<p>Before deploying, verify:</p>
<ul class="contains-task-list containsTaskList_mC6p">
<li class="task-list-item"><input type="checkbox" disabled=""> <strong>Control frequency matches:</strong> Sim runs at 50 Hz? Real robot must too.</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <strong>Observation delays:</strong> Add 20-50ms latency in simulation to match camera/sensor delays.</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <strong>Action clipping:</strong> Real motors have torque limits—enforce them in sim.</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <strong>Emergency stops:</strong> Always have a kill switch (wireless or physical).</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <strong>Gradual rollout:</strong> Test in constrained space first (e.g., soft floor, safety harness).</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="case-study-anymal-quadruped">Case Study: ANYmal Quadruped<a href="https://your-docusaurus-site.example.com/blog/sim-to-real-transfer-tips#case-study-anymal-quadruped" class="hash-link" aria-label="Direct link to Case Study: ANYmal Quadruped" title="Direct link to Case Study: ANYmal Quadruped" translate="no">​</a></h2>
<p>ETH Zurich's ANYmal robot uses <strong>all 5 strategies</strong>:</p>
<ol>
<li class="">✅ <strong>Domain randomization:</strong> Terrain, friction, actuator response</li>
<li class="">✅ <strong>System ID:</strong> Measured motor parameters on real hardware</li>
<li class="">✅ <strong>Residual learning:</strong> Corrects for ground contact dynamics</li>
<li class="">✅ <strong>Privileged learning:</strong> Teacher has force sensors, student uses IMU</li>
<li class="">✅ <strong>Curriculum:</strong> Started with flat terrain, progressed to stairs/rubble</li>
</ol>
<p><strong>Result:</strong> 95% sim-to-real transfer success rate, zero-shot deployment to outdoor environments.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="your-turn">Your Turn<a href="https://your-docusaurus-site.example.com/blog/sim-to-real-transfer-tips#your-turn" class="hash-link" aria-label="Direct link to Your Turn" title="Direct link to Your Turn" translate="no">​</a></h2>
<p>Which strategy will you try first? Start with <strong>domain randomization</strong>—it's the easiest and gives the biggest gains.</p>
<p><strong>Recommended Tools:</strong></p>
<ul>
<li class=""><strong>Isaac Gym:</strong> Best for parallel simulation + domain randomization</li>
<li class=""><strong>MuJoCo:</strong> Precise physics for system identification</li>
<li class=""><strong>PyBullet:</strong> Free, good for learning</li>
</ul>
<hr>
<p><strong>Further Reading:</strong></p>
<ul>
<li class=""><a href="https://arxiv.org/abs/1812.07252" target="_blank" rel="noopener noreferrer" class="">Sim-to-Real Survey Paper</a></li>
<li class=""><a href="https://arxiv.org/abs/2109.11978" target="_blank" rel="noopener noreferrer" class="">ANYmal Paper</a></li>
<li class=""><a href="https://github.com/Ibrahim-Tayyab?tab=repositories" target="_blank" rel="noopener noreferrer" class="">Ibrahim's Sim-to-Real Resources</a></li>
</ul>
<p><em>By Muhammed Ibrahim | <a href="https://github.com/Ibrahim-Tayyab?tab=repositories" target="_blank" rel="noopener noreferrer" class="">My Projects</a></em></p>]]></content>
        <author>
            <name>Muhammed Ibrahim</name>
            <uri>https://github.com/Ibrahim-Tayyab</uri>
        </author>
        <category label="Simulation" term="Simulation"/>
        <category label="Tutorials" term="Tutorials"/>
        <category label="NVIDIA Isaac" term="NVIDIA Isaac"/>
    </entry>
</feed>