URDF Studio is a powerful, web-based visual environment designed for creating, editing, and exporting Unified Robot Description Format (URDF) models. It abstracts complex XML authoring into an intuitive graphical interface, allowing roboticists to focus on kinematic design, geometric detailing, and hardware specification.
The platform integrates Generative AI for rapid prototyping and automated model auditing, ensuring your designs are physically plausible and simulation-ready for environments like MuJoCo.
- Skeleton Mode: Build kinematic chains (Links & Joints) and define topological relationships.
- Detail Mode: Fine-tune visual and collision geometries using primitives or high-resolution mesh imports (STL/OBJ/DAE).
- Hardware Mode: Specify electromechanical parameters, motor selection, and transmission ratios.
- Multi-Robot Assembly: Merge multiple URDFs into a single model (e.g., attaching a robotic hand to an arm) with automatic joint re-parenting.
- Precision Collision Editor: Edit collision bodies independently from visual geometry for accurate physics simulation.
- High-Fidelity Rendering: PBR materials and photorealistic rendering via Three.js.
- Intuitive Controls: Industry-standard transformation gizmos for precise manipulation.
- Visual Analytics: Real-time visualization of joint axes, center of mass (CoM), and inertia tensors.
- Optimized Performance: Features specialized partial reloading for collision body updates, ensuring instant feedback during fine-tuning.
- Generative AI: Create robot structures using natural language prompts.
- AI Inspector: Automated 6-category quality assessment (Physical Plausibility, Kinematics, Naming, etc.) with detailed scoring and PDF reports.
- Import: Load existing projects via ZIP (URDF + meshes).
- Export: Production-ready packages including URDF, consolidated meshes, BOM (CSV), and MuJoCo XML.
Key project references:
- Architecture Boundaries: Layering, dependency direction, and module ownership.
- Robot Canvas Library: Notes for the reusable
react-robot-canvasworkspace. - Contributor Prompt Context: The single prompt source of truth for contributors and coding agents.
- Node.js (v18 or higher)
- npm or yarn
- Clone the Repository
git clone https://github.com/OpenLegged/URDF-Studio.git cd URDF-Studio - Install Dependencies
npm install
- Configure Environment (Optional for AI)
Create a
.env.localfile:VITE_OPENAI_API_KEY=your_api_key VITE_OPENAI_BASE_URL=https://api.openai.com/v1 VITE_OPENAI_MODEL=deepseek-v3
- Start Development Server
Visit
npm run dev
http://localhost:5173in your browser.
USD loading uses the bundled USD WASM runtime, which requires a cross-origin isolated page because it depends on SharedArrayBuffer.
- Use
npm run devfor local development, and open the app fromhttp://localhost:<port>orhttp://127.0.0.1:<port>. - Use
npm run previewwhen validating the production build locally. - If you open the app from a LAN IP address, a remote HTTP URL, or another non-secure origin, the browser will ignore
COOP/COEP,SharedArrayBufferwill stay unavailable, and USD imports will still fail. Use HTTPS for those setups. - Do not serve
dist/with a plain static server such aspython -m http.server, VS Code Live Server, or any other server that does not send:
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corpIf those headers are missing, USD imports will fail even though the rest of the app still loads.
- Kinematic Setup: Use the Skeleton Mode to add links and joints. Use the tree view to manage the robot hierarchy.
- Geometry & Physics: Switch to Detail Mode to assign STL/OBJ meshes or primitive shapes to your links. You can adjust mass and inertia properties in the Property Editor.
- Actuator Selection: In Hardware Mode, select joints to assign motors from the built-in library (Unitree, RobStride, etc.).
- Verification: Use the AI Inspector to run a comprehensive check on your model. Review the scores and suggestions before exporting.
- Exporting: Use the Export button to download a complete ZIP package compatible with ROS and MuJoCo.
We welcome contributions! To contribute:
- Fork the repository.
- Create a Feature Branch (
git checkout -b feature/amazing-feature). - Commit Your Changes (
git commit -m 'Add some amazing feature'). - Push to the Branch (
git push origin feature/amazing-feature). - Open a Pull Request.
Please ensure your code adheres to the project's TypeScript and React conventions.
This project is licensed under the Apache License 2.0. See the LICENSE file for details.
Supported by D-Robotics.