<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Mechanical-Design on Mulham Fetna</title>
    <link>https://mulhamfetna.com/tags/mechanical-design/</link>
    <description>Recent content in Mechanical-Design 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>Tue, 08 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://mulhamfetna.com/tags/mechanical-design/index.xml" rel="self" type="application/rss+xml" />
    
    <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>
    
  </channel>
</rss>
