<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Onshape on Mulham Fetna</title>
    <link>https://mulhamfetna.com/tags/onshape/</link>
    <description>Recent content in Onshape 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/onshape/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>From an Onshape assembly to a MuJoCo model with onshape-to-robot</title>
      <link>https://mulhamfetna.com/projects/ros2-tendon-driven-hand-mujoco-digital-twin-vision-teleoperation/onshape-to-mujoco/</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/onshape-to-mujoco/</guid>
      <description>&lt;div class=&#34;lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl&#34;&gt;&#xA;  The simulated hand was never modelled by hand. It is an Onshape assembly — five SG90 servos, fifteen&#xA;knuckle mates, a palm full of tendon channels — pulled through the Onshape API and written out as&#xA;MuJoCo XML. Here is the design, and every setting that steers the export.&#xA;&lt;/div&gt;&#xA;&#xA;&lt;a&#xA;  class=&#34;!rounded-md bg-primary-600 px-4 py-2 !text-neutral !no-underline hover:!bg-primary-500 dark:bg-primary-800 dark:hover:!bg-primary-700&#34;&#xA;  href=&#34;https://cad.onshape.com/documents/a2dbb5f16624f10f1aa22f02/w/693ffc0be3e83ae21f78f6ed/e/4d69727744037003575f4068?renderMode=0&#34;&#xA;  target=&#34;_blank&#34;&#xA;  &#xA;  role=&#34;button&#34;&gt;&#xA;  Open the Onshape assembly&#xA;&lt;/a&gt;&#xA;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;The design&#xA;    &lt;div id=&#34;the-design&#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-design&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;figure&gt;&#xA;  &lt;video&#xA;    class=&#34;w-full rounded-md aspect-video object-contain&#34;preload=&#34;metadata&#34; muted controls playsinline&gt;&#xA;    &lt;source src=&#34;https://mulhamfetna.com/projects/ros2-tendon-driven-hand-mujoco-digital-twin-vision-teleoperation/onshape-to-mujoco/onshape_cad_tour_current_design.webm&#34;&gt;&#xA;    &lt;p&gt;Your browser cannot play this video. &lt;a href=&#34;https://mulhamfetna.com/projects/ros2-tendon-driven-hand-mujoco-digital-twin-vision-teleoperation/onshape-to-mujoco/onshape_cad_tour_current_design.webm&#34;&gt;Download video&lt;/a&gt;.&lt;/p&gt;&#xA;  &lt;/video&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&#xA;&#xA;  &#xA;  &#xA;  &#xA;  &#xA;  &#xA;  &lt;div class=&#34;width-patch&#34;&gt;&lt;/div&gt;&#xA;&lt;div id=&#34;gallery-7acbdbda855d714d7a7934961dc8bbc7&#34; class=&#34;gallery&#34;&gt;&#xA;  &#xA;  &lt;img src=&#34;https://mulhamfetna.com/projects/ros2-tendon-driven-hand-mujoco-digital-twin-vision-teleoperation/onshape-to-mujoco/current_assembly_iso.png&#34; class=&#34;grid-w50&#34; alt=&#34;Current assembly, isometric, with mate connectors visible&#34; /&gt;&#xA;  &lt;img src=&#34;https://mulhamfetna.com/projects/ros2-tendon-driven-hand-mujoco-digital-twin-vision-teleoperation/onshape-to-mujoco/current_front_tendon_channels.png&#34; class=&#34;grid-w50&#34; alt=&#34;Front view: one tendon channel per finger down the palm&#34; /&gt;&#xA;  &lt;img src=&#34;https://mulhamfetna.com/projects/ros2-tendon-driven-hand-mujoco-digital-twin-vision-teleoperation/onshape-to-mujoco/current_servo_block.png&#34; class=&#34;grid-w50&#34; alt=&#34;Five SG90 servos staggered in the base block&#34; /&gt;&#xA;  &lt;img src=&#34;https://mulhamfetna.com/projects/ros2-tendon-driven-hand-mujoco-digital-twin-vision-teleoperation/onshape-to-mujoco/current_servo_layout.png&#34; class=&#34;grid-w50&#34; alt=&#34;Servo layout seen from below the palm&#34; /&gt;&#xA;  &lt;img src=&#34;https://mulhamfetna.com/projects/ros2-tendon-driven-hand-mujoco-digital-twin-vision-teleoperation/onshape-to-mujoco/current_fingers_flexing.png&#34; class=&#34;grid-w50&#34; alt=&#34;Finger and thumb mates driven to flexion in Onshape&#34; /&gt;&#xA;  &lt;img src=&#34;https://mulhamfetna.com/projects/ros2-tendon-driven-hand-mujoco-digital-twin-vision-teleoperation/onshape-to-mujoco/current_side_profile_flexed.png&#34; class=&#34;grid-w50&#34; alt=&#34;Side profile of the flexed finger and thumb chains&#34; /&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Palm and fingers:&lt;/strong&gt; four three-phalanx fingers and a three-segment thumb, every knuckle a&#xA;&lt;strong&gt;revolute mate&lt;/strong&gt; with limits. The RGB triads in the views are mate connectors.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tendon channels:&lt;/strong&gt; one per finger, running down the palm into the base.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Servo block:&lt;/strong&gt; five SG90-class servos, staggered so each horn sits under a tendon exit.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;The design has a history&#xA;    &lt;div id=&#34;the-design-has-a-history&#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-design-has-a-history&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ol class=&#34;border-s-2 border-primary-500 dark:border-primary-300 list-none&#34;&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;li&gt;&#xA;  &lt;div class=&#34;flex&#34;&gt;&#xA;    &lt;div&#xA;      class=&#34;bg-primary-500 dark:bg-primary-300 text-neutral-50 dark:text-neutral-700 min-w-[30px] h-8 text-2xl flex items-center justify-center rounded-full ltr:-ml-12 rtl:-mr-[79px] mt-5&#34;&gt;&#xA;      &lt;span class=&#34;relative block icon&#34;&gt;&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;path fill=&#34;currentColor&#34; d=&#34;M421.7 220.3L188.5 453.4L154.6 419.5L158.1 416H112C103.2 416 96 408.8 96 400V353.9L92.51 357.4C87.78 362.2 84.31 368 82.42 374.4L59.44 452.6L137.6 429.6C143.1 427.7 149.8 424.2 154.6 419.5L188.5 453.4C178.1 463.8 165.2 471.5 151.1 475.6L30.77 511C22.35 513.5 13.24 511.2 7.03 504.1C.8198 498.8-1.502 489.7 .976 481.2L36.37 360.9C40.53 346.8 48.16 333.9 58.57 323.5L291.7 90.34L421.7 220.3zM492.7 58.75C517.7 83.74 517.7 124.3 492.7 149.3L444.3 197.7L314.3 67.72L362.7 19.32C387.7-5.678 428.3-5.678 453.3 19.32L492.7 58.75z&#34;/&gt;&lt;/svg&gt;&#xA;&lt;/span&gt;&#xA;    &lt;/div&gt;&#xA;    &lt;div class=&#34;block p-6 rounded-lg shadow-2xl flex-1 ms-6 mb-10 break-words&#34;&gt;&#xA;      &lt;div class=&#34;flex justify-between&#34;&gt;&#xA;        &#xA;          &lt;h2 class=&#34;mt-0&#34;&gt;Start&lt;/h2&gt;&#xA;        &#xA;        &#xA;      &lt;/div&gt;&#xA;      &#xA;        &lt;h4 class=&#34;mt-0&#34;&gt;&#xA;          2026-09-02&#xA;        &lt;/h4&gt;&#xA;      &#xA;      &lt;div class=&#34;mb-6&#34;&gt;&#xA;        The first version in the history.&#xA;      &lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/li&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;li&gt;&#xA;  &lt;div class=&#34;flex&#34;&gt;&#xA;    &lt;div&#xA;      class=&#34;bg-primary-500 dark:bg-primary-300 text-neutral-50 dark:text-neutral-700 min-w-[30px] h-8 text-2xl flex items-center justify-center rounded-full ltr:-ml-12 rtl:-mr-[79px] mt-5&#34;&gt;&#xA;      &lt;span class=&#34;relative block icon&#34;&gt;&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 576 512&#34;&gt;&lt;path fill=&#34;currentColor&#34; d=&#34;M287.9 0C297.1 0 305.5 5.25 309.5 13.52L378.1 154.8L531.4 177.5C540.4 178.8 547.8 185.1 550.7 193.7C553.5 202.4 551.2 211.9 544.8 218.2L433.6 328.4L459.9 483.9C461.4 492.9 457.7 502.1 450.2 507.4C442.8 512.7 432.1 513.4 424.9 509.1L287.9 435.9L150.1 509.1C142.9 513.4 133.1 512.7 125.6 507.4C118.2 502.1 114.5 492.9 115.1 483.9L142.2 328.4L31.11 218.2C24.65 211.9 22.36 202.4 25.2 193.7C28.03 185.1 35.5 178.8 44.49 177.5L197.7 154.8L266.3 13.52C270.4 5.249 278.7 0 287.9 0L287.9 0zM287.9 78.95L235.4 187.2C231.9 194.3 225.1 199.3 217.3 200.5L98.98 217.9L184.9 303C190.4 308.5 192.9 316.4 191.6 324.1L171.4 443.7L276.6 387.5C283.7 383.7 292.2 383.7 299.2 387.5L404.4 443.7L384.2 324.1C382.9 316.4 385.5 308.5 391 303L476.9 217.9L358.6 200.5C350.7 199.3 343.9 194.3 340.5 187.2L287.9 78.95z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;&#xA;    &lt;/div&gt;&#xA;    &lt;div class=&#34;block p-6 rounded-lg shadow-2xl flex-1 ms-6 mb-10 break-words&#34;&gt;&#xA;      &lt;div class=&#34;flex justify-between&#34;&gt;&#xA;        &#xA;          &lt;h2 class=&#34;mt-0&#34;&gt;v1.0.0 — MediaPipe&lt;/h2&gt;&#xA;        &#xA;        &#xA;      &lt;/div&gt;&#xA;      &#xA;        &lt;h4 class=&#34;mt-0&#34;&gt;&#xA;          2026-09-06&#xA;        &lt;/h4&gt;&#xA;      &#xA;      &lt;div class=&#34;mb-6&#34;&gt;&#xA;        The joint-angle-driven hand behind the &lt;a href=&#34;https://mulhamfetna.com/projects/ros2-mediapipe-robotic-hand-digital-twin-vision-teleoperation/&#34; &gt;RViz predecessor project&lt;/a&gt;.&#xA;      &lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/li&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;li&gt;&#xA;  &lt;div class=&#34;flex&#34;&gt;&#xA;    &lt;div&#xA;      class=&#34;bg-primary-500 dark:bg-primary-300 text-neutral-50 dark:text-neutral-700 min-w-[30px] h-8 text-2xl flex items-center justify-center rounded-full ltr:-ml-12 rtl:-mr-[79px] mt-5&#34;&gt;&#xA;      &lt;span class=&#34;relative block icon&#34;&gt;&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; height=&#34;1em&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;path fill=&#34;currentColor&#34; d=&#34;M441 58.9L453.1 71c9.4 9.4 9.4 24.6 0 33.9L424 134.1 377.9 88 407 58.9c9.4-9.4 24.6-9.4 33.9 0zM209.8 256.2L344 121.9 390.1 168 255.8 302.2c-2.9 2.9-6.5 5-10.4 6.1l-58.5 16.7 16.7-58.5c1.1-3.9 3.2-7.5 6.1-10.4zM373.1 25L175.8 222.2c-8.7 8.7-15 19.4-18.3 31.1l-28.6 100c-2.4 8.4-.1 17.4 6.1 23.6s15.2 8.5 23.6 6.1l100-28.6c11.8-3.4 22.5-9.7 31.1-18.3L487 138.9c28.1-28.1 28.1-73.7 0-101.8L474.9 25C446.8-3.1 401.2-3.1 373.1 25zM88 64C39.4 64 0 103.4 0 152V424c0 48.6 39.4 88 88 88H360c48.6 0 88-39.4 88-88V312c0-13.3-10.7-24-24-24s-24 10.7-24 24V424c0 22.1-17.9 40-40 40H88c-22.1 0-40-17.9-40-40V152c0-22.1 17.9-40 40-40H200c13.3 0 24-10.7 24-24s-10.7-24-24-24H88z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;&#xA;    &lt;/div&gt;&#xA;    &lt;div class=&#34;block p-6 rounded-lg shadow-2xl flex-1 ms-6 mb-10 break-words&#34;&gt;&#xA;      &lt;div class=&#34;flex justify-between&#34;&gt;&#xA;        &#xA;          &lt;h2 class=&#34;mt-0&#34;&gt;v1.0.1 → Main&lt;/h2&gt;&#xA;        &#xA;        &#xA;      &lt;/div&gt;&#xA;      &#xA;        &lt;h4 class=&#34;mt-0&#34;&gt;&#xA;          2026-09-08&#xA;        &lt;/h4&gt;&#xA;      &#xA;      &lt;div class=&#34;mb-6&#34;&gt;&#xA;        Point release and the main line the later work branches from.&#xA;      &lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/li&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;li&gt;&#xA;  &lt;div class=&#34;flex&#34;&gt;&#xA;    &lt;div&#xA;      class=&#34;bg-primary-500 dark:bg-primary-300 text-neutral-50 dark:text-neutral-700 min-w-[30px] h-8 text-2xl flex items-center justify-center rounded-full ltr:-ml-12 rtl:-mr-[79px] mt-5&#34;&gt;&#xA;      &lt;span class=&#34;relative block icon&#34;&gt;&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;path fill=&#34;currentColor&#34; d=&#34;M80 104c13.3 0 24-10.7 24-24s-10.7-24-24-24S56 66.7 56 80s10.7 24 24 24zm80-24c0 32.8-19.7 61-48 73.3V192c0 17.7 14.3 32 32 32H304c17.7 0 32-14.3 32-32V153.3C307.7 141 288 112.8 288 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V192c0 53-43 96-96 96H256v70.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V288H144c-53 0-96-43-96-96V153.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80zm208 24c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zM248 432c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;&#xA;    &lt;/div&gt;&#xA;    &lt;div class=&#34;block p-6 rounded-lg shadow-2xl flex-1 ms-6 mb-10 break-words&#34;&gt;&#xA;      &lt;div class=&#34;flex justify-between&#34;&gt;&#xA;        &#xA;          &lt;h2 class=&#34;mt-0&#34;&gt;V3 → Mujoco branch&lt;/h2&gt;&#xA;        &#xA;        &#xA;      &lt;/div&gt;&#xA;      &#xA;        &lt;h4 class=&#34;mt-0&#34;&gt;&#xA;          2026-09-16&#xA;        &lt;/h4&gt;&#xA;      &#xA;      &lt;div class=&#34;mb-6&#34;&gt;&#xA;        The current design used by this twin — the version with the servo base block shown above.&#xA;      &lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Onshape version history&lt;/th&gt;&#xA;          &lt;th&gt;Mate features&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;figure&gt;&lt;img&#xA;    class=&#34;my-0 rounded-md&#34;&#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    fetchpriority=&#34;auto&#34;&#xA;    alt=&#34;Onshape version graph: Start, v1.0.0 MediaPipe, v1.0.1, Main, V3, Mujoco branch&#34;&#xA;    width=&#34;413&#34;&#xA;    height=&#34;475&#34;&#xA;    src=&#34;https://mulhamfetna.com/projects/ros2-tendon-driven-hand-mujoco-digital-twin-vision-teleoperation/onshape-to-mujoco/current_version_history.png&#34;&#xA;    srcset=&#34;https://mulhamfetna.com/projects/ros2-tendon-driven-hand-mujoco-digital-twin-vision-teleoperation/onshape-to-mujoco/current_version_history.png 800w, https://mulhamfetna.com/projects/ros2-tendon-driven-hand-mujoco-digital-twin-vision-teleoperation/onshape-to-mujoco/current_version_history.png 1280w&#34;&#xA;    sizes=&#34;(min-width: 768px) 50vw, 65vw&#34;&#xA;    data-zoom-src=&#34;https://mulhamfetna.com/projects/ros2-tendon-driven-hand-mujoco-digital-twin-vision-teleoperation/onshape-to-mujoco/current_version_history.png&#34;&gt;&lt;/figure&gt;&#xA;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;figure&gt;&lt;img&#xA;    class=&#34;my-0 rounded-md&#34;&#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    fetchpriority=&#34;auto&#34;&#xA;    alt=&#34;Mate features list: dof_pinky_dip through dof_thumb_ip, then Fastened mates&#34;&#xA;    width=&#34;255&#34;&#xA;    height=&#34;750&#34;&#xA;    src=&#34;https://mulhamfetna.com/projects/ros2-tendon-driven-hand-mujoco-digital-twin-vision-teleoperation/onshape-to-mujoco/current_mate_list.png&#34;&#xA;    srcset=&#34;https://mulhamfetna.com/projects/ros2-tendon-driven-hand-mujoco-digital-twin-vision-teleoperation/onshape-to-mujoco/current_mate_list.png 800w, https://mulhamfetna.com/projects/ros2-tendon-driven-hand-mujoco-digital-twin-vision-teleoperation/onshape-to-mujoco/current_mate_list.png 1280w&#34;&#xA;    sizes=&#34;(min-width: 768px) 50vw, 65vw&#34;&#xA;    data-zoom-src=&#34;https://mulhamfetna.com/projects/ros2-tendon-driven-hand-mujoco-digital-twin-vision-teleoperation/onshape-to-mujoco/current_mate_list.png&#34;&gt;&lt;/figure&gt;&#xA;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;&lt;em&gt;43 part instances, 112 mate features: the 15 &lt;code&gt;dof_*&lt;/code&gt; knuckle mates, the servo mates, and many &lt;code&gt;Fastened&lt;/code&gt; mates.&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/onshape-to-mujoco/cover.png" />
    </item>
    
    <item>
      <title>From an Onshape assembly to a robot ROS 2 can reason about</title>
      <link>https://mulhamfetna.com/projects/ros2-mediapipe-robotic-hand-digital-twin-vision-teleoperation/onshape-urdf/</link>
      <pubDate>Tue, 08 Sep 2026 00:00:00 +0000</pubDate>
      <author>contact@mulhamfetna.com (Mulham Fetna)</author>
      <guid>https://mulhamfetna.com/projects/ros2-mediapipe-robotic-hand-digital-twin-vision-teleoperation/onshape-urdf/</guid>
      <description>&lt;div class=&#34;lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl&#34;&gt;&#xA;  Bridging a modern parametric CAD platform and a fifteen-year-old XML standard is where most&#xA;roboticists lose days. The exporter translates exactly what it sees — so every shortcut taken in CAD&#xA;becomes a bug in ROS.&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;https://cad.onshape.com/documents/a2dbb5f16624f10f1aa22f02/w/3eff80c19eddad52bfa92f87/e/4d69727744037003575f4068&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;→ Open the assembly on Onshape&lt;/a&gt;&lt;/strong&gt; —&#xA;it is public, so everything below is checkable against the source.&lt;/p&gt;&#xA;&lt;figure&gt;&lt;img&#xA;    class=&#34;my-0 rounded-md&#34;&#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    fetchpriority=&#34;auto&#34;&#xA;    alt=&#34;The robotic hand assembly in Onshape, fingers extended, showing blue finger linkages, grey phalanges and the orange thumb link&#34;&#xA;    width=&#34;1000&#34;&#xA;    height=&#34;969&#34;&#xA;    src=&#34;https://mulhamfetna.com/projects/ros2-mediapipe-robotic-hand-digital-twin-vision-teleoperation/onshape-urdf/cad-hand-extended_hu_88b44dd20e6a05aa.png&#34;&#xA;    srcset=&#34;https://mulhamfetna.com/projects/ros2-mediapipe-robotic-hand-digital-twin-vision-teleoperation/onshape-urdf/cad-hand-extended_hu_88b44dd20e6a05aa.png 800w, https://mulhamfetna.com/projects/ros2-mediapipe-robotic-hand-digital-twin-vision-teleoperation/onshape-urdf/cad-hand-extended.png 1280w&#34;&#xA;    sizes=&#34;(min-width: 768px) 50vw, 65vw&#34;&#xA;    data-zoom-src=&#34;https://mulhamfetna.com/projects/ros2-mediapipe-robotic-hand-digital-twin-vision-teleoperation/onshape-urdf/cad-hand-extended.png&#34;&gt;&lt;figcaption&gt;The assembly: four fingers on blue linkages, the thumb on an orange one, all mounted to a single palm block.&lt;/figcaption&gt;&lt;/figure&gt;&#xA;&lt;p&gt;&lt;code&gt;onshape-to-robot&lt;/code&gt; is a compiler. Assembly in, robot description out. It reads mate names, mate&#xA;limits and material densities directly from the CAD document and writes them into URDF as joint&#xA;names, joint limits and inertia tensors.&lt;/p&gt;&#xA;&lt;p&gt;That is a genuinely good deal — done properly, the physical properties of your robot are &lt;em&gt;generated&lt;/em&gt;&#xA;rather than hand-typed, and they stay correct when the mechanism changes. Done improperly, you spend&#xA;your evenings editing XML by hand and discovering that your ring finger has no knuckle.&lt;/p&gt;&#xA;&lt;pre class=&#34;not-prose mermaid&#34;&gt;&#xA;flowchart LR&#xA;    A[&#34;Onshape assembly&lt;br&gt;mates · limits · materials&#34;] --&gt; B[&#34;onshape-to-robot&lt;br&gt;API pull&#34;]&#xA;    B --&gt; C[&#34;robot.urdf&lt;br&gt;links · joints · inertials&#34;]&#xA;    B --&gt; D[&#34;assets/*.stl&lt;br&gt;visual + collision meshes&#34;]&#xA;    C --&gt; E[&#34;robot_state_publisher&#34;]&#xA;    C --&gt; F[&#34;JOINT_MAPPING&lt;br&gt;limits transcribed by hand&#34;]&#xA;    D --&gt; G[&#34;RViz / Gazebo&#34;]&#xA;&lt;/pre&gt;&#xA;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Five rules that move work back into CAD&#xA;    &lt;div id=&#34;five-rules-that-move-work-back-into-cad&#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;#five-rules-that-move-work-back-into-cad&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Each of these exists because its absence cost real time on this project.&lt;/p&gt;</description>
      <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://mulhamfetna.com/projects/ros2-mediapipe-robotic-hand-digital-twin-vision-teleoperation/onshape-urdf/featured.png" />
    </item>
    
    <item>
      <title>Code-to-CAD: Generating a 15×15 Microneedle Array Four Ways</title>
      <link>https://mulhamfetna.com/tutorials-guides/code-to-cad-microneedle-array/</link>
      <pubDate>Mon, 07 Sep 2026 00:00:00 +0000</pubDate>
      <author>contact@mulhamfetna.com (Mulham Fetna)</author>
      <guid>https://mulhamfetna.com/tutorials-guides/code-to-cad-microneedle-array/</guid>
      <description>The same 15×15 microneedle array, generated four ways in code. The interesting part isn&amp;rsquo;t the loops — it&amp;rsquo;s that three of the four scripts refuse to merge the 225 cones into the baseplate at all, and hand that job to the slicer instead.</description>
      
    </item>
    
  </channel>
</rss>
