<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="atom.xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://cmaybe.github.io/blog</id>
    <title>Jaegyeom Kim Blog</title>
    <updated>2026-09-09T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://cmaybe.github.io/blog"/>
    <subtitle>Jaegyeom Kim Blog</subtitle>
    <icon>https://cmaybe.github.io/img/favicon.ico</icon>
    <entry>
        <title type="html"><![CDATA[Why WebAssembly Instead of ROS or ROS 2?]]></title>
        <id>https://cmaybe.github.io/blog/why-wasm-not-ros</id>
        <link href="https://cmaybe.github.io/blog/why-wasm-not-ros"/>
        <updated>2026-09-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Why this blog uses WebAssembly for an interactive browser demo instead of ROS or ROS 2.]]></summary>
        <content type="html"><![CDATA[<p>ROS and ROS 2 are excellent choices for building complete robot systems. They provide communication, tools, drivers, visualization, and a large ecosystem.</p>
<p>This blog post has a narrower goal: make the mathematics of kinematics, planning, and dynamics visible and runnable in a browser.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="a-different-problem">A different problem<a href="https://cmaybe.github.io/blog/why-wasm-not-ros#a-different-problem" class="hash-link" aria-label="Direct link to A different problem" title="Direct link to A different problem" translate="no">​</a></h2>
<p>This blog post is not trying to operate a robot or connect multiple hardware nodes. It demonstrates forward kinematics, inverse kinematics, motion planning, and dynamics.</p>
<p>For that purpose, the main requirement is a small, self-contained program that anyone can open and run without preparing a robotics development environment.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-webassembly-fits">Why WebAssembly fits<a href="https://cmaybe.github.io/blog/why-wasm-not-ros#why-webassembly-fits" class="hash-link" aria-label="Direct link to Why WebAssembly fits" title="Direct link to Why WebAssembly fits" translate="no">​</a></h2>
<ul>
<li class=""><strong>No installation:</strong> visitors do not need ROS, ROS 2, a workspace, or system packages.</li>
<li class=""><strong>Runs in the browser:</strong> the same page works on Linux, macOS, Windows, and mobile devices.</li>
<li class=""><strong>Interactive visualization:</strong> sliders and 3D controls can call the compiled algorithms immediately.</li>
<li class=""><strong>Native implementation:</strong> the computational core remains C++ and is compiled to WebAssembly rather than rewritten in JavaScript.</li>
<li class=""><strong>Easy sharing:</strong> a static site can host the complete example without a backend or robot middleware.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-ros-or-ros-2-would-add">What ROS or ROS 2 would add<a href="https://cmaybe.github.io/blog/why-wasm-not-ros#what-ros-or-ros-2-would-add" class="hash-link" aria-label="Direct link to What ROS or ROS 2 would add" title="Direct link to What ROS or ROS 2 would add" translate="no">​</a></h2>
<p>ROS or ROS 2 would be the better choice when the example needs hardware drivers, sensor streams, distributed nodes, robot description files, lifecycle management, or integration with a larger autonomy stack.</p>
<p>Those are system-integration requirements, not requirements for explaining the underlying mathematics. ROS and ROS 2 organize a running robot system, while WebAssembly packages a computation so that it can run inside a web page.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-practical-boundary">The practical boundary<a href="https://cmaybe.github.io/blog/why-wasm-not-ros#the-practical-boundary" class="hash-link" aria-label="Direct link to The practical boundary" title="Direct link to The practical boundary" translate="no">​</a></h2>
<p>The browser demo keeps the algorithmic core small and observable. A real robot application can still use the same C++ concepts inside a ROS or ROS 2 node, where middleware connects the planner and controller to sensors, actuators, and other processes.</p>
<p>For this project, WebAssembly is a presentation and distribution choice. It lowers the barrier to experimentation while keeping the robotics implementation close to the native C++ code.</p>]]></content>
        <author>
            <name>Jaegyeom Kim</name>
            <uri>https://github.com/CMaybe</uri>
        </author>
        <category label="Robotics" term="Robotics"/>
        <category label="WebAssembly" term="WebAssembly"/>
        <category label="Modern Robotics" term="Modern Robotics"/>
    </entry>
</feed>