# stefanborkovski/an-ml-based-approach-for-solving-inverse-kinematic-of-a-6dof-robotic-arm architecture

> Architecture diagram of the GitHub repository stefanborkovski/an-ml-based-approach-for-solving-inverse-kinematic-of-a-6dof-robotic-arm, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/stefanborkovski/an-ml-based-approach-for-solving-inverse-kinematic-of-a-6dof-robotic-arm
- Repository: https://github.com/stefanborkovski/an-ml-based-approach-for-solving-inverse-kinematic-of-a-6dof-robotic-arm

## Overview

This is a research codebase for learning inverse kinematics of 3- and 6-DOF robotic arms. Its main workflow generates forward-kinematics examples, optionally combines or transforms datasets, trains one of three regression approaches to map end-effector features to joint angles, then evaluates predictions; the accuracy scripts also reconstruct and visualize predicted workspace points. README capabilities not sampled in source, such as the DH test and feature/duplicate processing, are retained as separate stages where paths are known. The scripts are standalone rather than a wired application, so edges show only documented or excerpted data use; unsampled links are omitted.

Main entry points: [`datasets_6DOF`](https://github.com/stefanborkovski/an-ml-based-approach-for-solving-inverse-kinematic-of-a-6dof-robotic-arm/tree/main/datasets_6DOF) (Dataset files), [`results`](https://github.com/stefanborkovski/an-ml-based-approach-for-solving-inverse-kinematic-of-a-6dof-robotic-arm/tree/main/results) (Prediction outputs), [`Gradient_Boosting_Regressor.py`](https://github.com/stefanborkovski/an-ml-based-approach-for-solving-inverse-kinematic-of-a-6dof-robotic-arm/blob/main/Gradient_Boosting_Regressor.py) (Gradient boosting), [`LSTM_Neural_Network.py`](https://github.com/stefanborkovski/an-ml-based-approach-for-solving-inverse-kinematic-of-a-6dof-robotic-arm/blob/main/LSTM_Neural_Network.py) (LSTM network)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_data["Dataset preparation"]
  node_generate3["3-DOF generation"]
  node_generate6["6-DOF generation"]
  node_datasets[("Dataset files")]
  node_merge["Dataset merging<br/>[merging_data.py]"]
  node_features["Feature engineering<br/>[adding_features.py]"]
  node_dedupe["Duplicate removal"]
end

subgraph group_models["Inverse models"]
  node_gb["Gradient boosting"]
  node_lstm["LSTM network"]
  node_sequential["Sequential network"]
  node_predictions["Prediction outputs"]
end

subgraph group_evaluation["Evaluation and visualization"]
  node_accuracy3["3-DOF accuracy"]
  node_accuracy6["6-DOF accuracy"]
  node_plot_workspace["Workspace plot"]
end

subgraph group_kinematics["Robot kinematics"]
  node_dh_test["DH transform test"]
end

node_researcher(("Researcher"))

node_researcher -->|"generates data"| node_generate3
node_researcher -->|"generates data"| node_generate6
node_generate3 -->|"produces examples"| node_datasets
node_generate6 -->|"produces examples"| node_datasets
node_researcher -->|"combines datasets"| node_merge
node_merge -->|"merges inputs"| node_datasets
node_researcher -->|"adds features"| node_features
node_features -->|"transforms rows"| node_datasets
node_researcher -->|"cleans data"| node_dedupe
node_dedupe -->|"filters duplicates"| node_datasets
node_researcher -->|"trains model"| node_gb
node_researcher -->|"trains model"| node_lstm
node_researcher -->|"trains model"| node_sequential
node_gb -->|"reads training data"| node_datasets
node_lstm -->|"reads training data"| node_datasets
node_sequential -->|"reads training data"| node_datasets
node_gb -.->|"writes predictions"| node_predictions
node_lstm -.->|"writes predictions"| node_predictions
node_sequential -.->|"writes predictions"| node_predictions
node_researcher -->|"checks predictions"| node_accuracy3
node_researcher -->|"checks predictions"| node_accuracy6
node_accuracy3 -->|"reads results"| node_predictions
node_accuracy6 -->|"reads results"| node_predictions
node_accuracy3 -.->|"compares workspace"| node_datasets
node_accuracy6 -.->|"compares workspace"| node_datasets
node_researcher -->|"visualizes workspace"| node_plot_workspace
node_plot_workspace -->|"reads points"| node_datasets
node_researcher -->|"checks transforms"| node_dh_test

click node_generate3 "https://github.com/stefanborkovski/an-ml-based-approach-for-solving-inverse-kinematic-of-a-6dof-robotic-arm/blob/main/dataset_generation_3DOF.py"
click node_generate6 "https://github.com/stefanborkovski/an-ml-based-approach-for-solving-inverse-kinematic-of-a-6dof-robotic-arm/blob/main/dataset_generation_6DOF.py"
click node_datasets "https://github.com/stefanborkovski/an-ml-based-approach-for-solving-inverse-kinematic-of-a-6dof-robotic-arm/tree/main/datasets_6DOF"
click node_merge "https://github.com/stefanborkovski/an-ml-based-approach-for-solving-inverse-kinematic-of-a-6dof-robotic-arm/blob/main/merging_data.py"
click node_features "https://github.com/stefanborkovski/an-ml-based-approach-for-solving-inverse-kinematic-of-a-6dof-robotic-arm/blob/main/adding_features.py"
click node_dedupe "https://github.com/stefanborkovski/an-ml-based-approach-for-solving-inverse-kinematic-of-a-6dof-robotic-arm/blob/main/removing_duplicates.py"
click node_gb "https://github.com/stefanborkovski/an-ml-based-approach-for-solving-inverse-kinematic-of-a-6dof-robotic-arm/blob/main/Gradient_Boosting_Regressor.py"
click node_lstm "https://github.com/stefanborkovski/an-ml-based-approach-for-solving-inverse-kinematic-of-a-6dof-robotic-arm/blob/main/LSTM_Neural_Network.py"
click node_sequential "https://github.com/stefanborkovski/an-ml-based-approach-for-solving-inverse-kinematic-of-a-6dof-robotic-arm/blob/main/Sequential_Neural_Network.py"
click node_predictions "https://github.com/stefanborkovski/an-ml-based-approach-for-solving-inverse-kinematic-of-a-6dof-robotic-arm/tree/main/results"
click node_dh_test "https://github.com/stefanborkovski/an-ml-based-approach-for-solving-inverse-kinematic-of-a-6dof-robotic-arm/blob/main/Forward_Kinematics_DH_Test.py"
click node_accuracy3 "https://github.com/stefanborkovski/an-ml-based-approach-for-solving-inverse-kinematic-of-a-6dof-robotic-arm/blob/main/FC_Accuracy_Test_3DOF.py"
click node_accuracy6 "https://github.com/stefanborkovski/an-ml-based-approach-for-solving-inverse-kinematic-of-a-6dof-robotic-arm/blob/main/FC_Accuracy_Test_6DOF.py"
click node_plot_workspace "https://github.com/stefanborkovski/an-ml-based-approach-for-solving-inverse-kinematic-of-a-6dof-robotic-arm/blob/main/3D_plot_coordinates.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_generate3,node_generate6,node_datasets,node_merge,node_features,node_dedupe toneBlue
class node_gb,node_lstm,node_sequential,node_predictions toneAmber
class node_accuracy3,node_accuracy6,node_plot_workspace toneMint
class node_dh_test toneRose
class node_researcher toneIndigo
```

## Components

### Dataset preparation

- [3-DOF generation](https://github.com/stefanborkovski/an-ml-based-approach-for-solving-inverse-kinematic-of-a-6dof-robotic-arm/blob/main/dataset_generation_3DOF.py): `dataset_generation_3DOF.py`
- [6-DOF generation](https://github.com/stefanborkovski/an-ml-based-approach-for-solving-inverse-kinematic-of-a-6dof-robotic-arm/blob/main/dataset_generation_6DOF.py): `dataset_generation_6DOF.py`
- [Dataset files](https://github.com/stefanborkovski/an-ml-based-approach-for-solving-inverse-kinematic-of-a-6dof-robotic-arm/tree/main/datasets_6DOF): `datasets_6DOF`
- [Dataset merging](https://github.com/stefanborkovski/an-ml-based-approach-for-solving-inverse-kinematic-of-a-6dof-robotic-arm/blob/main/merging_data.py): `merging_data.py`
- [Feature engineering](https://github.com/stefanborkovski/an-ml-based-approach-for-solving-inverse-kinematic-of-a-6dof-robotic-arm/blob/main/adding_features.py): `adding_features.py`
- [Duplicate removal](https://github.com/stefanborkovski/an-ml-based-approach-for-solving-inverse-kinematic-of-a-6dof-robotic-arm/blob/main/removing_duplicates.py): `removing_duplicates.py`

### Inverse models

- [Gradient boosting](https://github.com/stefanborkovski/an-ml-based-approach-for-solving-inverse-kinematic-of-a-6dof-robotic-arm/blob/main/Gradient_Boosting_Regressor.py): `Gradient_Boosting_Regressor.py`
- [LSTM network](https://github.com/stefanborkovski/an-ml-based-approach-for-solving-inverse-kinematic-of-a-6dof-robotic-arm/blob/main/LSTM_Neural_Network.py): `LSTM_Neural_Network.py`
- [Sequential network](https://github.com/stefanborkovski/an-ml-based-approach-for-solving-inverse-kinematic-of-a-6dof-robotic-arm/blob/main/Sequential_Neural_Network.py): `Sequential_Neural_Network.py`
- [Prediction outputs](https://github.com/stefanborkovski/an-ml-based-approach-for-solving-inverse-kinematic-of-a-6dof-robotic-arm/tree/main/results): `results`

### Evaluation and visualization

- [3-DOF accuracy](https://github.com/stefanborkovski/an-ml-based-approach-for-solving-inverse-kinematic-of-a-6dof-robotic-arm/blob/main/FC_Accuracy_Test_3DOF.py): `FC_Accuracy_Test_3DOF.py`
- [6-DOF accuracy](https://github.com/stefanborkovski/an-ml-based-approach-for-solving-inverse-kinematic-of-a-6dof-robotic-arm/blob/main/FC_Accuracy_Test_6DOF.py): `FC_Accuracy_Test_6DOF.py`
- [Workspace plot](https://github.com/stefanborkovski/an-ml-based-approach-for-solving-inverse-kinematic-of-a-6dof-robotic-arm/blob/main/3D_plot_coordinates.py): `3D_plot_coordinates.py`

### Robot kinematics

- [DH transform test](https://github.com/stefanborkovski/an-ml-based-approach-for-solving-inverse-kinematic-of-a-6dof-robotic-arm/blob/main/Forward_Kinematics_DH_Test.py): `Forward_Kinematics_DH_Test.py`

### Other components

- **Researcher**

## Connections

- Researcher → 3-DOF generation: generates data (evidence: `README.md`)
- Researcher → 6-DOF generation: generates data (evidence: `README.md`)
- 3-DOF generation → Dataset files: produces examples (evidence: `README.md`)
- 6-DOF generation → Dataset files: produces examples (evidence: `README.md`)
- Researcher → Dataset merging: combines datasets (evidence: `README.md`)
- Dataset merging → Dataset files: merges inputs (evidence: `merging_data.py`)
- Researcher → Feature engineering: adds features (evidence: `README.md`)
- Feature engineering → Dataset files: transforms rows (evidence: `adding_features.py`)
- Researcher → Duplicate removal: cleans data (evidence: `README.md`)
- Duplicate removal → Dataset files: filters duplicates (evidence: `removing_duplicates.py`)
- Researcher → Gradient boosting: trains model (evidence: `README.md`)
- Researcher → LSTM network: trains model (evidence: `README.md`)
- Researcher → Sequential network: trains model (evidence: `README.md`)
- Gradient boosting → Dataset files: reads training data (evidence: `Gradient_Boosting_Regressor.py`)
- LSTM network → Dataset files: reads training data (evidence: `LSTM_Neural_Network.py`)
- Sequential network → Dataset files: reads training data (evidence: `Sequential_Neural_Network.py`)
- Gradient boosting → Prediction outputs: writes predictions
- LSTM network → Prediction outputs: writes predictions
- Sequential network → Prediction outputs: writes predictions
- Researcher → 3-DOF accuracy: checks predictions (evidence: `README.md`)
- Researcher → 6-DOF accuracy: checks predictions (evidence: `README.md`)
- 3-DOF accuracy → Prediction outputs: reads results (evidence: `FC_Accuracy_Test_3DOF.py`)
- 6-DOF accuracy → Prediction outputs: reads results (evidence: `FC_Accuracy_Test_6DOF.py`)
- 3-DOF accuracy → Dataset files: compares workspace
- 6-DOF accuracy → Dataset files: compares workspace
- Researcher → Workspace plot: visualizes workspace (evidence: `README.md`)
- Workspace plot → Dataset files: reads points (evidence: `3D_plot_coordinates.py`)
- Researcher → DH transform test: checks transforms (evidence: `README.md`)
