# kadirakcn00/robotics-journey architecture

> Architecture diagram of the GitHub repository kadirakcn00/robotics-journey, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-15). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/kadirakcn00/robotics-journey
- Repository: https://github.com/kadirakcn00/robotics-journey

## Overview

Robotics Journey combines ROS 2 communication exercises with a simulated UGV stack. The UGV workflow spans simulation and robot state, sensor perception/localization, course navigation or manual control, and evaluation. The README documents SLAM, Nav2, robot description, Gazebo bridging, and competition-course capabilities whose implementation files are absent from this tree; those remain distinct nodes with directory paths. Edges are limited to excerpted calls or explicit README relationships; unsampled launch wiring and runtime topic connections are not asserted.

Main entry points: [`ugv-project/src/ugv_gazebo`](https://github.com/kadirakcn00/robotics-journey/tree/main/ugv-project/src/ugv_gazebo) (Gazebo Simulation), [`ugv-project/src/ugv_bringup/launch`](https://github.com/kadirakcn00/robotics-journey/tree/main/ugv-project/src/ugv_bringup/launch) (System Launches), [`ugv-project/src/ugv_autonomy/ugv_autonomy/mission.py`](https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_autonomy/ugv_autonomy/mission.py) (Mission Logic), [`ugv-project/src/ugv_perception/ugv_perception/sign_detector_node.py`](https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_perception/ugv_perception/sign_detector_node.py) (Camera Perception)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_basics["ROS 2 Basics"]
  node_pub["Publisher<br/>[publisher_node.py]"]
  node_sub["Subscriber<br/>[subscriber_node.py]"]
  node_client["Service Client<br/>[client_node.py]"]
  node_server["Service Server<br/>[server_node.py]"]
  node_launch_pubsub["Pub/Sub Launch<br/>[pubsub.launch.py]"]
end

subgraph group_platform["UGV Simulation"]
  node_description["Robot Description"]
  node_gazebo["Gazebo Simulation"]
  node_odometry["Odometry<br/>[odom_node.py]"]
  node_bringup["System Launches"]
  node_bridge["ROS-Gazebo Bridge"]
end

subgraph group_autonomy["Autonomy and Navigation"]
  node_slam["SLAM Mapping"]
  node_navigation["Nav2 Navigation"]
  node_mission_node["Mission Node<br/>[mission_node.py]"]
  node_mission["Mission Logic<br/>[mission.py]"]
  node_localizer["Sensor Localizer<br/>[localization.py]"]
  node_obstacles["Obstacle Analysis<br/>[obstacles.py]"]
  node_path_follower["Path Follower<br/>[path_follower.py]"]
end

subgraph group_interfaces["Perception and Control"]
  node_perception["Camera Perception"]
  node_sign_detection["Sign Recognition<br/>[sign_detection.py]"]
  node_target_detection["Target Detection"]
  node_teleop["Driver Station<br/>[driver_station.py]"]
  node_drive_logic["Drive Logic<br/>[drive_logic.py]"]
  node_avoid_node["LiDAR Avoidance<br/>[avoid_node.py]"]
  node_driver(("Remote Driver<br/>[driver_station.py]"))
end

subgraph group_course["Course Operations"]
  node_course_tester["Course Tester"]
  node_water["Water Physics<br/>[water.py]"]
  node_course_geometry["Course Geometry<br/>[geometry.py]"]
  node_referee["Run Referee<br/>[referee.py]"]
  node_slider["Moving Obstacle"]
  node_course_models["Course Models"]
end

node_user(("Operator"))

node_user -->|"publishes"| node_pub
node_pub -->|"topic message"| node_sub
node_user -->|"requests"| node_client
node_client -->|"sends request"| node_server
node_server -->|"returns response"| node_client
node_user -->|"starts nodes"| node_launch_pubsub
node_description -.->|"defines robot"| node_gazebo
node_gazebo -->|"simulates topics"| node_bridge
node_bridge -->|"provides state"| node_odometry
node_odometry -->|"supplies odometry"| node_slam
node_slam -->|"provides map"| node_navigation
node_user -->|"sets goal"| node_navigation
node_mission_node -->|"runs mission"| node_mission
node_mission -->|"uses localization"| node_localizer
node_mission -->|"uses avoidance"| node_obstacles
node_mission -->|"uses path following"| node_path_follower
node_perception -->|"calls detector"| node_sign_detection
node_mission_node -.->|"consumes detections"| node_perception
node_perception -.->|"detects target"| node_target_detection
node_teleop -->|"uses controls"| node_drive_logic
node_driver -->|"operates"| node_teleop
node_course_tester -->|"uses follower"| node_path_follower
node_course_tester -->|"uses water model"| node_water
node_referee -->|"checks contacts"| node_course_geometry
node_course_models -->|"generates course"| node_gazebo
node_bringup -.->|"launches simulation"| node_gazebo
node_bringup -.->|"launches mapping"| node_slam
node_bringup -.->|"launches navigation"| node_navigation
node_bringup -->|"launches perception"| node_perception
node_slider -.->|"animates obstacle"| node_gazebo

click node_pub "https://github.com/kadirakcn00/robotics-journey/blob/main/ros2-basics/src/py_pubsub/py_pubsub/publisher_node.py"
click node_sub "https://github.com/kadirakcn00/robotics-journey/blob/main/ros2-basics/src/py_pubsub/py_pubsub/subscriber_node.py"
click node_client "https://github.com/kadirakcn00/robotics-journey/blob/main/ros2-basics/src/py_srvcli/py_srvcli/client_node.py"
click node_server "https://github.com/kadirakcn00/robotics-journey/blob/main/ros2-basics/src/py_srvcli/py_srvcli/server_node.py"
click node_launch_pubsub "https://github.com/kadirakcn00/robotics-journey/blob/main/ros2-basics/src/py_pubsub/launch/pubsub.launch.py"
click node_description "https://github.com/kadirakcn00/robotics-journey/tree/main/ugv-project/src/ugv_description"
click node_gazebo "https://github.com/kadirakcn00/robotics-journey/tree/main/ugv-project/src/ugv_gazebo"
click node_odometry "https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_odometry/ugv_odometry/odom_node.py"
click node_slam "https://github.com/kadirakcn00/robotics-journey/tree/main/ugv-project/src/ugv_slam"
click node_navigation "https://github.com/kadirakcn00/robotics-journey/tree/main/ugv-project/src/ugv_navigation"
click node_mission_node "https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_autonomy/ugv_autonomy/mission_node.py"
click node_mission "https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_autonomy/ugv_autonomy/mission.py"
click node_localizer "https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_autonomy/ugv_autonomy/localization.py"
click node_obstacles "https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_autonomy/ugv_autonomy/obstacles.py"
click node_path_follower "https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_course/ugv_course/path_follower.py"
click node_perception "https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_perception/ugv_perception/sign_detector_node.py"
click node_sign_detection "https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_perception/ugv_perception/sign_detection.py"
click node_target_detection "https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_perception/ugv_perception/target_detection.py"
click node_teleop "https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_teleop/ugv_teleop/driver_station.py"
click node_drive_logic "https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_teleop/ugv_teleop/drive_logic.py"
click node_avoid_node "https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_control/ugv_control/avoid_node.py"
click node_course_tester "https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_course/ugv_course/course_tester_node.py"
click node_water "https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_course/ugv_course/water.py"
click node_course_geometry "https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_course/ugv_course/geometry.py"
click node_referee "https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_course/ugv_course/referee.py"
click node_slider "https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_course/ugv_course/sliding_obstacle_node.py"
click node_course_models "https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_course/scripts/make_teknofest_course.py"
click node_bringup "https://github.com/kadirakcn00/robotics-journey/tree/main/ugv-project/src/ugv_bringup/launch"
click node_bridge "https://github.com/kadirakcn00/robotics-journey/tree/main/ugv-project/src/ugv_gazebo"
click node_driver "https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_teleop/ugv_teleop/driver_station.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_pub,node_sub,node_client,node_server,node_launch_pubsub toneBlue
class node_description,node_gazebo,node_odometry,node_bringup,node_bridge toneAmber
class node_slam,node_navigation,node_mission_node,node_mission,node_localizer,node_obstacles,node_path_follower toneMint
class node_perception,node_sign_detection,node_target_detection,node_teleop,node_drive_logic,node_avoid_node,node_driver toneRose
class node_course_tester,node_water,node_course_geometry,node_referee,node_slider,node_course_models,node_user toneIndigo
```

## Components

### ROS 2 Basics

- [Publisher](https://github.com/kadirakcn00/robotics-journey/blob/main/ros2-basics/src/py_pubsub/py_pubsub/publisher_node.py): `ros2-basics/src/py_pubsub/py_pubsub/publisher_node.py`
- [Subscriber](https://github.com/kadirakcn00/robotics-journey/blob/main/ros2-basics/src/py_pubsub/py_pubsub/subscriber_node.py): `ros2-basics/src/py_pubsub/py_pubsub/subscriber_node.py`
- [Service Client](https://github.com/kadirakcn00/robotics-journey/blob/main/ros2-basics/src/py_srvcli/py_srvcli/client_node.py): `ros2-basics/src/py_srvcli/py_srvcli/client_node.py`
- [Service Server](https://github.com/kadirakcn00/robotics-journey/blob/main/ros2-basics/src/py_srvcli/py_srvcli/server_node.py): `ros2-basics/src/py_srvcli/py_srvcli/server_node.py`
- [Pub/Sub Launch](https://github.com/kadirakcn00/robotics-journey/blob/main/ros2-basics/src/py_pubsub/launch/pubsub.launch.py): `ros2-basics/src/py_pubsub/launch/pubsub.launch.py`

### UGV Simulation

- [Robot Description](https://github.com/kadirakcn00/robotics-journey/tree/main/ugv-project/src/ugv_description): `ugv-project/src/ugv_description`
- [Gazebo Simulation](https://github.com/kadirakcn00/robotics-journey/tree/main/ugv-project/src/ugv_gazebo): `ugv-project/src/ugv_gazebo`
- [Odometry](https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_odometry/ugv_odometry/odom_node.py): `ugv-project/src/ugv_odometry/ugv_odometry/odom_node.py`
- [System Launches](https://github.com/kadirakcn00/robotics-journey/tree/main/ugv-project/src/ugv_bringup/launch): `ugv-project/src/ugv_bringup/launch`
- [ROS-Gazebo Bridge](https://github.com/kadirakcn00/robotics-journey/tree/main/ugv-project/src/ugv_gazebo): `ugv-project/src/ugv_gazebo`

### Autonomy and Navigation

- [SLAM Mapping](https://github.com/kadirakcn00/robotics-journey/tree/main/ugv-project/src/ugv_slam): `ugv-project/src/ugv_slam`
- [Nav2 Navigation](https://github.com/kadirakcn00/robotics-journey/tree/main/ugv-project/src/ugv_navigation): `ugv-project/src/ugv_navigation`
- [Mission Node](https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_autonomy/ugv_autonomy/mission_node.py): `ugv-project/src/ugv_autonomy/ugv_autonomy/mission_node.py`
- [Mission Logic](https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_autonomy/ugv_autonomy/mission.py): `ugv-project/src/ugv_autonomy/ugv_autonomy/mission.py`
- [Sensor Localizer](https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_autonomy/ugv_autonomy/localization.py): `ugv-project/src/ugv_autonomy/ugv_autonomy/localization.py`
- [Obstacle Analysis](https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_autonomy/ugv_autonomy/obstacles.py): `ugv-project/src/ugv_autonomy/ugv_autonomy/obstacles.py`
- [Path Follower](https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_course/ugv_course/path_follower.py): `ugv-project/src/ugv_course/ugv_course/path_follower.py`

### Perception and Control

- [Camera Perception](https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_perception/ugv_perception/sign_detector_node.py): `ugv-project/src/ugv_perception/ugv_perception/sign_detector_node.py`
- [Sign Recognition](https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_perception/ugv_perception/sign_detection.py): `ugv-project/src/ugv_perception/ugv_perception/sign_detection.py`
- [Target Detection](https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_perception/ugv_perception/target_detection.py): `ugv-project/src/ugv_perception/ugv_perception/target_detection.py`
- [Driver Station](https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_teleop/ugv_teleop/driver_station.py): `ugv-project/src/ugv_teleop/ugv_teleop/driver_station.py`
- [Drive Logic](https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_teleop/ugv_teleop/drive_logic.py): `ugv-project/src/ugv_teleop/ugv_teleop/drive_logic.py`
- [LiDAR Avoidance](https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_control/ugv_control/avoid_node.py): `ugv-project/src/ugv_control/ugv_control/avoid_node.py`
- [Remote Driver](https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_teleop/ugv_teleop/driver_station.py): `ugv-project/src/ugv_teleop/ugv_teleop/driver_station.py`

### Course Operations

- [Course Tester](https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_course/ugv_course/course_tester_node.py): `ugv-project/src/ugv_course/ugv_course/course_tester_node.py`
- [Water Physics](https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_course/ugv_course/water.py): `ugv-project/src/ugv_course/ugv_course/water.py`
- [Course Geometry](https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_course/ugv_course/geometry.py): `ugv-project/src/ugv_course/ugv_course/geometry.py`
- [Run Referee](https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_course/ugv_course/referee.py): `ugv-project/src/ugv_course/ugv_course/referee.py`
- [Moving Obstacle](https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_course/ugv_course/sliding_obstacle_node.py): `ugv-project/src/ugv_course/ugv_course/sliding_obstacle_node.py`
- [Course Models](https://github.com/kadirakcn00/robotics-journey/blob/main/ugv-project/src/ugv_course/scripts/make_teknofest_course.py): `ugv-project/src/ugv_course/scripts/make_teknofest_course.py`

### Other components

- **Operator**

## Connections

- Operator → Publisher: publishes
- Publisher → Subscriber: topic message
- Operator → Service Client: requests
- Service Client → Service Server: sends request
- Service Server → Service Client: returns response
- Operator → Pub/Sub Launch: starts nodes
- Robot Description → Gazebo Simulation: defines robot
- Gazebo Simulation → ROS-Gazebo Bridge: simulates topics
- ROS-Gazebo Bridge → Odometry: provides state
- Odometry → SLAM Mapping: supplies odometry
- SLAM Mapping → Nav2 Navigation: provides map
- Operator → Nav2 Navigation: sets goal
- Mission Node → Mission Logic: runs mission (evidence: `ugv-project/src/ugv_autonomy/ugv_autonomy/mission_node.py`)
- Mission Logic → Sensor Localizer: uses localization (evidence: `ugv-project/src/ugv_autonomy/ugv_autonomy/mission.py`)
- Mission Logic → Obstacle Analysis: uses avoidance (evidence: `ugv-project/src/ugv_autonomy/ugv_autonomy/mission.py`)
- Mission Logic → Path Follower: uses path following (evidence: `ugv-project/src/ugv_autonomy/ugv_autonomy/mission.py`)
- Camera Perception → Sign Recognition: calls detector (evidence: `ugv-project/src/ugv_perception/ugv_perception/sign_detector_node.py`)
- Mission Node → Camera Perception: consumes detections
- Camera Perception → Target Detection: detects target
- Driver Station → Drive Logic: uses controls (evidence: `ugv-project/src/ugv_teleop/ugv_teleop/driver_station.py`)
- Remote Driver → Driver Station: operates (evidence: `ugv-project/src/ugv_teleop/ugv_teleop/driver_station.py`)
- Course Tester → Path Follower: uses follower (evidence: `ugv-project/src/ugv_course/ugv_course/course_tester_node.py`)
- Course Tester → Water Physics: uses water model (evidence: `ugv-project/src/ugv_course/ugv_course/course_tester_node.py`)
- Run Referee → Course Geometry: checks contacts (evidence: `ugv-project/src/ugv_course/ugv_course/referee.py`)
- Course Models → Gazebo Simulation: generates course
- System Launches → Gazebo Simulation: launches simulation
- System Launches → SLAM Mapping: launches mapping
- System Launches → Nav2 Navigation: launches navigation
- System Launches → Camera Perception: launches perception (evidence: `ugv-project/src/ugv_bringup/launch/perception.launch.py`)
- Moving Obstacle → Gazebo Simulation: animates obstacle
