Stemkeens Rosblockly: A Web-Based Platform for ROS 2 URDF Design and Simulation

Hi everyone, I’m HOONLE, Project member of Stemkeens Rosblockly.

After six months of work I’m releasing this project as open-source—feedback and contributions are very welcome!

Challenge — Why did we build it?

Like many newcomers to ROS 2 including myself I found the workflow of writing a URDF, creating a package, and actually running it unnecessarily complicated. Online tutorials are a mixture of ROS 1 and ROS 2 material, so version conflicts pop up all the time, and even a tiny change forces you to rerun ros2 launch … just to see the updated model. I wondered: “Couldn’t we design URDFs with drag-and-drop blocks in a browser and preview them with a single click?”—that question sparked the project.

Tiny hobby robots introduce another pain-point. The popular Arduino UNO is barely supported by micro-ROS, while the ROS 1-only rosserial package doesn’t bridge cleanly to Humble. These hurdles convinced me to build a web-based, ROS 2–first platform that lets anyone design, simulate, and even drive an Arduino-powered servo

1. Overview

A browser-based platform where Blockly blocks generate URDF, Send to Simulation previews in Gazebo, and even an Arduino UNO servo demo works out-of-the-box.

2. Links

3. Feature Highlights

  • Link & Geometry blocks (Box, Cylinder)

  • Joint & Control chain: Joint → Axis/Limit → Transmission → ROS 2 Control suite

  • Gazebo plugins: Camera and LiDAR

  • Export/Preview: Export to ROS, Code viewer, Send to Simulation

4. Arduino servo demo & Why pyserial?

RViz GUI (Joint State Publisher)
   │  /servo_angle(Int32)
   ▼
servo_control_node.py ── USB(9600) ─▶ Arduino UNO ─▶ SG90 Servo

Reason Detail
Standard CDC-ACM serial works with Arduino’s default USB serial
Minimal deps just pip install pyserial, lighter than rosserial
Cross-platform same API on Linux, macOS, Windows
Adequate timing SG90 needs 20 ms PWM; 9600 baud is plenty

5. Feedback welcome!

Open issues or PRs on GitHub, and let’s build a better ROS 2 learning experience together! :rocket:

(My English is weak, so I used LLM to write this sentence.)