The Linter & Bridge for Robotics
LinkForge is The Linter & Bridge for Robotics, integrating directly into Blender.
It allows you to model your robot as naturally as sculpting a 3D scene, while acting as a strict safety net to guarantee the output is rigorous, simulation-ready code.
- Forge Structure: Define links, joints, masses, and inertias visually.
- Lint & Validate: Catch structural and physics errors before simulation export.
- Perceive & Control: Attach sensors and configure
ros2_controlinterfaces. - Export Production Code: Generate hardened URDF/XACRO files.
| Feature | Legacy Exporters | LinkForge |
|---|---|---|
| Architecture | Monolithic / Tied to one CAD tool | Hexagonal / Multi-Host & Multi-Target |
| Validation | Post-Export (Fail in Sim) | Automated Linting (Fail in Editor) |
| Physics | "Close Enough" Mesh Export | Scientific Inertia & Mass Sanity |
| Control | Manual ros2_control XML |
Centralized Dashboard with auto-generation |
| Fidelity | One-way export | Round-Trip Precision (Import → Edit → Export) |
| Sim-to-Real | Post-Simulation Testing | Early-Phase Validation & Noise Injection |
Tip
For a deep dive into our long-term technical strategy and the "Digital Twin" philosophy, see VISION.md.
| Feature | Support | Details |
|---|---|---|
| Links | ✅ Full | Visual/Collision Geometry, Materials, Automatic Physics |
| Joints | ✅ Full | All 6 types (Fixed, Revolute, etc.) + Mimic Joints |
| Sensors | ✅ Full | Camera, LiDAR, IMU, GPS, Contact, Force/Torque |
| Control | ✅ Full | ros2_control Dashboard & Gazebo Plugin Integration |
| Validation | ✅ Pro | Linter for Robotics catches structural errors before export |
| Fidelity | ✅ Pro | Round-Trip Precision for lossless Import/Export |
| Formats | ✅ Full | URDF 1.0, XACRO (Macros, Properties, Multi-file), SRDF (Core API) |
- Bidirectional Workflow: Import existing URDF or XACRO files for editing or build complex robot models from scratch using Blender native tools.
- Production-Ready Export: Generates strictly compliant URDF and XACRO files optimized for ROS, ROS 2, and Gazebo. Includes ROS-Agnostic Asset Resolution for cross-platform editing and Core API support for SRDF (Semantic Robot Description) generation.
- Linter for Robotics: Built-in integrity checker inspects robot topology, physics data, and joint limits. It catches simulation-breaking errors (negative inertias, detached links, circular chains) before you export.
- ROS2 Control Support: Automatically generates hardware interface configurations for
ros2_controlvia a centralized dashboard, compatible with Gazebo and physical hardware. - Complete Sensor Suite: Integrated support for Camera, Depth Camera, LiDAR, IMU, GPS, Force/Torque, and Contact sensors with configurable noise models.
- Automatic Physics: Scientifically accurate calculation of mass properties and inertia tensors for both primitive shapes and complex arbitrary meshes.
- Advanced XACRO Support: Intelligent extraction of repeated geometry into macros and shared materials, producing maintainable and modular code.
- Round-Trip Fidelity: The Import → Edit → Export cycle preserves all data with absolute precision, including sensor origins, transmission interfaces, and custom user properties.
- Modular Robot Assembly: High-level Composer API (Core library) for assembling robots from modular sub-components, enabling rapid prototyping and SRDF generation for complex multi-part systems.
Requirements: Blender 4.2 or later
- Open Blender → Edit > Preferences > Get Extensions
- Search for "LinkForge"
- Click Install
- Download the
.zippackage for your platform (e.g.,linkforge-x.x.x-windows-x64.zip) from Latest Releases - Open Blender → Edit > Preferences > Get Extensions
- Click dropdown (⌄) → Install from Disk
- Select the downloaded
.zipfile
-
Create Links
- Select a mesh → Forge panel → Create Link
- Configure mass, inertia, and collision geometry in the Physics section.
- Repeat for all robot parts.
-
Connect with Joints
- Select child link → Forge panel → Create Joint
- Choose joint type (Revolute, Prismatic, Continuous, Fixed, etc.)
- Set limits, axis, and dynamics in the Joint section.
-
Add Sensors (Optional)
- Select a link → Perceive panel → Add Sensor
- Configure sensor properties in the Sensor section.
-
Configure Control (Optional)
- Go to the Control panel → Enable Use ROS2 Control
- Click
+to add joints to the Joint Interfaces list. - Configure Command/State interfaces (Position, Velocity, Effort).
-
Validate & Export
- Go to the Validate & Export panel.
- Click Validate Robot to check for integrity errors.
- Choose format (URDF/XACRO) and click Export.
- Open the LinkForge sidebar tab (N-panel in 3D Viewport).
- In the Forge panel, click Import URDF/XACRO.
- Select your file and edit the robot structure normally.
- Export back via the Validate & Export panel.
Complete examples in examples/ directory:
roundtrip_test_robot.urdf: A comprehensive robot containing ALL 6 URDF joint types (fixed, revolute, continuous, prismatic, planar, floating), plus sensors. Perfect for testing full roundtrip capabilities.mobile_robot.urdf: A simple mobile robot base.diff_drive_robot.urdf: A differential drive robot with wheels.quadruped_robot.urdf: A 4-legged robot demonstrating complex kinematic chains and multi-link assemblies.
- User Guide - Comprehensive tutorials and getting started.
- API Reference - Technical reference for developers.
- Architecture Guide - System design and internals.
- CHANGELOG - Version history.
- Examples: examples/
# 1. Install 'just' (Command Runner)
brew install just
# 2. Clone repository
git clone https://github.com/arounamounchili/linkforge.git
cd linkforge
# 3. Install dependencies
just install# Run all tests (Core + Blender)
just test
# Run only core tests
just test-core
# Run with coverage
just coverage# Run all checks (Lint + Types)
just check
# Fix linting issues
just fixTo package LinkForge as a Blender extension:
# Build the production-ready .zip
just buildThe package will be created in the dist/ directory.
- Example Files - Sample URDF files
- Community Forum - Ask questions
- v1.0.0: Core URDF/XACRO Export, Sensors, &
ros2_controlbasics. - v1.1.0: Enhanced Documentation, Workflow Polish, & Bug Fixes.
- v1.2.0: Architectural Stability (Hexagonal Core, Numerical Precision).
- v1.3.0: Performance & Control (NumPy Acceleration, Depsgraph, & ROS2 Control).
- [/] v1.4.0: Modular Assembly (SRDF, Composer API,
linkforge_ros). - v1.5.0: High-Fidelity Expansion pt.1 (MJCF/MuJoCo support).
- v1.6.0: High-Fidelity Expansion pt.2 (SDF/Gazebo support).
- v1.7.0: Mechanical Debugging (Real-time IK & Collision Interference Validation).
- v2.0.0: Intelligence-Driven Rigging (AI-assisted geometry analysis & Auto-Rigging).
For a deep dive into our long-term strategy, the Digital Twin philosophy, and our technical roadmap for AI and Kinematics, please read our Project Vision.
We welcome contributions! LinkForge is a community-driven project.
- 🙋 Review our Contributing Guide.
- 🏗️ Check our Architecture to understand the internals.
- 💬 Join the conversation on GitHub Discussions.
LinkForge follows a Split-License Model designed for both community-driven innovation and industrial-scale integration:
linkforge-core(The Engine): Licensed under the Apache License 2.0. This permissive license allows industrial partners to integrate the core engine into proprietary pipelines and commercial products.platforms/blender(The UI): Licensed under the GNU General Public License v3.0. This ensures the visual modeling experience and its community-driven improvements remain open-source.
For more details, see the LICENSE (GPL) and core/LICENSE (Apache) files. For third-party component licenses, see THIRD-PARTY-NOTICES.md.
Thanks goes to these wonderful people (emoji key):
arounamounchili 💻 🎨 🤔 🚧 |
MagnusHanses 🐛 |
GeKo-8 🐛 |
Andreas Loeffler 💻 |
Julian Müller 🤔 |
Martin Pecka 🐛 🤔 |
Lionel Fung 🐛 |
This project follows the all-contributors specification. Contributions of any kind welcome!
Made with ❤️ for roboticists worldwide
Precision engineering meets creative modeling.
