# Built a browser-based URDF playground for ROS developers

**URL:** <https://discourse.openrobotics.org/t/built-a-browser-based-urdf-playground-for-ros-developers/55049>\
**Category:** ROS General\
**Tags:** release, kinetic, ros2, gazebo, ros\
**Created:** [May 24, 2026, 12:34pm UTC](https://discourse.openrobotics.org/t/built-a-browser-based-urdf-playground-for-ros-developers/55049 "2026-05-24T12:34:25Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Robotic](https://avatars.discourse-cdn.com/v4/letter/r/c6cbf5/32.png) [@Robotic](https://discourse.openrobotics.org/u/Robotic)\
**Post date:** [May 24, 2026, 12:34pm UTC](https://discourse.openrobotics.org/t/built-a-browser-based-urdf-playground-for-ros-developers/55049/1 "2026-05-24T12:34:25Z")

</div>

Paste a URDF/Xacro file and instantly:  
• Preview the robot in 3D  
• Validate structure live  
• Share public robot links  
• Export to Isaac Sim / MuJoCo / SDF  
• Auto-fix common URDF problems

No ROS install required.

The goal is to make robot development feel more like modern web development tools.

Playground:

> **[RoboInfra Dashboard](https://roboinfra-dashboard.azurewebsites.net/playground)**

 ![Screenshot 2026-05-24 174548](https://us1.discourse-cdn.com/flex022/uploads/ros/original/3X/b/f/bf0d78c059407fb01687ca989166f91dc34f5c5f.png)

---

<div class="post-metadata">

**Author:** ![chfritz](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/chfritz/32/26180_2.png) [@chfritz](https://discourse.openrobotics.org/u/chfritz)\
**Post date:** [May 24, 2026, 4:07pm UTC](https://discourse.openrobotics.org/t/built-a-browser-based-urdf-playground-for-ros-developers/55049/2 "2026-05-24T16:07:50Z")

</div>

12 (anonymous) posts about the same tool in a little over a month? I think that’s enough, don’t you? You don’t seem to contribute anything else to this community either.

 ![image](https://us1.discourse-cdn.com/flex022/uploads/ros/original/3X/9/3/93249ea2c3be9b8f4d22b7ba67e4f004cb4da8a3.png)

---

<div class="post-metadata">

**Author:** ![Robotic](https://avatars.discourse-cdn.com/v4/letter/r/c6cbf5/32.png) [@Robotic](https://discourse.openrobotics.org/u/Robotic)\
**Post date:** [May 24, 2026, 4:32pm UTC](https://discourse.openrobotics.org/t/built-a-browser-based-urdf-playground-for-ros-developers/55049/3 "2026-05-24T16:32:05Z")

</div>

Fair feedback. I got excited sharing progress because I’m building this independently and trying to get it in front of ROS developers.

I’ll slow down on promotion posts and focus more on contributing to discussions, helping others, and sharing technical insights instead of repeated announcements.

Appreciate the honesty.

---

<div class="post-metadata">

**Author:** ![peci1](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/peci1/32/10145_2.png) [@peci1](https://discourse.openrobotics.org/u/peci1)\
**Post date:** [May 25, 2026, 8:55am UTC](https://discourse.openrobotics.org/t/built-a-browser-based-urdf-playground-for-ros-developers/55049/4 "2026-05-25T08:55:32Z")

</div>

I agree with Christian this looks like wall-posting. I think the usual way is to share updates in a single topic where you announced your tool (so that people who were interested in it the first time will get notified), and mention only big advancements as new topics.

But otherwise, it’s interesting to see where you’re moving the tool!

---

<div class="post-metadata">

**Author:** ![manankharwar](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/manankharwar/32/32884_2.png) [@manankharwar](https://discourse.openrobotics.org/u/manankharwar)\
**Post date:** [May 26, 2026, 3:31am UTC](https://discourse.openrobotics.org/t/built-a-browser-based-urdf-playground-for-ros-developers/55049/5 "2026-05-26T03:31:32Z")

</div>

does this support Python-based xacro features like `xacro.load_yaml()` yet, or would I get stuck on robots that rely on those?

For example, Andino uses:

```yaml
<xacro:property name="caster_wheel_props" value="${xacro.load_yaml(caster_wheel_yaml)}"/>

```

Since that depends on Python + filesystem access during xacro processing, I’m wondering whether the browser tool can handle those cases or if it currently only supports basic xacro parsing.

---

<div class="post-metadata">

**Author:** ![Robotic](https://avatars.discourse-cdn.com/v4/letter/r/c6cbf5/32.png) [@Robotic](https://discourse.openrobotics.org/u/Robotic)\
**Post date:** [May 26, 2026, 3:21pm UTC](https://discourse.openrobotics.org/t/built-a-browser-based-urdf-playground-for-ros-developers/55049/6 "2026-05-26T15:21:21Z")

</div>

Great question and an honest answer: no, not yet.

The playground currently accepts a single pasted xacro string and runs the standard `xacro` Python package on it server-side. So it handles:

- `<xacro:property>`, `<xacro:macro>`, `<xacro:if>` / `<xacro:unless>`
- `${...}` math/string expressions
- `<xacro:arg>` defaults

What it can’t handle yet, and Andino hits two of them:

- `xacro.load_yaml(...)` needs the YAML file on disk next to the xacro
- `$(find <pkg>)` needs a ROS package on the AMENT/ROS\_PACKAGE\_PATH
- `<xacro:include filename="...">` to a sibling file no workspace context

So for Andino specifically, the `caster_wheel_props` line would fail because the YAML never made it into the sandbox.

Multi-file workspace upload (drag a folder, or paste a GitHub repo URL, and we resolve `$(find …)` + `load_yaml` against it) is the next thing on the playground roadmap it’s the single biggest gap right now for real robots like Andino, UR, and PAL. If you’d find that useful, I can ping you when it ships; happy to use Andino as the test case so I know it actually works end-to-end and not just on toy URDFs.

In the meantime, if you `xacro andino.urdf.xacro > andino.urdf` locally and paste the expanded URDF, the 3D preview, validator, auto-fix, USD export etc. all work on it.

---

<div class="post-metadata">

**Author:** ![Robotic](https://avatars.discourse-cdn.com/v4/letter/r/c6cbf5/32.png) [@Robotic](https://discourse.openrobotics.org/u/Robotic)\
**Post date:** [May 26, 2026, 3:27pm UTC](https://discourse.openrobotics.org/t/built-a-browser-based-urdf-playground-for-ros-developers/55049/7 "2026-05-26T15:27:05Z")

</div>

@peci1 That makes sense, thanks for clarifying the community expectations.

I’ll keep future updates consolidated into the main thread unless there’s a major new feature or release. I’m still learning how discourse/open-source communities usually handle product updates.

Appreciate the constructive feedback and glad you find the project interesting.
