Skip to content

Commit 9803d91

Browse files
docs: Reorganize documentation according to Diátaxis framework
1 parent 66036e2 commit 9803d91

17 files changed

Lines changed: 226 additions & 236 deletions
File renamed without changes.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Explanation: The LinkForge Data Model
2+
3+
To understand how LinkForge converts a Blender scene into a URDF, it's important to understand the underlying data model.
4+
5+
## Why not just use Blender groups?
6+
Standard Blender parent-child relationships don't store enough information for robotics simulation (like joint types, axis orientations, or mass properties).
7+
8+
## The Three Layers
9+
LinkForge maintains a parallel data structure that maps Blender objects to URDF elements:
10+
11+
1. **Blender Object Layer**: The visual mesh and collision geometry you see in the viewport.
12+
2. **LinkForge Property Layer**: Hidden custom properties attached to Blender objects that store mass, inertia, and joint settings.
13+
3. **Core URDF Model**: An immutable Python object created only during validation/export that ensures the robot tree is mathematically sound.
14+
15+
## Coordinate Frames
16+
Blender uses a **Right-Handed Z-Up** coordinate system. LinkForge ensures that when you export to URDF (which is also Right-Handed), all offsets and rotations are correctly converted so your robot "stands up" correctly in Gazebo.

docs/source/explanation/index.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Explanation
2+
3+
Explanation is **understanding-oriented**. It provides background, context, and deep dives into the "why" and "how" behind LinkForge's design.
4+
5+
```{toctree}
6+
:maxdepth: 1
7+
8+
ARCHITECTURE
9+
data_model
10+
```

docs/source/getting_started.md

Lines changed: 0 additions & 168 deletions
This file was deleted.

docs/source/how_to/add_sensors.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# How-to: Add Sensors to Your Robot
2+
3+
This guide shows you how to integrate sensors like LiDAR, Cameras, and IMUs into your LinkForge robot model for simulation.
4+
5+
## Prerequisites
6+
- A robot model with at least one **Link** created.
7+
8+
## 1. Prepare the Sensor Link
9+
A sensor in URDF is usually attached to a specific link. You can either attach it to an existing link (like `base_link`) or create a dedicated small mesh to represent the sensor body.
10+
11+
## 2. Attaching the Sensor
12+
1. Select the link that should hold the sensor in the 3D Viewport.
13+
2. Open the **LinkForge** panel and navigate to the **Sensors** tab.
14+
3. Click **Add Sensor**.
15+
16+
## 3. Configuration
17+
Once added, you can configure the sensor properties:
18+
- **Update Rate**: How many times per second the sensor scans (e.g., 30Hz).
19+
- **Topics**: The ROS topic name where data will be published.
20+
- **Noise Models**: Add Gaussian noise to simulate real-world sensor inaccuracies.
21+
22+
### Common Sensor Types:
23+
- **LiDAR**: Requires `<ray>` configuration for samples and range.
24+
- **Camera**: Requires resolution and focal length settings.
25+
- **IMU**: Provides orientation and acceleration data.
26+
27+
## 4. Gazebo Integration
28+
LinkForge automatically generates the necessary `<gazebo>` tags and plugins to make these sensors work instantly in **Gazebo Sim** or **Gazebo Classic**.

docs/source/how_to/index.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# How-to Guides
2+
3+
How-to guides are **task-oriented**. They provide specific "recipes" to help you solve a particular problem or complete a specific task.
4+
5+
```{toctree}
6+
:maxdepth: 1
7+
8+
add_sensors
9+
```

docs/source/index.md

Lines changed: 70 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,93 +1,95 @@
11
# LinkForge Documentation
22

3-
Welcome to LinkForge's documentation!
3+
Welcome to the official LinkForge documentation. LinkForge is a professional Blender extension designed to bridge the gap between 3D modeling and robotics simulation.
44

5-
**LinkForge** is a professional Blender extension for roboticists.
5+
Following the **Diátaxis framework**, our documentation is organized into four sections to help you find exactly what you need.
66

7-
**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.**
7+
---
88

9-
LinkForge removes that friction. Model your robot in Blender as naturally as sculpting a 3D scene, then let LinkForge handle the engineering.
9+
::::{grid} 2
10+
:gutter: 3
1011

11-
**From idea → robot → ready for simulation.** All inside Blender.
12+
:::{grid-item-card} 🚀 Tutorials
13+
:link: tutorials/index
14+
:link-type: doc
1215

13-
```{toctree}
14-
:maxdepth: 2
15-
:caption: Contents:
16-
17-
getting_started
18-
ARCHITECTURE
19-
api/index
20-
CONTRIBUTING
21-
CHANGELOG
22-
README
23-
LICENSE
24-
```
25-
26-
## Quick Links
16+
**Learning-oriented.** Start here if you are new to LinkForge. Step-by-step lessons to build your first robot.
17+
^^^
18+
- [Building a Diff-Drive Robot](tutorials/building_diff_drive)
19+
:::
2720

28-
- [GitHub Repository](https://github.com/arounamounchili/linkforge)
29-
- [Issue Tracker](https://github.com/arounamounchili/linkforge/issues)
30-
- [Discussions](https://github.com/arounamounchili/linkforge/discussions)
21+
:::{grid-item-card} 🛠️ How-to Guides
22+
:link: how_to/index
23+
:link-type: doc
3124

32-
## Features
25+
**Task-oriented.** Practical guides to help you achieve specific goals or solve problems.
26+
^^^
27+
- [Adding Sensors](how_to/add_sensors)
28+
- [Defining Joints](how_to/index)
29+
:::
3330

34-
- **Bidirectional Workflow**: Seamlessly import existing URDF/XACRO files for editing or build complex robot models from scratch using Blender's native tools.
35-
- **Production-Ready Export**: Generates strictly compliant URDF/XACRO files optimized for ROS, ROS 2, and Gazebo. Output is clean, validated, and requires no manual post-processing.
36-
- **Smart Validation**: Built-in integrity checker inspects robot topology, physics data, and joint limits to prevent common simulation crashes before they happen.
37-
- **ROS2 Control Support**: Automatically generates hardware interface configurations for `ros2_control`, compatible with Gazebo, Webots, Isaac Sim, and physical hardware.
38-
- **Complete Sensor Suite**: Integrated support for Camera, Depth Camera, LiDAR, IMU, GPS, and Force/Torque sensors with configurable noise models.
39-
- **Automatic Physics**: Scientifically accurate calculation of mass properties and inertia tensors for both primitive shapes and complex arbitrary meshes.
40-
- **Advanced XACRO Support**: Intelligent extraction of repeated geometry into macros and shared materials, producing maintainable and modular code.
41-
- **Round-Trip Fidelity**: Import → Edit → Export cycle preserves all data absolute precision, including sensor origins, transmission interfaces, and custom user properties.
42-
- **Interactive Kinematic Visualization**: Real-time rendering of joint coordinate frames (`RGB=XYZ`) in the viewport, enabling instant visual verification of kinematic chain orientations.
31+
:::{grid-item-card} 💡 Explanation
32+
:link: explanation/index
33+
:link-type: doc
4334

35+
**Understanding-oriented.** Deep dives into the architecture, theory, and design of LinkForge.
36+
^^^
37+
- [Architecture Guide](explanation/ARCHITECTURE)
38+
- [Data Model](explanation/data_model)
39+
:::
4440

45-
## 🛠️ Workflow
41+
:::{grid-item-card} 📚 Reference
42+
:link: reference/index
43+
:link-type: doc
4644

47-
LinkForge follows a structured **Forge → Perceive → Control → Export** workflow:
45+
**Information-oriented.** Technical descriptions, API documentation, and specifications.
46+
^^^
47+
- [Python API Reference](reference/api/index)
48+
- [URDF Specification](reference/index)
49+
:::
4850

49-
### 1. Forge Links
50-
- Convert meshes to robot links with automatic naming
51-
- Generate optimized collision geometry
52-
- Calculate physics properties (mass, inertia)
53-
- Reversible actions (safely remove links)
51+
::::
5452

55-
### 2. Forge Joints
56-
- Connect links with precise joint configuration
57-
- Visual feedback for joint axes in viewport
58-
- Full CRUD operations (Create, Read, Update, Delete)
59-
- Support for all URDF joint types
53+
---
6054

61-
### 3. Perceive (Sensors)
62-
- Attach sensors to links
63-
- Configure update rates, resolutions, noise models
64-
- Gazebo plugin integration
55+
```{toctree}
56+
:maxdepth: 2
57+
:hidden:
58+
:caption: Tutorials
6559
66-
### 4. Control (Transmissions)
67-
- Configure hardware interfaces (Position, Velocity, Effort)
68-
- Set up mechanical reductions and joint limits
69-
- Auto-generate `ros2_control` tags
60+
tutorials/building_diff_drive
61+
```
7062

71-
### 5. Validate & Export
72-
- Built-in validator catches common errors
73-
- Export to URDF or XACRO with mesh handling
63+
```{toctree}
64+
:maxdepth: 2
65+
:hidden:
66+
:caption: How-to Guides
7467
75-
## Installation
68+
how_to/add_sensors
69+
```
7670

77-
### Requirements
78-
- Blender 4.2 or later
79-
- Python 3.11+
71+
```{toctree}
72+
:maxdepth: 2
73+
:hidden:
74+
:caption: Explanation
8075
81-
### Installation
76+
explanation/ARCHITECTURE
77+
explanation/data_model
78+
```
8279

83-
1. **Download**: Get `linkforge-1.0.0.zip` from [Releases](https://github.com/arounamounchili/linkforge/releases).
84-
2. **Open Blender**: Go to **Edit > Preferences > Get Extensions**.
85-
3. **Install**: Click the dropdown (⌄) in top-right → **Install from Disk**.
86-
4. **Select**: Choose the downloaded `.zip` file.
80+
```{toctree}
81+
:maxdepth: 2
82+
:hidden:
83+
:caption: Reference
8784
85+
reference/api/index
86+
CHANGELOG
87+
CONTRIBUTING
88+
LICENSE
89+
```
8890

89-
## Indices and tables
91+
## Quick Links
9092

91-
- {ref}`genindex`
92-
- {ref}`modindex`
93-
- {ref}`search`
93+
- [GitHub Repository](https://github.com/arounamounchili/linkforge)
94+
- [Issue Tracker](https://github.com/arounamounchili/linkforge/issues)
95+
- [Discussions](https://github.com/arounamounchili/linkforge/discussions)
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)