# mogi-ros/week-1-8-cognitive-robotics architecture

> Architecture diagram of the GitHub repository mogi-ros/week-1-8-cognitive-robotics, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/mogi-ros/week-1-8-cognitive-robotics
- Repository: https://github.com/mogi-ros/week-1-8-cognitive-robotics

## Overview

This repository is a ROS 2 TurtleBot3 teaching project: it combines Gazebo worlds and robot launch configurations with classical and CNN-based line following, plus image capture and model training. The main user workflow is to launch a simulation or robot setup, provide camera frames to a line-follower node, and publish velocity commands; a separate learning workflow captures labeled images and trains a CNN. The graph shows relationships visible in the sampled launch and node code; unsampled wiring is omitted.

Main entry points: [`turtlebot3_mogi/launch/simulation_bringup_line_follow.launch.py`](https://github.com/mogi-ros/week-1-8-cognitive-robotics/blob/main/turtlebot3_mogi/launch/simulation_bringup_line_follow.launch.py) (Line-follow sim), [`turtlebot3_mogi/launch/simulation_bringup_navigation.launch.py`](https://github.com/mogi-ros/week-1-8-cognitive-robotics/blob/main/turtlebot3_mogi/launch/simulation_bringup_navigation.launch.py) (Map navigation sim), [`turtlebot3_mogi/launch/simulation_bringup_slam.launch.py`](https://github.com/mogi-ros/week-1-8-cognitive-robotics/blob/main/turtlebot3_mogi/launch/simulation_bringup_slam.launch.py) (SLAM sim), [`turtlebot3_mogi/launch/simulation_bringup_navigation_with_slam.launch.py`](https://github.com/mogi-ros/week-1-8-cognitive-robotics/blob/main/turtlebot3_mogi/launch/simulation_bringup_navigation_with_slam.launch.py) (SLAM navigation sim)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_simulation["Simulation assets"]
  node_worlds["Gazebo worlds"]
  node_gazebo_models["Gazebo models"]
  node_maps["Map assets"]
end

subgraph group_launch["Robot launch workflows"]
  node_sim_line["Line-follow sim"]
  node_sim_slam["SLAM sim"]
  node_sim_nav["Map navigation sim"]
  node_sim_nav_slam["SLAM navigation sim"]
  node_robot_nav["Robot navigation"]
  node_mapping["Robot mapping"]
  node_visualization["Robot visualization"]
end

subgraph group_control["Vision and control"]
  node_line_follower["Image line follower<br/>[line_follower.py]"]
  node_cnn_follower["CNN line follower"]
  node_robot_cnn["Robot CNN follower"]
end

subgraph group_learning["Model learning"]
  node_image_capture["Training image capture"]
  node_training_images["Training images"]
  node_trainer["CNN trainer<br/>[train_network.py]"]
  node_models["Trained models"]
  node_saved_images["Saved images"]
end

node_operator(("Operator"))
node_gazebo["Gazebo simulator"]
node_rviz["RViz"]
node_slam["SLAM Toolbox"]
node_navigation["Nav2"]
node_trajectory["Trajectory server"]
node_camera(("Robot camera"))
node_robot["TurtleBot3"]

node_operator -->|"launches"| node_sim_line
node_operator -->|"launches"| node_sim_slam
node_operator -->|"launches"| node_sim_nav
node_operator -->|"launches"| node_sim_nav_slam
node_sim_line -->|"includes simulator"| node_gazebo
node_sim_line -->|"adds resource path"| node_gazebo_models
node_sim_line -->|"starts"| node_rviz
node_sim_line -->|"starts"| node_trajectory
node_sim_slam -->|"includes"| node_slam
node_sim_slam -->|"starts"| node_rviz
node_sim_slam -->|"starts"| node_trajectory
node_sim_nav -->|"includes simulator"| node_gazebo
node_sim_nav -->|"loads map"| node_maps
node_sim_nav -->|"includes"| node_navigation
node_sim_nav -->|"starts"| node_rviz
node_sim_nav -->|"starts"| node_trajectory
node_sim_nav_slam -->|"includes simulator"| node_gazebo
node_sim_nav_slam -->|"includes"| node_slam
node_sim_nav_slam -->|"includes"| node_navigation
node_robot_nav -->|"includes"| node_slam
node_robot_nav -->|"starts"| node_trajectory
node_sim_line -->|"selects world"| node_worlds
node_camera -->|"publishes frames"| node_line_follower
node_line_follower -->|"publishes velocity"| node_robot
node_camera -->|"publishes frames"| node_cnn_follower
node_cnn_follower -->|"publishes velocity"| node_robot
node_camera -->|"publishes frames"| node_robot_cnn
node_robot_cnn -->|"publishes velocity"| node_robot
node_camera -->|"publishes frames"| node_image_capture
node_image_capture -->|"writes images"| node_saved_images
node_operator -.->|"runs training"| node_trainer
node_trainer -.->|"uses training data"| node_training_images
node_trainer -->|"saves checkpoints"| node_models

click node_worlds "https://github.com/mogi-ros/week-1-8-cognitive-robotics/tree/main/turtlebot3_mogi/worlds"
click node_gazebo_models "https://github.com/mogi-ros/week-1-8-cognitive-robotics/tree/main/turtlebot3_mogi/gazebo_models"
click node_maps "https://github.com/mogi-ros/week-1-8-cognitive-robotics/tree/main/turtlebot3_mogi/maps"
click node_sim_line "https://github.com/mogi-ros/week-1-8-cognitive-robotics/blob/main/turtlebot3_mogi/launch/simulation_bringup_line_follow.launch.py"
click node_sim_slam "https://github.com/mogi-ros/week-1-8-cognitive-robotics/blob/main/turtlebot3_mogi/launch/simulation_bringup_slam.launch.py"
click node_sim_nav "https://github.com/mogi-ros/week-1-8-cognitive-robotics/blob/main/turtlebot3_mogi/launch/simulation_bringup_navigation.launch.py"
click node_sim_nav_slam "https://github.com/mogi-ros/week-1-8-cognitive-robotics/blob/main/turtlebot3_mogi/launch/simulation_bringup_navigation_with_slam.launch.py"
click node_robot_nav "https://github.com/mogi-ros/week-1-8-cognitive-robotics/blob/main/turtlebot3_mogi/launch/robot_navigation.launch.py"
click node_mapping "https://github.com/mogi-ros/week-1-8-cognitive-robotics/blob/main/turtlebot3_mogi/launch/robot_mapping.launch.py"
click node_visualization "https://github.com/mogi-ros/week-1-8-cognitive-robotics/blob/main/turtlebot3_mogi/launch/robot_visualization.launch.py"
click node_line_follower "https://github.com/mogi-ros/week-1-8-cognitive-robotics/blob/main/turtlebot3_mogi_py/turtlebot3_mogi_py/line_follower.py"
click node_cnn_follower "https://github.com/mogi-ros/week-1-8-cognitive-robotics/blob/main/turtlebot3_mogi_py/turtlebot3_mogi_py/line_follower_cnn.py"
click node_robot_cnn "https://github.com/mogi-ros/week-1-8-cognitive-robotics/blob/main/turtlebot3_mogi_py/turtlebot3_mogi_py/line_follower_cnn_robot.py"
click node_image_capture "https://github.com/mogi-ros/week-1-8-cognitive-robotics/blob/main/turtlebot3_mogi_py/turtlebot3_mogi_py/save_training_images.py"
click node_training_images "https://github.com/mogi-ros/week-1-8-cognitive-robotics/tree/main/turtlebot3_mogi_py/training_images"
click node_trainer "https://github.com/mogi-ros/week-1-8-cognitive-robotics/blob/main/turtlebot3_mogi_py/turtlebot3_mogi_py/train_network.py"
click node_models "https://github.com/mogi-ros/week-1-8-cognitive-robotics/tree/main/turtlebot3_mogi_py/network_model"
click node_saved_images "https://github.com/mogi-ros/week-1-8-cognitive-robotics/tree/main/turtlebot3_mogi_py/saved_images"

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_worlds,node_gazebo_models,node_maps toneBlue
class node_sim_line,node_sim_slam,node_sim_nav,node_sim_nav_slam,node_robot_nav,node_mapping,node_visualization toneAmber
class node_line_follower,node_cnn_follower,node_robot_cnn,node_trajectory toneMint
class node_image_capture,node_training_images,node_trainer,node_models,node_saved_images toneRose
class node_operator,node_gazebo,node_rviz,node_slam,node_navigation,node_camera,node_robot toneIndigo
```

## Components

### Simulation assets

- [Gazebo worlds](https://github.com/mogi-ros/week-1-8-cognitive-robotics/tree/main/turtlebot3_mogi/worlds): `turtlebot3_mogi/worlds`
- [Gazebo models](https://github.com/mogi-ros/week-1-8-cognitive-robotics/tree/main/turtlebot3_mogi/gazebo_models): `turtlebot3_mogi/gazebo_models`
- [Map assets](https://github.com/mogi-ros/week-1-8-cognitive-robotics/tree/main/turtlebot3_mogi/maps): `turtlebot3_mogi/maps`

### Robot launch workflows

- [Line-follow sim](https://github.com/mogi-ros/week-1-8-cognitive-robotics/blob/main/turtlebot3_mogi/launch/simulation_bringup_line_follow.launch.py): `turtlebot3_mogi/launch/simulation_bringup_line_follow.launch.py`
- [SLAM sim](https://github.com/mogi-ros/week-1-8-cognitive-robotics/blob/main/turtlebot3_mogi/launch/simulation_bringup_slam.launch.py): `turtlebot3_mogi/launch/simulation_bringup_slam.launch.py`
- [Map navigation sim](https://github.com/mogi-ros/week-1-8-cognitive-robotics/blob/main/turtlebot3_mogi/launch/simulation_bringup_navigation.launch.py): `turtlebot3_mogi/launch/simulation_bringup_navigation.launch.py`
- [SLAM navigation sim](https://github.com/mogi-ros/week-1-8-cognitive-robotics/blob/main/turtlebot3_mogi/launch/simulation_bringup_navigation_with_slam.launch.py): `turtlebot3_mogi/launch/simulation_bringup_navigation_with_slam.launch.py`
- [Robot navigation](https://github.com/mogi-ros/week-1-8-cognitive-robotics/blob/main/turtlebot3_mogi/launch/robot_navigation.launch.py): `turtlebot3_mogi/launch/robot_navigation.launch.py`
- [Robot mapping](https://github.com/mogi-ros/week-1-8-cognitive-robotics/blob/main/turtlebot3_mogi/launch/robot_mapping.launch.py): `turtlebot3_mogi/launch/robot_mapping.launch.py`
- [Robot visualization](https://github.com/mogi-ros/week-1-8-cognitive-robotics/blob/main/turtlebot3_mogi/launch/robot_visualization.launch.py): `turtlebot3_mogi/launch/robot_visualization.launch.py`

### Vision and control

- [Image line follower](https://github.com/mogi-ros/week-1-8-cognitive-robotics/blob/main/turtlebot3_mogi_py/turtlebot3_mogi_py/line_follower.py): `turtlebot3_mogi_py/turtlebot3_mogi_py/line_follower.py`
- [CNN line follower](https://github.com/mogi-ros/week-1-8-cognitive-robotics/blob/main/turtlebot3_mogi_py/turtlebot3_mogi_py/line_follower_cnn.py): `turtlebot3_mogi_py/turtlebot3_mogi_py/line_follower_cnn.py`
- [Robot CNN follower](https://github.com/mogi-ros/week-1-8-cognitive-robotics/blob/main/turtlebot3_mogi_py/turtlebot3_mogi_py/line_follower_cnn_robot.py): `turtlebot3_mogi_py/turtlebot3_mogi_py/line_follower_cnn_robot.py`

### Model learning

- [Training image capture](https://github.com/mogi-ros/week-1-8-cognitive-robotics/blob/main/turtlebot3_mogi_py/turtlebot3_mogi_py/save_training_images.py): `turtlebot3_mogi_py/turtlebot3_mogi_py/save_training_images.py`
- [Training images](https://github.com/mogi-ros/week-1-8-cognitive-robotics/tree/main/turtlebot3_mogi_py/training_images): `turtlebot3_mogi_py/training_images`
- [CNN trainer](https://github.com/mogi-ros/week-1-8-cognitive-robotics/blob/main/turtlebot3_mogi_py/turtlebot3_mogi_py/train_network.py): `turtlebot3_mogi_py/turtlebot3_mogi_py/train_network.py`
- [Trained models](https://github.com/mogi-ros/week-1-8-cognitive-robotics/tree/main/turtlebot3_mogi_py/network_model): `turtlebot3_mogi_py/network_model`
- [Saved images](https://github.com/mogi-ros/week-1-8-cognitive-robotics/tree/main/turtlebot3_mogi_py/saved_images): `turtlebot3_mogi_py/saved_images`

### Other components

- **Operator**
- **Gazebo simulator**
- **RViz**
- **SLAM Toolbox**
- **Nav2**
- **Trajectory server**
- **Robot camera**
- **TurtleBot3**

## Connections

- Operator → Line-follow sim: launches (evidence: `turtlebot3_mogi/launch/simulation_bringup_line_follow.launch.py`)
- Operator → SLAM sim: launches (evidence: `turtlebot3_mogi/launch/simulation_bringup_slam.launch.py`)
- Operator → Map navigation sim: launches (evidence: `turtlebot3_mogi/launch/simulation_bringup_navigation.launch.py`)
- Operator → SLAM navigation sim: launches (evidence: `turtlebot3_mogi/launch/simulation_bringup_navigation_with_slam.launch.py`)
- Line-follow sim → Gazebo simulator: includes simulator (evidence: `turtlebot3_mogi/launch/simulation_bringup_line_follow.launch.py`)
- Line-follow sim → Gazebo models: adds resource path (evidence: `turtlebot3_mogi/launch/simulation_bringup_line_follow.launch.py`)
- Line-follow sim → RViz: starts (evidence: `turtlebot3_mogi/launch/simulation_bringup_line_follow.launch.py`)
- Line-follow sim → Trajectory server: starts (evidence: `turtlebot3_mogi/launch/simulation_bringup_line_follow.launch.py`)
- SLAM sim → SLAM Toolbox: includes (evidence: `turtlebot3_mogi/launch/simulation_bringup_slam.launch.py`)
- SLAM sim → RViz: starts (evidence: `turtlebot3_mogi/launch/simulation_bringup_slam.launch.py`)
- SLAM sim → Trajectory server: starts (evidence: `turtlebot3_mogi/launch/simulation_bringup_slam.launch.py`)
- Map navigation sim → Gazebo simulator: includes simulator (evidence: `turtlebot3_mogi/launch/simulation_bringup_navigation.launch.py`)
- Map navigation sim → Map assets: loads map (evidence: `turtlebot3_mogi/launch/simulation_bringup_navigation.launch.py`)
- Map navigation sim → Nav2: includes (evidence: `turtlebot3_mogi/launch/simulation_bringup_navigation.launch.py`)
- Map navigation sim → RViz: starts (evidence: `turtlebot3_mogi/launch/simulation_bringup_navigation.launch.py`)
- Map navigation sim → Trajectory server: starts (evidence: `turtlebot3_mogi/launch/simulation_bringup_navigation.launch.py`)
- SLAM navigation sim → Gazebo simulator: includes simulator (evidence: `turtlebot3_mogi/launch/simulation_bringup_navigation_with_slam.launch.py`)
- SLAM navigation sim → SLAM Toolbox: includes (evidence: `turtlebot3_mogi/launch/simulation_bringup_navigation_with_slam.launch.py`)
- SLAM navigation sim → Nav2: includes (evidence: `turtlebot3_mogi/launch/simulation_bringup_navigation_with_slam.launch.py`)
- Robot navigation → SLAM Toolbox: includes (evidence: `turtlebot3_mogi/launch/robot_navigation.launch.py`)
- Robot navigation → Trajectory server: starts (evidence: `turtlebot3_mogi/launch/robot_navigation.launch.py`)
- Line-follow sim → Gazebo worlds: selects world (evidence: `turtlebot3_mogi/launch/simulation_bringup_line_follow.launch.py`)
- Robot camera → Image line follower: publishes frames (evidence: `turtlebot3_mogi_py/turtlebot3_mogi_py/line_follower.py`)
- Image line follower → TurtleBot3: publishes velocity (evidence: `turtlebot3_mogi_py/turtlebot3_mogi_py/line_follower.py`)
- Robot camera → CNN line follower: publishes frames (evidence: `turtlebot3_mogi_py/turtlebot3_mogi_py/line_follower_cnn.py`)
- CNN line follower → TurtleBot3: publishes velocity (evidence: `turtlebot3_mogi_py/turtlebot3_mogi_py/line_follower_cnn.py`)
- Robot camera → Robot CNN follower: publishes frames (evidence: `turtlebot3_mogi_py/turtlebot3_mogi_py/line_follower_cnn_robot.py`)
- Robot CNN follower → TurtleBot3: publishes velocity (evidence: `turtlebot3_mogi_py/turtlebot3_mogi_py/line_follower_cnn_robot.py`)
- Robot camera → Training image capture: publishes frames (evidence: `turtlebot3_mogi_py/turtlebot3_mogi_py/save_training_images.py`)
- Training image capture → Saved images: writes images (evidence: `turtlebot3_mogi_py/turtlebot3_mogi_py/save_training_images.py`)
- Operator → CNN trainer: runs training
- CNN trainer → Training images: uses training data
- CNN trainer → Trained models: saves checkpoints (evidence: `turtlebot3_mogi_py/turtlebot3_mogi_py/train_network.py`)
