# viktorivan8787/robot-arm-6dof-full architecture

> Architecture diagram of the GitHub repository viktorivan8787/robot-arm-6dof-full, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/viktorivan8787/robot-arm-6dof-full
- Repository: https://github.com/viktorivan8787/robot-arm-6dof-full

## Overview

This repository combines a Python camera/vision interface with a separate C++ interactive arm simulator. The implemented vision path captures frames and runs YOLO or description-guided Grounding DINO detection; the simulator handles target interaction, inverse kinematics, pathway sequencing, and rendering. The README describes coordinate conversion, physical actuation, and vacuum pick-and-place as system goals, but the sampled source does not establish their implementation or wiring, so those links are shown as planned. Unsampled UI and vision capabilities use their enclosing tree directories as paths.

Main entry points: [`cpp/apps/simulation.cpp`](https://github.com/viktorivan8787/robot-arm-6dof-full/blob/main/cpp/apps/simulation.cpp) (Simulation App), [`python/arm/ui/camera_worker.py`](https://github.com/viktorivan8787/robot-arm-6dof-full/blob/main/python/arm/ui/camera_worker.py) (Camera Worker), [`python/arm/ui/grounding_dino_worker.py`](https://github.com/viktorivan8787/robot-arm-6dof-full/blob/main/python/arm/ui/grounding_dino_worker.py) (Grounding DINO Worker), [`python/arm/vision/detect.py`](https://github.com/viktorivan8787/robot-arm-6dof-full/blob/main/python/arm/vision/detect.py) (Object Detection)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_vision["Vision"]
  node_camera["Camera Capture<br/>[camera.py]"]
  node_detector["Object Detection<br/>[detect.py]"]
  node_dino_worker["Grounding DINO Worker"]
  node_coordinate_mapping["Coordinate Mapping"]
end

subgraph group_interface["User Interface"]
  node_controller_app["Controller App<br/>[arm_controller.py]"]
  node_main_window["Main Window<br/>[main_window.py]"]
  node_camera_widget["Camera Widget<br/>[camera_widget.py]"]
  node_camera_worker["Camera Worker<br/>[camera_worker.py]"]
end

subgraph group_simulation["Simulation"]
  node_sim_app["Simulation App<br/>[simulation.cpp]"]
  node_sim_state["Simulation State"]
  node_robot_model["Robot Model<br/>[robot.hpp]"]
  node_kinematics["Kinematics<br/>[kinematics.cpp]"]
  node_pathways["Pathway Sequencing<br/>[pathways.cpp]"]
  node_rendering["3D Rendering<br/>[rendering.cpp]"]
  node_hud["Simulation HUD<br/>[hud.cpp]"]
end

subgraph group_planned["Planned Hardware"]
  node_physical_arm["Six-Joint Arm"]
  node_vacuum_effector["Vacuum Effector"]
end

node_operator(("Operator"))
node_workspace_camera(("Workspace Camera"))

node_operator -->|"launches"| node_controller_app
node_controller_app -->|"creates"| node_main_window
node_workspace_camera -->|"provides frames"| node_camera
node_camera_worker -->|"reads frames"| node_camera
node_camera_worker -->|"runs detection"| node_detector
node_camera_worker -->|"requests inference"| node_dino_worker
node_dino_worker -->|"runs inference"| node_detector
node_dino_worker -->|"returns detections"| node_camera_worker
node_camera_widget -->|"displays frames"| node_camera_worker
node_main_window -->|"hosts"| node_camera_widget
node_operator -->|"controls"| node_sim_app
node_sim_app -->|"updates state"| node_sim_state
node_sim_app -->|"solves pose"| node_kinematics
node_sim_app -->|"generates waypoints"| node_pathways
node_sim_app -->|"draws arm"| node_rendering
node_sim_app -->|"draws panels"| node_hud
node_sim_state -->|"uses geometry"| node_robot_model
node_kinematics -->|"uses joint model"| node_robot_model
node_detector -.->|"provides image coordinates"| node_coordinate_mapping
node_coordinate_mapping -.->|"planned target coordinates"| node_physical_arm
node_physical_arm -.->|"planned pick and place"| node_vacuum_effector

click node_controller_app "https://github.com/viktorivan8787/robot-arm-6dof-full/blob/main/python/apps/arm_controller.py"
click node_main_window "https://github.com/viktorivan8787/robot-arm-6dof-full/blob/main/python/arm/ui/main_window.py"
click node_camera_widget "https://github.com/viktorivan8787/robot-arm-6dof-full/blob/main/python/arm/ui/camera_widget.py"
click node_camera_worker "https://github.com/viktorivan8787/robot-arm-6dof-full/blob/main/python/arm/ui/camera_worker.py"
click node_camera "https://github.com/viktorivan8787/robot-arm-6dof-full/blob/main/python/arm/vision/camera.py"
click node_detector "https://github.com/viktorivan8787/robot-arm-6dof-full/blob/main/python/arm/vision/detect.py"
click node_dino_worker "https://github.com/viktorivan8787/robot-arm-6dof-full/blob/main/python/arm/ui/grounding_dino_worker.py"
click node_coordinate_mapping "https://github.com/viktorivan8787/robot-arm-6dof-full/tree/main/python/arm/vision"
click node_sim_app "https://github.com/viktorivan8787/robot-arm-6dof-full/blob/main/cpp/apps/simulation.cpp"
click node_sim_state "https://github.com/viktorivan8787/robot-arm-6dof-full/blob/main/cpp/include/simulation_assets/simulation_state.hpp"
click node_robot_model "https://github.com/viktorivan8787/robot-arm-6dof-full/blob/main/cpp/include/robot_arm/robot.hpp"
click node_kinematics "https://github.com/viktorivan8787/robot-arm-6dof-full/blob/main/cpp/src/kinematics.cpp"
click node_pathways "https://github.com/viktorivan8787/robot-arm-6dof-full/blob/main/cpp/src/pathways.cpp"
click node_rendering "https://github.com/viktorivan8787/robot-arm-6dof-full/blob/main/cpp/src/rendering.cpp"
click node_hud "https://github.com/viktorivan8787/robot-arm-6dof-full/blob/main/cpp/src/hud.cpp"

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_camera,node_detector,node_dino_worker,node_coordinate_mapping toneBlue
class node_controller_app,node_main_window,node_camera_widget,node_camera_worker toneAmber
class node_sim_app,node_sim_state,node_robot_model,node_kinematics,node_pathways,node_rendering,node_hud toneMint
class node_physical_arm,node_vacuum_effector toneRose
class node_operator,node_workspace_camera toneIndigo
```

## Components

### Vision

- [Camera Capture](https://github.com/viktorivan8787/robot-arm-6dof-full/blob/main/python/arm/vision/camera.py): `python/arm/vision/camera.py`
- [Object Detection](https://github.com/viktorivan8787/robot-arm-6dof-full/blob/main/python/arm/vision/detect.py): `python/arm/vision/detect.py`
- [Grounding DINO Worker](https://github.com/viktorivan8787/robot-arm-6dof-full/blob/main/python/arm/ui/grounding_dino_worker.py): `python/arm/ui/grounding_dino_worker.py`
- [Coordinate Mapping](https://github.com/viktorivan8787/robot-arm-6dof-full/tree/main/python/arm/vision): `python/arm/vision`

### User Interface

- [Controller App](https://github.com/viktorivan8787/robot-arm-6dof-full/blob/main/python/apps/arm_controller.py): `python/apps/arm_controller.py`
- [Main Window](https://github.com/viktorivan8787/robot-arm-6dof-full/blob/main/python/arm/ui/main_window.py): `python/arm/ui/main_window.py`
- [Camera Widget](https://github.com/viktorivan8787/robot-arm-6dof-full/blob/main/python/arm/ui/camera_widget.py): `python/arm/ui/camera_widget.py`
- [Camera Worker](https://github.com/viktorivan8787/robot-arm-6dof-full/blob/main/python/arm/ui/camera_worker.py): `python/arm/ui/camera_worker.py`

### Simulation

- [Simulation App](https://github.com/viktorivan8787/robot-arm-6dof-full/blob/main/cpp/apps/simulation.cpp): `cpp/apps/simulation.cpp`
- [Simulation State](https://github.com/viktorivan8787/robot-arm-6dof-full/blob/main/cpp/include/simulation_assets/simulation_state.hpp): `cpp/include/simulation_assets/simulation_state.hpp`
- [Robot Model](https://github.com/viktorivan8787/robot-arm-6dof-full/blob/main/cpp/include/robot_arm/robot.hpp): `cpp/include/robot_arm/robot.hpp`
- [Kinematics](https://github.com/viktorivan8787/robot-arm-6dof-full/blob/main/cpp/src/kinematics.cpp): `cpp/src/kinematics.cpp`
- [Pathway Sequencing](https://github.com/viktorivan8787/robot-arm-6dof-full/blob/main/cpp/src/pathways.cpp): `cpp/src/pathways.cpp`
- [3D Rendering](https://github.com/viktorivan8787/robot-arm-6dof-full/blob/main/cpp/src/rendering.cpp): `cpp/src/rendering.cpp`
- [Simulation HUD](https://github.com/viktorivan8787/robot-arm-6dof-full/blob/main/cpp/src/hud.cpp): `cpp/src/hud.cpp`

### Planned Hardware

- **Six-Joint Arm**
- **Vacuum Effector**

### Other components

- **Operator**
- **Workspace Camera**

## Connections

- Operator → Controller App: launches
- Controller App → Main Window: creates
- Workspace Camera → Camera Capture: provides frames
- Camera Worker → Camera Capture: reads frames
- Camera Worker → Object Detection: runs detection
- Camera Worker → Grounding DINO Worker: requests inference
- Grounding DINO Worker → Object Detection: runs inference
- Grounding DINO Worker → Camera Worker: returns detections
- Camera Widget → Camera Worker: displays frames
- Main Window → Camera Widget: hosts
- Operator → Simulation App: controls
- Simulation App → Simulation State: updates state
- Simulation App → Kinematics: solves pose
- Simulation App → Pathway Sequencing: generates waypoints
- Simulation App → 3D Rendering: draws arm
- Simulation App → Simulation HUD: draws panels
- Simulation State → Robot Model: uses geometry
- Kinematics → Robot Model: uses joint model
- Object Detection → Coordinate Mapping: provides image coordinates
- Coordinate Mapping → Six-Joint Arm: planned target coordinates
- Six-Joint Arm → Vacuum Effector: planned pick and place
