<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: SimTooReal</title>
    <description>The latest articles on DEV Community by SimTooReal (@simtooreal).</description>
    <link>https://dev.to/simtooreal</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3971907%2F2ae432aa-c5f7-4a0c-ace5-48e5e581cecc.png</url>
      <title>DEV Community: SimTooReal</title>
      <link>https://dev.to/simtooreal</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/simtooreal"/>
    <language>en</language>
    <item>
      <title>How to Add Live Telemetry and Failure Diagnosis to Isaac Lab, MuJoCo, or Gazebo Training in Under 5 Minutes</title>
      <dc:creator>SimTooReal</dc:creator>
      <pubDate>Sat, 06 Jun 2026 23:23:36 +0000</pubDate>
      <link>https://dev.to/simtooreal/how-to-add-live-telemetry-and-failure-diagnosis-to-isaac-lab-mujoco-or-gazebo-training-in-under-5-2416</link>
      <guid>https://dev.to/simtooreal/how-to-add-live-telemetry-and-failure-diagnosis-to-isaac-lab-mujoco-or-gazebo-training-in-under-5-2416</guid>
      <description>&lt;p&gt;If you train robot policies long enough, you eventually realize the main problem is not launching runs.&lt;/p&gt;

&lt;p&gt;It is answering these questions fast enough:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is the run actually learning?&lt;/li&gt;
&lt;li&gt;Is it stuck?&lt;/li&gt;
&lt;li&gt;Did the reward improve for the right reason?&lt;/li&gt;
&lt;li&gt;Is one joint or one failure mode quietly ruining transfer?&lt;/li&gt;
&lt;li&gt;Did the crash already tell us what to fix?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This post walks through a practical approach using SimTooReal, a platform built for robotics teams working across Isaac Lab, MuJoCo, Gazebo, and LeRobot workflows.&lt;/p&gt;

&lt;p&gt;The nice part is that the basic setup does not require rewriting your training loop.&lt;/p&gt;

&lt;h2&gt;
  
  
  What SimTooReal gives you
&lt;/h2&gt;

&lt;p&gt;From the public docs and feature pages, the platform is built around a few concrete capabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a lightweight Python agent that wraps existing training commands&lt;/li&gt;
&lt;li&gt;live streaming of 28+ training signals per iteration&lt;/li&gt;
&lt;li&gt;automatic classification of 50+ failure patterns&lt;/li&gt;
&lt;li&gt;sim-to-real scoring and readiness checks&lt;/li&gt;
&lt;li&gt;deployment gates before hardware promotion&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For this post, we will focus on the fastest path: getting live metrics and failure diagnosis around an existing run.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Install the Python agent
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;simtooreal-agent
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is the shortest path shown in the docs.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Wrap your existing training command
&lt;/h2&gt;

&lt;p&gt;For a generic training script:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;simtooreal-agent run &lt;span class="nt"&gt;--&lt;/span&gt; python train.py &lt;span class="nt"&gt;--env&lt;/span&gt; HalfCheetah-v5 &lt;span class="nt"&gt;--algo&lt;/span&gt; ppo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For an Isaac Lab run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;simtooreal-agent run &lt;span class="nt"&gt;--&lt;/span&gt; python scripts/rsl_rl/train.py &lt;span class="nt"&gt;--task&lt;/span&gt; Isaac-Ant-v0 &lt;span class="nt"&gt;--headless&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent sits around your existing command, parses stdout in real time, and streams metrics into the SimTooReal dashboard.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Open the dashboard
&lt;/h2&gt;

&lt;p&gt;The docs route is here:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;https://www.simtooreal.com/docs&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Once the run is wrapped, you can monitor live training behavior rather than waiting for logs to finish writing.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Watch the signals that actually change decisions
&lt;/h2&gt;

&lt;p&gt;The platform advertises 28+ streamed signals. In practice, the most useful ones for day-to-day robotics training are likely to be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;mean reward&lt;/li&gt;
&lt;li&gt;entropy&lt;/li&gt;
&lt;li&gt;KL divergence&lt;/li&gt;
&lt;li&gt;reward component breakdowns&lt;/li&gt;
&lt;li&gt;GPU utilization&lt;/li&gt;
&lt;li&gt;failure counts&lt;/li&gt;
&lt;li&gt;convergence behavior&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The reason this matters is simple: a reward curve alone is not enough.&lt;/p&gt;

&lt;p&gt;I have seen runs where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;reward rises while entropy collapses&lt;/li&gt;
&lt;li&gt;one bad contact event creates unstable gradients&lt;/li&gt;
&lt;li&gt;a policy seems healthy until a single joint starts violating limits repeatedly&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you only check the final chart, you catch those issues too late.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Use failure diagnosis while the run is still alive
&lt;/h2&gt;

&lt;p&gt;This is the part I like most in the public feature set.&lt;/p&gt;

&lt;p&gt;SimTooReal's failure intelligence is designed to recognize more than 50 patterns from live logs, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CUDA OOM&lt;/li&gt;
&lt;li&gt;illegal memory access&lt;/li&gt;
&lt;li&gt;entropy collapse&lt;/li&gt;
&lt;li&gt;reward plateau&lt;/li&gt;
&lt;li&gt;KL runaway&lt;/li&gt;
&lt;li&gt;NaN reward from physics contact&lt;/li&gt;
&lt;li&gt;joint limit violations&lt;/li&gt;
&lt;li&gt;unstable simulation timestep&lt;/li&gt;
&lt;li&gt;task config mismatch&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The platform also exposes a free public diagnosis page:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;https://www.simtooreal.com/diagnose&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;That page accepts logs from frameworks like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Isaac Lab&lt;/li&gt;
&lt;li&gt;rsl_rl&lt;/li&gt;
&lt;li&gt;Stable-Baselines3&lt;/li&gt;
&lt;li&gt;LeRobot&lt;/li&gt;
&lt;li&gt;MuJoCo&lt;/li&gt;
&lt;li&gt;Gazebo&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So even before you wire the full workflow, you can already use the diagnosis engine as a quick debugging surface.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Optional: add richer telemetry through SDK-style logging
&lt;/h2&gt;

&lt;p&gt;The training monitor page also shows an optional direct integration path for teams that want deeper instrumentation.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;isaacmonitor_sdk&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;MonitorClient&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;MonitorClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;run_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;my-run-001&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log_metrics&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;iteration&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;mean_reward&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;mean_reward&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;entropy&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;entropy&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;reward_components&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;velocity&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;upright&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;contact&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log_failure&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;joint&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;knee_left&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;reason&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;joint_limit_exceeded&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;finish_run&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If your team already has a structured training loop and wants richer event data than stdout parsing alone, this is the cleaner path.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Score the sim-to-real gap directly
&lt;/h2&gt;

&lt;p&gt;Once you start collecting trajectories from both sim and real hardware, the next useful step is the public transfer scoring tool:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;https://www.simtooreal.com/score&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The CLI example from the product pages is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;simtooreal score &lt;span class="nt"&gt;--sim&lt;/span&gt; sim_traj.csv &lt;span class="nt"&gt;--real&lt;/span&gt; real_traj.csv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;According to the site, this compares trajectories with Dynamic Time Warping and returns a transfer score out of 100.&lt;/p&gt;

&lt;p&gt;That is useful because it turns the vague statement "transfer seems okay" into something you can compare over time.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Move from run tracking to deployment discipline
&lt;/h2&gt;

&lt;p&gt;This is where the product goes beyond metrics collection.&lt;/p&gt;

&lt;p&gt;The deployment flow on the site is built around:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;transfer validation&lt;/li&gt;
&lt;li&gt;physics safety gates&lt;/li&gt;
&lt;li&gt;operator preflight&lt;/li&gt;
&lt;li&gt;shadow mode&lt;/li&gt;
&lt;li&gt;canary rollout&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your team is already training policies successfully, this is the next maturity step. Training visibility helps you produce better checkpoints. Deployment gates help you avoid promoting the wrong ones.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this setup is practical
&lt;/h2&gt;

&lt;p&gt;A lot of robotics infra tools fail because they ask for too much up front.&lt;/p&gt;

&lt;p&gt;What makes this workflow practical is that it gives you a progressive path:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;wrap an existing run&lt;/li&gt;
&lt;li&gt;get live metrics&lt;/li&gt;
&lt;li&gt;use automatic diagnosis&lt;/li&gt;
&lt;li&gt;add transfer scoring&lt;/li&gt;
&lt;li&gt;enforce deployment gates&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That is a much better adoption curve than "rebuild your training stack around our SDK."&lt;/p&gt;

&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;If you work in robot learning, the gap between simulation and hardware is not just a modeling problem. It is a visibility problem and a decision problem.&lt;/p&gt;

&lt;p&gt;A good workflow should help you answer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what is happening now&lt;/li&gt;
&lt;li&gt;why it failed&lt;/li&gt;
&lt;li&gt;whether transfer is improving&lt;/li&gt;
&lt;li&gt;whether a policy is safe enough to move forward&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is what SimTooReal is aiming to solve.&lt;/p&gt;

&lt;p&gt;Useful links:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Docs: &lt;code&gt;https://www.simtooreal.com/docs&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Training monitor: &lt;code&gt;https://www.simtooreal.com/features/train&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Failure intelligence: &lt;code&gt;https://www.simtooreal.com/features/failures&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Free diagnosis: &lt;code&gt;https://www.simtooreal.com/diagnose&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Transfer score: &lt;code&gt;https://www.simtooreal.com/score&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Suggested dev.to Metadata
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Tags: &lt;code&gt;robotics&lt;/code&gt;, &lt;code&gt;machinelearning&lt;/code&gt;, &lt;code&gt;python&lt;/code&gt;, &lt;code&gt;ai&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;SEO title: &lt;code&gt;How to Add Live Telemetry to Isaac Lab, MuJoCo, or Gazebo Training&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;CTA: &lt;code&gt;Start with the free diagnosis tool or the docs quickstart.&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>robotics</category>
      <category>mujoco</category>
      <category>reinforcementlearning</category>
    </item>
  </channel>
</rss>
