<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Control on Mulham Fetna</title>
    <link>https://mulhamfetna.com/tags/control/</link>
    <description>Recent content in Control on Mulham Fetna</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <managingEditor>contact@mulhamfetna.com (Mulham Fetna)</managingEditor>
    <webMaster>contact@mulhamfetna.com (Mulham Fetna)</webMaster>
    <copyright>© 2026 Mulham Fetna</copyright>
    <lastBuildDate>Wed, 16 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://mulhamfetna.com/tags/control/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>Why the simulated tendon finger is a switch — and three fixes tested in MuJoCo</title>
      <link>https://mulhamfetna.com/projects/ros2-tendon-driven-hand-mujoco-digital-twin-vision-teleoperation/tendon-physics-switch/</link>
      <pubDate>Wed, 16 Sep 2026 00:00:00 +0000</pubDate>
      <author>contact@mulhamfetna.com (Mulham Fetna)</author>
      <guid>https://mulhamfetna.com/projects/ros2-tendon-driven-hand-mujoco-digital-twin-vision-teleoperation/tendon-physics-switch/</guid>
      <description>&lt;div class=&#34;lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl&#34;&gt;&#xA;  The vision layer sends a carefully normalized, smooth 0-to-1 signal. The simulated finger turns it&#xA;into two states: open and closed. This is the most important thing to understand about the twin —&#xA;and every number below was measured on the model in the repository.&#xA;&lt;/div&gt;&#xA;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;The measurement&#xA;    &lt;div id=&#34;the-measurement&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#the-measurement&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The same flexion was applied to all five motors, the model simulated for 3 s from rest, and the&#xA;steady-state joint angles recorded — 41 flexion values from 0 to 1.&lt;/p&gt;&#xA;&#xA;&lt;div class=&#34;chart&#34;&gt;&#xA;  &lt;canvas id=&#34;chart-21ff2680002d0af6f1365e2e937bcf1a&#34;&gt;&lt;/canvas&gt;&#xA;  &lt;script type=&#34;text/javascript&#34;&gt;&#xA;    window.addEventListener(&#34;DOMContentLoaded&#34;, (event) =&gt; {&#xA;      const ctx = document.getElementById(&#34;chart-21ff2680002d0af6f1365e2e937bcf1a&#34;);&#xA;      const chart = new Chart(ctx, {&#xA;        &#xA;type: &#39;line&#39;,&#xA;data: {&#xA;  labels: [&#39;0.000&#39;,&#39;0.025&#39;,&#39;0.050&#39;,&#39;0.075&#39;,&#39;0.100&#39;,&#39;0.125&#39;,&#39;0.150&#39;,&#39;0.175&#39;,&#39;0.200&#39;,&#39;0.225&#39;,&#39;0.250&#39;,&#39;0.275&#39;,&#39;0.300&#39;,&#39;0.325&#39;,&#39;0.350&#39;,&#39;0.375&#39;,&#39;0.400&#39;,&#39;0.425&#39;,&#39;0.450&#39;,&#39;0.475&#39;,&#39;0.500&#39;,&#39;0.525&#39;,&#39;0.550&#39;,&#39;0.575&#39;,&#39;0.600&#39;,&#39;0.625&#39;,&#39;0.650&#39;,&#39;0.675&#39;,&#39;0.700&#39;,&#39;0.725&#39;,&#39;0.750&#39;,&#39;0.775&#39;,&#39;0.800&#39;,&#39;0.825&#39;,&#39;0.850&#39;,&#39;0.875&#39;,&#39;0.900&#39;,&#39;0.925&#39;,&#39;0.950&#39;,&#39;0.975&#39;,&#39;1.000&#39;],&#xA;  datasets: [&#xA;    { label: &#39;Index finger (mean of MCP, PIP, DIP)&#39;, data: [-3.3,-3.1,-2.9,-2.8,-2.6,-2.5,-2.3,-2.1,-2.0,-1.8,-1.7,-1.5,-1.3,-1.2,-1.0,-0.8,-0.7,-0.5,-0.3,-0.2,0.0,90.2,90.4,90.6,90.8,91.0,91.2,91.5,91.7,91.9,92.1,92.2,92.4,92.6,92.8,93.0,93.2,93.4,93.5,93.7,93.9], borderColor: &#39;#2a78d6&#39;, backgroundColor: &#39;#2a78d6&#39;, borderWidth: 2, pointRadius: 1.5, tension: 0 },&#xA;    { label: &#39;Thumb CMC&#39;, data: [-2.9,-2.8,-2.6,-2.5,-2.4,-2.2,-2.1,-1.9,-1.8,-1.6,-1.5,-1.4,-1.2,-1.1,-0.9,-0.8,-0.6,-0.5,-0.3,-0.1,0.0,90.1,90.2,90.4,90.5,90.6,90.7,90.8,91.0,91.1,91.2,91.3,91.4,91.5,91.6,91.7,91.8,92.0,92.1,92.2,92.3], borderColor: &#39;#1baf7a&#39;, backgroundColor: &#39;#1baf7a&#39;, borderWidth: 2, pointRadius: 1.5, tension: 0 },&#xA;    { label: &#39;Thumb IP&#39;, data: [-2.7,-2.6,-2.5,-2.3,-2.2,-2.0,-1.9,-1.8,-1.6,-1.5,-1.4,-1.2,-1.1,-0.9,-0.8,-0.7,-0.5,-0.4,-0.3,-0.1,0.0,41.2,44.3,45.1,45.5,45.6,45.7,45.8,45.8,45.9,45.9,45.9,45.9,45.9,45.9,46.0,46.0,46.0,46.0,46.0,46.0], borderColor: &#39;#eb6834&#39;, backgroundColor: &#39;#eb6834&#39;, borderWidth: 2, pointRadius: 1.5, tension: 0 }&#xA;  ]&#xA;},&#xA;options: {&#xA;  plugins: { title: { display: true, text: &#39;Simulated joint bend vs flexion — flat, then a wall at 0.5&#39; } },&#xA;  scales: { x: { title: { display: true, text: &#39;flexion command (0.5 = 0 N)&#39; } }, y: { min: -10, max: 100, title: { display: true, text: &#39;joint bend (°)&#39; } } }&#xA;}&#xA;&#xA;      });&#xA;    });&#xA;  &lt;/script&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Flexion&lt;/th&gt;&#xA;          &lt;th&gt;Force&lt;/th&gt;&#xA;          &lt;th&gt;Index MCP / PIP / DIP&lt;/th&gt;&#xA;          &lt;th&gt;Thumb CMC / MP / IP&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;0.000&lt;/td&gt;&#xA;          &lt;td&gt;+50.0 N&lt;/td&gt;&#xA;          &lt;td&gt;−3.3° / −3.2° / −3.3°&lt;/td&gt;&#xA;          &lt;td&gt;−2.9° / −2.7° / −2.7°&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;0.250&lt;/td&gt;&#xA;          &lt;td&gt;+25.0 N&lt;/td&gt;&#xA;          &lt;td&gt;−1.7° / −1.6° / −1.7°&lt;/td&gt;&#xA;          &lt;td&gt;−1.5° / −1.3° / −1.4°&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;0.500&lt;/td&gt;&#xA;          &lt;td&gt;0.0 N&lt;/td&gt;&#xA;          &lt;td&gt;0.0° / 0.0° / 0.0°&lt;/td&gt;&#xA;          &lt;td&gt;0.0° / 0.0° / 0.0°&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;0.625&lt;/td&gt;&#xA;          &lt;td&gt;−12.5 N&lt;/td&gt;&#xA;          &lt;td&gt;91.1° / 91.0° / 91.0°&lt;/td&gt;&#xA;          &lt;td&gt;90.6° / 53.9° / 45.6°&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;1.000&lt;/td&gt;&#xA;          &lt;td&gt;−50.0 N&lt;/td&gt;&#xA;          &lt;td&gt;94.0° / 93.8° / 93.9°&lt;/td&gt;&#xA;          &lt;td&gt;92.3° / 54.2° / 46.0°&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;&lt;em&gt;Joint limits are 90°; values just above it are MuJoCo&amp;rsquo;s soft limit being pressed.&lt;/em&gt;&lt;/p&gt;</description>
      <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://mulhamfetna.com/projects/ros2-tendon-driven-hand-mujoco-digital-twin-vision-teleoperation/tendon-physics-switch/cover.png" />
    </item>
    
  </channel>
</rss>
