<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Robotics on Mahdi Sarfarazi</title>
    <link>https://mahdisf.ir/tags/robotics/</link>
    <description>Recent content in Robotics on Mahdi Sarfarazi</description>
    <image>
      <title>Mahdi Sarfarazi</title>
      <url>https://mahdisf.ir/images/social-card.png</url>
      <link>https://mahdisf.ir/images/social-card.png</link>
    </image>
    <generator>Hugo</generator>
    <language>en-US</language>
    <lastBuildDate>Sun, 11 Oct 2026 00:00:00 +0330</lastBuildDate>
    <atom:link href="https://mahdisf.ir/tags/robotics/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Adaptive sit-to-stand assistance for the FUM-NEXA knee exoskeleton</title>
      <link>https://mahdisf.ir/projects/fuzzy-aan-knee-exoskeleton/</link>
      <pubDate>Sat, 23 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://mahdisf.ir/projects/fuzzy-aan-knee-exoskeleton/</guid>
      <description>Real-time ROS2 control for a knee exoskeleton that adapts sit-to-stand assistance to the user&amp;#39;s measured motion. Engineering prototype; first-author preprint.</description>
      <content:encoded><![CDATA[<div class="case-summary">
<p>A fuzzy &ldquo;Strength Index&rdquo; adapts knee-exoskeleton torque in real time while the user stands up from a chair. In a five-person engineering study it cut measured muscle effort by 30% at slow speed, with smaller gains at faster speeds.</p>
<p>This is a research prototype from FUM CARE. I am first author of a <a href="https://doi.org/10.2139/ssrn.6335794">preprint on SSRN</a>, which has not been peer-reviewed. The study was an engineering evaluation and was not clinical.</p>
</div>
<dl class="snapshot">
  <div><dt>My role</dt><dd>Project manager and first author, in a university research team</dd></div>
  <div><dt>Device</dt><dd>FUM-NEXA: passive hip and actuated knee joint per leg</dd></div>
  <div><dt>Task</dt><dd>Standing up from a 46 cm chair</dd></div>
  <div><dt>Runtime</dt><dd>Raspberry Pi 4B, ROS2 (Python/C++), CAN motor control</dd></div>
  <div><dt>Evaluation</dt><dd>5 healthy subjects × 3 speeds × 3 device conditions</dd></div>
</dl>
<h2 id="the-problem">The problem</h2>
<p>Fixed torque profiles are simple to deploy, but they can&rsquo;t tell a user who is moving faster than the reference from one who needs substantial help. A rehabilitation device also has to avoid the opposite failure: giving so much torque that the user stops contributing.</p>
<p>The project had to meet several constraints at once:</p>
<ul>
<li>estimate how much help is needed from signals available on the robot, without continuous EMG control;</li>
<li>adapt torque <em>during</em> the movement as well as between sessions;</li>
<li>run on a Raspberry Pi-class computer with a small sensor and actuator set;</li>
<li>start assisting at the right moment, close to lifting off the chair;</li>
<li>show that the device reduces effort <strong>after</strong> accounting for its own weight and inertia.</li>
</ul>
<p>The last constraint turned out to matter most. Wearing the exoskeleton with the motors off <em>increased</em> measured muscle effort by about 40%, so the controller had to more than offset the device&rsquo;s own burden before it could help.</p>
<h2 id="my-role">My role</h2>
<p>I was project manager and first author. It was a team project at FUM CARE, and I was not the sole designer, fabricator or experimenter.</p>
<p>I developed the control concept, meaning the Strength Index, the fuzzy rule base and the torque-scaling policy. I connected the controller to ROS2, the CAN sensors and actuators, real-time filtering and logging. I coordinated the control, mechanical, experimental and writing work needed to get from concept to a working prototype, and helped structure the three device conditions and three speeds used for validation. I also wrote the manuscript and prepared its figures.</p>
<h2 id="main-design-decisions">Main design decisions</h2>
<p>The controller estimates how much help the user needs from hip and knee velocity errors and torque feedback, without EMG. That estimate of the user&rsquo;s capability is indirect, but it needs no extra sensors on the body.</p>
<p>It scales a reference torque using the index: assistive torque = desired torque × (1 − Strength Index). The movement target stays the same while the amount of help changes.</p>
<p>We chose a small rule base. Nine fuzzy rules run comfortably on a Raspberry Pi and are easy to inspect and tune, which suited a small team and limited compute better than a learned model.</p>
<p>Assistance starts at chair lift-off. The right torque at the wrong phase of the movement is still a bad experience, so we treated the trigger point as a requirement.</p>
<p>The evaluation included a motors-off condition, which separated the device&rsquo;s burden from the controller&rsquo;s benefit.</p>
<p><img alt="The four phases of standing up and the assistance trigger point near chair lift-off" loading="lazy" src="/projects/fuzzy-aan-knee-exoskeleton/sts-trigger-phases.jpg"></p>
<p><em>The four sit-to-stand phases, with the trigger point near chair lift-off.</em></p>
<h2 id="results">Results</h2>
<p>Average change in muscle effort (EMG IRMS) across the five subjects, relative to standing up without the exoskeleton. Positive values mean less effort.</p>
<table>
  <thead>
      <tr>
          <th>Condition</th>
          <th>Speed</th>
          <th style="text-align: right">Effort change</th>
          <th style="text-align: right">Variability change</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Assistance on (50% setting)</td>
          <td>Slow</td>
          <td style="text-align: right">30.34% less</td>
          <td style="text-align: right">33.81% less</td>
      </tr>
      <tr>
          <td>Assistance on (50% setting)</td>
          <td>Normal</td>
          <td style="text-align: right">13.20% less</td>
          <td style="text-align: right">16.45% less</td>
      </tr>
      <tr>
          <td>Assistance on (50% setting)</td>
          <td>Fast</td>
          <td style="text-align: right">7.59% less</td>
          <td style="text-align: right">14.10% less</td>
      </tr>
      <tr>
          <td>Motors off</td>
          <td>Slow</td>
          <td style="text-align: right">41.21% more</td>
          <td style="text-align: right">30.09% more</td>
      </tr>
      <tr>
          <td>Motors off</td>
          <td>Normal</td>
          <td style="text-align: right">38.70% more</td>
          <td style="text-align: right">36.17% more</td>
      </tr>
      <tr>
          <td>Motors off</td>
          <td>Fast</td>
          <td style="text-align: right">40.87% more</td>
          <td style="text-align: right">42.53% more</td>
      </tr>
  </tbody>
</table>
<p>Assistance reduced measured effort at all three speeds. The benefit was largest at slow speed, where help matters most for users who struggle to follow the reference, and it shrank at fast speed, so the controller was not equally effective everywhere. The device&rsquo;s own burden was large enough that the results could only be interpreted against the motors-off condition.</p>
<div class="callout">
<p>Five healthy subjects are not a clinical cohort. These results show engineering feasibility and say nothing yet about rehabilitation efficacy. The study did not report latency, confidence intervals, statistical significance, actuator safety margins or long-term reliability. The next step would need more and more varied participants, comfort and safety measures, and repeatability data.</p>
</div>
<p><img alt="Assistive torque follows the shape of the full desired torque profile at lower magnitude at slow, normal and fast speeds" loading="lazy" src="/projects/fuzzy-aan-knee-exoskeleton/aan-torque-profile.png"></p>
<p><em>The adaptive torque keeps the shape of the reference profile at a lower magnitude across the three speeds.</em></p>
<h2 id="what-i-took-into-product-work">What I took into product work</h2>
<p>A feature can make things worse before it helps, so I now try to measure the cost of adopting a product separately from the value of using it.</p>
<p>Timing belongs in the requirements. Correct output delivered at the wrong moment still fails the user.</p>
<p>Limited compute and sensing pushed this design toward a small controller that is easy to explain, and that worked in its favour.</p>
<h2 id="technical-detail">Technical detail</h2>
<details>
<summary>How the Strength Index works</summary>
<p>The controller represents the user&rsquo;s instantaneous capability as a value between 0 and 1. It takes three inputs: knee angular-velocity error, hip angular-velocity error, and the difference between desired and delivered assistive torque. Each input maps to Negative, Zero or Positive fuzzy sets, and the output uses five bands. A nine-rule Mamdani system combines them, using the minimum for rule firing and centroid defuzzification.</p>
<p>When the user keeps up with the reference, the index rises and assistance falls. When the user lags, or the robot isn&rsquo;t delivering the expected torque, the index falls and assistance rises.</p>
<p>The desired hip and knee velocity profiles are sixth-degree polynomials fitted to 20 normal sit-to-stand motions from able-bodied data. A normalized knee torque-angle profile provides the full-assistance reference, which the index scales.</p>
</details>
<details>
<summary>Runtime architecture</summary>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">CAN sensor data
</span></span><span class="line"><span class="cl">  → filter joint velocity and torque
</span></span><span class="line"><span class="cl">  → compute motion and torque errors
</span></span><span class="line"><span class="cl">  → fuzzy Strength Index → scale desired torque
</span></span><span class="line"><span class="cl">  → motor-driver PID → CAN → knee BLDC actuators
</span></span><span class="line"><span class="cl">  → log sensor, motor and controller data
</span></span></code></pre></div><p>The controller is written in Python, with C++ ROS2 nodes for CAN reading and motor commands (SocketCAN). Real-time second-order Butterworth filters, configured for a 400 Hz sampling assumption, use a 5 Hz cutoff for hip velocity and 10 Hz for knee velocity and torque feedback.</p>
<p><img alt="Functional ROS2 architecture for sensor acquisition, fuzzy control, motor commands and logging" loading="lazy" src="/projects/fuzzy-aan-knee-exoskeleton/ros2-architecture.svg"></p>
</details>
<details>
<summary>Experimental protocol</summary>
<p>Five healthy subjects stood up from a 46 cm chair at three target speeds (slow 20°/s, normal 35°/s, fast 60°/s) under three conditions: no exoskeleton, exoskeleton with motors off, and exoskeleton with assistance at the 50% setting. EMG was recorded from the vastus lateralis, semimembranosus and hamstrings. The analysis used IRMS as a measure of overall muscle effort, signal standard deviation for variability, and percentage change from the no-exoskeleton baseline.</p>
<p><img alt="Processed vastus lateralis EMG for the nine speed and condition combinations" loading="lazy" src="/projects/fuzzy-aan-knee-exoskeleton/emg-results.png"></p>
</details>
<details>
<summary>Hardware and software stack</summary>
<ul>
<li>Two T-Motor BLDC knee actuators (rated up to 48 Nm) with magnetic joint encoders</li>
<li>Raspberry Pi 4B running ROS2</li>
<li>Python, C++, NumPy, SciPy and scikit-fuzzy</li>
<li>CAN bus for sensor acquisition and motor commands</li>
<li>Fuzzy assistance controller on top, PID torque control on the motor driver</li>
</ul>
</details>
<h2 id="publication">Publication</h2>
<p>S. M. Sarfarazi, S. Farhadi, H. Sabzali, M. H. Gheshlaghi, I. Kardan and A. Akbarzadeh, &ldquo;A Fuzzy Strength Index for Adaptive Assist-as-Needed Control of a Knee Exoskeleton Robot to Enhance Sit-to-Stand Transition,&rdquo; SSRN preprint, posted March 2026. <a href="https://doi.org/10.2139/ssrn.6335794">doi:10.2139/ssrn.6335794</a>. The preprint has not been peer-reviewed. Code and video are not public.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Hierarchical reinforcement learning for quadruped navigation</title>
      <link>https://mahdisf.ir/projects/quadruped-navigation-hierarchical-rl/</link>
      <pubDate>Tue, 16 Dec 2025 00:00:00 +0000</pubDate>
      <guid>https://mahdisf.ir/projects/quadruped-navigation-hierarchical-rl/</guid>
      <description>Research on splitting quadruped navigation and locomotion into two reinforcement-learning policies joined by a bounded velocity interface. Simulation results; thesis in progress.</description>
      <content:encoded><![CDATA[<div class="case-summary">
<p>Separating <em>where to go</em> from <em>how to walk</em> let a simulated quadruped reach 94.2% navigation success, including 88.6% on map layouts it had never seen.</p>
<p>This is simulation research, presented as a conference paper at ICRoM 2025. A public proceedings record is not available yet. My M.Sc. thesis extends this work and is still in progress, and this page reports no hardware results.</p>
<p>Read the <a href="/posts/hierarchical-deep-reinforcement-learning-quadruped-navigation/">paper summary and original figures</a> or <a href="/papers/hierarchical-deep-reinforcement-learning-quadruped-navigation.pdf">download the complete conference manuscript (PDF)</a>.</p>
</div>
<p><img alt="Diagram: a navigation policy sends a bounded velocity command to a locomotion policy, which also reads terrain height samples and drives the robot&rsquo;s joints." loading="lazy" src="/projects/quadruped-navigation-hierarchical-rl/architecture.svg"></p>
<h2 id="the-problem">The problem</h2>
<p>A legged robot crossing cluttered, uneven ground has two jobs at once: choose a route around obstacles, and place its feet so it doesn&rsquo;t fall. Training one &ldquo;monolithic&rdquo; policy to do both mixes very different objectives, and it tends to generalize poorly to new layouts.</p>
<h2 id="the-approach">The approach</h2>
<p>A high-level navigation policy works on a 2D map and goal, and outputs a body-frame velocity command. That command is bounded, so the navigation policy can&rsquo;t ask for motion the locomotion policy can&rsquo;t deliver.</p>
<p>A low-level locomotion policy tracks the command in 3D. It uses 187 terrain height samples around the robot&rsquo;s body and does no explicit footstep planning.</p>
<p>Both policies were trained and evaluated in GPU-parallel Isaac Gym simulation. In the reported setup, training took about five hours on a single GPU.</p>
<h2 id="my-role">My role</h2>
<p>I was second author on a three-person paper. I designed the hierarchical structure and implemented the reinforcement-learning path-planning component. In the lab, I also define requirements, evaluation criteria and success metrics for this line of experiments.</p>
<h2 id="results">Results (simulation)</h2>
<table>
  <thead>
      <tr>
          <th>Measure, from the paper&rsquo;s simulation evaluation</th>
          <th style="text-align: right">Result</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Overall navigation success</td>
          <td style="text-align: right">94.2%</td>
      </tr>
      <tr>
          <td>Success on unseen map layouts, without retraining</td>
          <td style="text-align: right">88.6%</td>
      </tr>
      <tr>
          <td>End-to-end success with combined obstacles and terrain</td>
          <td style="text-align: right">87.4%</td>
      </tr>
      <tr>
          <td>Collisions compared with the monolithic baseline</td>
          <td style="text-align: right">71.4% fewer</td>
      </tr>
  </tbody>
</table>
<p>These numbers come from simulation under the paper&rsquo;s evaluation protocol, and none of them were measured on a physical robot.</p>
<h2 id="how-this-carries-over-to-product-work">How this carries over to product work</h2>
<p>Deciding what the upper layer may request, and what the lower layer guarantees, turned one hard problem into two testable ones, and each layer could be evaluated against its own success criteria. I use the same approach when I scope product features and split work between teams.</p>
<h2 id="thesis-work-in-progress">Thesis work, in progress</h2>
<p>The thesis extends the architecture toward risk-aware navigation. It combines global graph search (Dijkstra) with sampling-based local planning (MPPI) and a distributional reinforcement-learning controller for locomotion. Results will be published once the thesis is complete.</p>
<h2 id="citation">Citation</h2>
<p>Y. Ayoubi Rad, S. M. Sarfarazi and M. Shahbazi, &ldquo;Hierarchical Deep Reinforcement Learning for Quadruped Navigation over Complex Terrains,&rdquo; <em>13th RSI International Conference on Robotics and Mechatronics (ICRoM 2025)</em>, Tehran, December 2025. <a href="/papers/hierarchical-deep-reinforcement-learning-quadruped-navigation.pdf">Author-hosted conference manuscript (PDF)</a>. A proceedings link will be added when the public record is available.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Human-following mobile robot</title>
      <link>https://mahdisf.ir/projects/human-follower-mobile-robot/</link>
      <pubDate>Sat, 01 Feb 2025 00:00:00 +0000</pubDate>
      <guid>https://mahdisf.ir/projects/human-follower-mobile-robot/</guid>
      <description>Course project: a four-wheeled robot that follows a person, using on-phone vision and an Arduino motor controller with an ultrasonic safety stop.</description>
      <content:encoded><![CDATA[<p>A course project in which I owned the requirements and the end-to-end build of a small robot that follows a person indoors.</p>
<p><img alt="Diagram: an Android phone sends direction commands over USB serial to an Arduino Uno and L298N motor driver, with an ultrasonic sensor that can stop the robot." loading="lazy" src="/projects/human-follower-mobile-robot/architecture.svg"></p>
<h2 id="what-i-built">What I built</h2>
<p>A Python (Kivy/Buildozer) Android app runs a TensorFlow Lite MobileNet v1 model on the phone to detect and select the person to follow, at roughly 60 frames per second.</p>
<p>The phone sends forward, backward, left, right and stop commands over USB serial to an Arduino Uno, which drives four DC motors through an L298N driver.</p>
<p>An HC-SR04 ultrasonic sensor overrides the vision system. It stops or redirects the robot whenever an obstacle is closer than 1.5 m.</p>
<h2 id="decisions-worth-noting">Decisions worth noting</h2>
<p>I compared a Raspberry Pi with a smartphone as the compute platform, and SAMURAI, YOLOv8 and MobileNet as detectors, choosing on inference efficiency. Running vision on the phone kept the robot&rsquo;s electronics simple and cheap.</p>
<h2 id="limits">Limits</h2>
<p>This was a course prototype. It was not evaluated with a formal protocol, and no code or video is public.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Hierarchical Deep Reinforcement Learning for Quadruped Navigation over Complex Terrains</title>
      <link>https://mahdisf.ir/posts/hierarchical-deep-reinforcement-learning-quadruped-navigation/</link>
      <pubDate>Sun, 11 Oct 2026 00:00:00 +0330</pubDate>
      <guid>https://mahdisf.ir/posts/hierarchical-deep-reinforcement-learning-quadruped-navigation/</guid>
      <description>Our ICRoM 2025 paper on separating quadruped navigation and locomotion through a velocity interface. Research summary, five original figures, simulation results and the full PDF.</description>
      <content:encoded><![CDATA[<p>Our ICRoM 2025 paper separates a quadruped robot&rsquo;s navigation and locomotion into two learned policies. A high-level policy decides how to move toward a goal around obstacles; a low-level policy turns its velocity commands into stable motion over uneven ground. This page brings together the paper&rsquo;s abstract, original figures and reported simulation results.</p>
<p><a class="btn btn-primary" href="/papers/hierarchical-deep-reinforcement-learning-quadruped-navigation.pdf" type="application/pdf">Read the full paper (PDF · 6 pages)</a></p>
<p><strong>Authors:</strong> Yousef Ayoubi Rad, Seyyed Mahdi Sarfarazi and Mohammad Shahbazi.<br>
<strong>Affiliation:</strong> AI &amp; Dynamic Systems Lab, School of Mechanical Engineering, Iran University of Science and Technology.<br>
<strong>Conference:</strong> 13th RSI International Conference on Robotics and Mechatronics (ICRoM 2025), December 16–18, 2025, Tehran, Iran.</p>
<p>The downloadable PDF is the conference manuscript supplied by the authors. All results below were obtained in simulation. This page does not report deployment on a physical robot.</p>
<h2 id="abstract">Abstract</h2>
<p>Quadruped robots are promising for tasks like disaster response and exploration, navigating cluttered spaces while maintaining stability over uneven terrains such as stairs, slopes, and obstacles. This paper presents a hierarchical deep reinforcement learning (HRL) framework that decouples high-level navigation from low-level locomotion via a compact velocity-command interface <code>u = (vₓ, vᵧ, ωz)</code>. The high-level policy generates smooth body-frame velocity commands for goal-directed movement in 2D maps, while the low-level policy executes these commands using joint targets with PD control, enhanced by proprioceptive feedback and local terrain sampling. This modular approach mitigates reward conflicts, boosts training efficiency, and enables independent layer optimization in Isaac Gym. Evaluations on maze-like maps and varied terrains show reliable goal reaching, stable tracking, and improved robustness over monolithic baselines. The results underscore how hierarchical decomposition enhances generalization and stability, offering a promising path for intelligent quadruped mobility in real-world applications.</p>
<h2 id="why-separate-navigation-from-locomotion">Why separate navigation from locomotion?</h2>
<p>Choosing a route and keeping a legged robot balanced involve different observations, actions and time scales. Training a single policy to solve both can introduce competing rewards and make it harder to reuse a locomotion controller on a new map.</p>
<p>The proposed hierarchy connects the policies through a bounded body-frame velocity command. The navigation layer uses the robot&rsquo;s pose, relative goal and obstacle information. The locomotion layer uses body and joint measurements together with a fixed pattern of <strong>187 local terrain-height samples</strong>. Joint targets are tracked by a PD controller. Command saturation and smoothing keep the interface within the motion limits used in the simulation.</p>
<figure>
    <img loading="lazy" src="/posts/hierarchical-deep-reinforcement-learning-quadruped-navigation/hierarchical-architecture.webp"
         alt="Flowchart connecting the environment and robot state to separate high-level path-planning and low-level locomotion policies through velocity commands."/> <figcaption>
            <p>Figure 2 from the paper. The high-level path planner and low-level locomotion controller communicate through a compact velocity interface.</p>
        </figcaption>
</figure>

<h2 id="simulation-and-terrain-awareness">Simulation and terrain awareness</h2>
<p>Experiments use Isaac Gym with a Legged-Gym-style task wrapper. The terrain suite includes stairs, ramps, discrete obstacles and sinusoidal surfaces. Navigation is trained in a 10 × 10 m workspace with procedurally generated obstacles; larger maps are normalized to the training domain.</p>
<figure>
    <img loading="lazy" src="/posts/hierarchical-deep-reinforcement-learning-quadruped-navigation/terrain-types.webp"
         alt="Isaac Gym terrain suite with regions marked A, B and C for sinusoidal waves, discrete obstacles and pyramid stairs."/> <figcaption>
            <p>Figure 1 from the paper. The simulated terrain suite: A, sinusoidal waves; B, discrete obstacles; C, pyramid stairs.</p>
        </figcaption>
</figure>

<p>The high-level planner is trained with Proximal Policy Optimization (PPO), using an MLP with two 256-neuron hidden layers. Training proceeds in stages: first train locomotion on procedural terrains, then hold that policy fixed while training navigation. The paper reports about five hours of combined training on an NVIDIA RTX 3080 Ti, with roughly 12,000 parallel simulation environments.</p>
<figure>
    <img loading="lazy" src="/posts/hierarchical-deep-reinforcement-learning-quadruped-navigation/terrain-traversal.webp"
         alt="Four simulated quadruped examples: ascending obstacles, traversing stairs, descending obstacles and walking over sinusoidal waves, with local terrain sampling points shown in green."/> <figcaption>
            <p>Figure 3 from the paper. Terrain traversal: (a) ascending obstacles, (b) stairs, (c) descending obstacles and (d) sinusoidal waves. Green points show local terrain sampling.</p>
        </figcaption>
</figure>

<h2 id="from-a-map-to-a-velocity-command">From a map to a velocity command</h2>
<p>Input occupancy maps are converted into obstacle features for the navigation policy. The planner uses goal and obstacle information to produce commands, while the locomotion policy handles contact and balance in the physics simulation.</p>
<figure>
    <img loading="lazy" src="/posts/hierarchical-deep-reinforcement-learning-quadruped-navigation/map-representation.webp"
         alt="Side-by-side input occupancy map and circle-based obstacle representation, with a blue planned path through the obstacles."/> <figcaption>
            <p>Figure 4 from the paper. (a) Input occupancy map; (b) circle-based obstacle representation and navigation path.</p>
        </figcaption>
</figure>

<figure>
    <img loading="lazy" src="/posts/hierarchical-deep-reinforcement-learning-quadruped-navigation/navigation-results.webp"
         alt="Three panels showing a clustered obstacle map, a simulated quadruped along its route and a three-dimensional view of the complete blue trajectory from start to goal."/> <figcaption>
            <p>Figure 5 from the paper. (a) Obstacle map and route; (b) intermediate robot position; (c) complete trajectory in the simulated environment.</p>
        </figcaption>
</figure>

<h2 id="reported-results">Reported results</h2>
<p>The following values reproduce Table I of the paper. Navigation success, collision rate, path ratio and linear velocity-tracking error are distinct measures; navigation success alone does not describe end-to-end performance on uneven terrain.</p>
<table>
  <thead>
      <tr>
          <th>Method</th>
          <th style="text-align: right">Navigation success</th>
          <th style="text-align: right">Collisions per episode</th>
          <th style="text-align: right">Path ratio</th>
          <th style="text-align: right">Tracking error (m/s)</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Hierarchical framework</td>
          <td style="text-align: right">94.2%</td>
          <td style="text-align: right">0.08</td>
          <td style="text-align: right">1.083</td>
          <td style="text-align: right">0.042</td>
      </tr>
      <tr>
          <td>Monolithic baseline</td>
          <td style="text-align: right">81.7%</td>
          <td style="text-align: right">0.28</td>
          <td style="text-align: right">1.194</td>
          <td style="text-align: right">0.061</td>
      </tr>
      <tr>
          <td>Ablation: no hierarchy</td>
          <td style="text-align: right">83.5%</td>
          <td style="text-align: right">0.22</td>
          <td style="text-align: right">1.176</td>
          <td style="text-align: right">0.057</td>
      </tr>
      <tr>
          <td>Ablation: no terrain sensing</td>
          <td style="text-align: right">91.8%</td>
          <td style="text-align: right">0.11</td>
          <td style="text-align: right">1.091</td>
          <td style="text-align: right">0.069</td>
      </tr>
  </tbody>
</table>
<p>The paper also reports <strong>88.6% navigation success on unseen map layouts</strong>, without retraining, and <strong>87.4% end-to-end success</strong> when obstacles and terrain variations are combined. Compared with the monolithic baseline, collisions per episode fall from 0.28 to 0.08, a 71.4% reduction. Removing terrain sensing raises the reported fall rate from 1.4% to 7.3%.</p>
<h2 id="scope-and-limitations">Scope and limitations</h2>
<p>Evaluation uses simulation, static obstacles and nominal sensing. The local height representation does not provide semantic understanding or long-range terrain topology. Tight bends and small-platform sequences can slow progress, and freezing locomotion during navigation training limits how the two layers adapt together.</p>
<p>Online mapping, dynamic obstacles, selective co-training and hardware validation remain directions for further work. The reported simulation results are not evidence of real-world reliability.</p>
<p>For my contribution and the ongoing thesis work, see the <a href="/projects/quadruped-navigation-hierarchical-rl/">related research case study</a>.</p>
<h2 id="paper-and-citation">Paper and citation</h2>
<p><a href="/papers/hierarchical-deep-reinforcement-learning-quadruped-navigation.pdf">Download the complete conference manuscript (PDF)</a>.</p>
<p>Y. Ayoubi Rad, S. M. Sarfarazi and M. Shahbazi, “Hierarchical Deep Reinforcement Learning for Quadruped Navigation over Complex Terrains,” <em>13th RSI International Conference on Robotics and Mechatronics (ICRoM 2025)</em>, Tehran, Iran, December 16–18, 2025.</p>
<p>All five figures on this page were extracted from the supplied Word manuscript. The full PDF contains the equations, references and complete discussion.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Starting This Blog</title>
      <link>https://mahdisf.ir/posts/starting-this-blog/</link>
      <pubDate>Wed, 27 May 2026 09:00:00 +0330</pubDate>
      <guid>https://mahdisf.ir/posts/starting-this-blog/</guid>
      <description>Why I am keeping a technical blog about robotics, AI, simulation, and control.</description>
      <content:encoded><![CDATA[<p>This blog is a place for concise technical notes from my work in AI and robotics.</p>
<p>The topics I plan to write about include ROS2 software architecture, reinforcement learning for control, Isaac Gym and Gazebo simulation workflows, multimodal robot data pipelines, and the practical details of connecting LLMs and VLMs to robotic systems.</p>
<p>My goal is to keep the writing useful: implementation notes, design decisions, experiments, lessons from hardware integration, and research summaries that can help another engineer reproduce or improve the work.</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
