Skip to content

Build simulation-ready robots in Blender. Professional URDF/XACRO exporter with validation, sensors, and ros2_control support.

License

Notifications You must be signed in to change notification settings

andreas-loeffler/linkforge

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

179 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
LinkForge Logo

LinkForge

The Linter & Bridge for Robotics

Latest Release CI Documentation License: GPL v3 Blender Conventional Commits

LinkForge is The Linter & Bridge for Robotics.

In robotics, creativity starts in your head โ€” but getting that idea into a simulator usually means hours of writing XML, fixing joint limits, and fighting coordinate systems.

LinkForge removes that friction. It acts as both a Linter and a Bridge, allowing you to model your robot in Blender as naturally as sculpting a 3D scene, while guaranteeing the output is rigorous, simulation-ready code.

  1. Forge Structure: Define links, joints, masses, and inertias visually.
  2. Lint & Validate: Catch structural and physics errors before they break your simulation.
  3. Perceive & Control: Attach sensors and configure ros2_control interfaces.
  4. Export Production Code: Generate clean, hardened URDF/XACRO files.

From idea โ†’ hardened robot model โ†’ ready for simulation. All inside Blender.

๐Ÿ› ๏ธ Technical Specifications

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)

๐Ÿš€ Key Features

  • Bidirectional Workflow: Seamlessly import existing URDF/XACRO files for editing or build complex robot models from scratch using Blender's native tools.
  • Production-Ready Export: Generates strictly compliant URDF/XACRO files optimized for ROS, ROS 2, and Gazebo. Includes ROS-Agnostic Asset Resolution, allowing complex robots to be imported and edited on any platform without requiring a ROS installation.
  • Linter for Robotics (The Safety Net): Built-in integrity checker inspects robot topology, physics data, and joint limits. It catches "exploding robot" errors (negative inertias, detached links, circular chains) before you export.
  • ROS2 Control Support: Automatically generates hardware interface configurations for ros2_control via 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.

๐Ÿ“ฆ Installation

Requirements: Blender 4.2 or later

Method 1: Blender Extensions (Recommended)

  1. Open Blender โ†’ Edit > Preferences > Get Extensions
  2. Search for "LinkForge"
  3. Click Install

Method 2: Manual Installation

  1. Download the .zip package for your platform (e.g., linkforge-x.x.x-windows-x64.zip) from Latest Releases
  2. Open Blender โ†’ Edit > Preferences > Get Extensions
  3. Click dropdown (โŒ„) โ†’ Install from Disk
  4. Select the downloaded .zip file

๐ŸŽฏ Quick Start

Creating a Robot from Scratch

  1. Create Links

    • Select a mesh โ†’ Forge panel โ†’ Create Link
    • Configure mass, inertia, and collision geometry in the Physics section.
    • Repeat for all robot parts.
  2. 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.
  3. Add Sensors (Optional)

    • Select a link โ†’ Perceive panel โ†’ Add Sensor
    • Configure sensor properties in the Sensor section.
  4. 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).
  5. Validate & Export

    • Go to the Validate & Export panel.
    • Click Validate Robot to check for integrity errors.
    • Choose format (URDF/XACRO) and click Export.

Importing Existing URDF

  1. Open the LinkForge sidebar tab (N-panel in 3D Viewport).
  2. In the Forge panel, click Import URDF/XACRO.
  3. Select your file and edit the robot structure normally.
  4. Export back via the Validate & Export panel.

๐Ÿ“š Examples

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.

๐Ÿ“š Documentation

๐Ÿ’ป Development

Setup

# 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

Testing

# Run all tests (Core + Blender)
just test

# Run only core tests
just test-core

# Run with coverage
just coverage

Code Quality

# Run all checks (Lint + Types)
just check

# Fix linting issues
just fix

Building & Distribution

To package LinkForge as a Blender extension:

# Build the production-ready .zip
just build

The package will be created in the dist/ directory.

๐ŸŽ“ Learning Resources

๐Ÿ—บ๏ธ Roadmap

  • v1.0.0: Core URDF/XACRO Export, Sensors, & ros2_control basics.
  • v1.1.0: Enhanced Documentation, Workflow Polish, & Bug Fixes.
  • v1.2.0: Architectural Stability (Hexagonal Core, Numerical Precision).
  • v1.3.0: High-Fidelity Expansion (MJCF/MuJoCo & SDF/Gazebo support).
  • v1.4.0: Mechanical Debugging (Real-time IK & Collision Interference Validation).
  • v2.0.0: Intelligence-Driven Rigging (AI-assisted geometry analysis & Auto-Rigging).

๐Ÿ”ญ Vision & Future

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.


๐Ÿ”ฎ Our Transparency Commitment

We believe in being upfront about what LinkForge doesโ€”and what it doesn't do.

  1. Standard Compliance: We guarantee 100% compliance with the official URDF/XACRO specifications. Your robot will work in any standard parser.
  2. The "Wild URDF" Limit: We aim for lossless Round-Trip (Import โ†’ Edit โ†’ Export). However, if you import a "Wild" URDF containing non-standard tags, custom XML comments, or parser-specific hacks, we do not guarantee their preservation. We clean the code to ensure validity.
  3. Beta Features: Advanced features like ros2_control are evolving. We commit to vigilance in updating them, but syntax changes in ROS 2 may require extension updates.

๐Ÿค Contributing

We welcome contributions! LinkForge is an community-driven project.

๐Ÿ“„ License

This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details. For third-party component licenses, see THIRD-PARTY-NOTICES.md.

โœจ Our Contributors

Thanks goes to these wonderful people (emoji key):

arounamounchili
arounamounchili

๐Ÿ’ป ๐ŸŽจ ๐Ÿค” ๐Ÿšง
MagnusHanses
MagnusHanses

๐Ÿ›
GeKo-8
GeKo-8

๐Ÿ›

This project follows the all-contributors specification. Contributions of any kind welcome!

Made with โค๏ธ for roboticists worldwide
Precision engineering meets creative modeling.

About

Build simulation-ready robots in Blender. Professional URDF/XACRO exporter with validation, sensors, and ros2_control support.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 99.9%
  • Just 0.1%