fix(documentation): Rename ALL node mentions to TILMANN naming conventions

This commit is contained in:
2025-10-09 21:49:12 +02:00
parent fbb3600c2c
commit a019e9033b
16 changed files with 50 additions and 48 deletions

View File

@@ -23,7 +23,7 @@ The system consists of multiple ROS2 nodes that communicate through standardized
### Core Nodes
#### 1. FinalGradeDeterminator Node
**Namespace**: `assignments::one::final_grade_determinator`
**Namespace**: `assignments::one::g2_2025_final_grade_determinator_node`
**Brief Description**: Collects exam results, triggers grade calculation when thresholds are met, and stores final grades.
@@ -32,7 +32,7 @@ The system consists of multiple ROS2 nodes that communicate through standardized
*For detailed documentation, see: [FinalGradeDeterminator.md](nodes/FinalGradeDeterminator.md)*
#### 2. GradeCalculator Node
**Namespace**: `assignments::one::grade_calculator`
**Namespace**: `assignments::one::g2_2025_grade_calculator_node`
**Brief Description**: Provides grade calculation service with business logic including bonus points and grade validation.
@@ -41,7 +41,7 @@ The system consists of multiple ROS2 nodes that communicate through standardized
*For detailed documentation, see: [GradeCalculator.md](nodes/GradeCalculator.md)*
#### 3. ExamResultGenerator Node
**Namespace**: `assignments::one::exam_result_generator`
**Namespace**: `assignments::one::g2_2025_exam_result_generator_node`
**Brief Description**: Simulates exam result generation by maintaining a queue of student-course combinations and publishing random grades.
@@ -50,7 +50,7 @@ The system consists of multiple ROS2 nodes that communicate through standardized
*For detailed documentation, see: [ExamResultGenerator.md](nodes/ExamResultGenerator.md)*
#### 4. RetakeScheduler Node
**Namespace**: `assignments::one::retake_scheduler`
**Namespace**: `assignments::one::g2_2025_retake_scheduler_node`
**Brief Description**: Manages retake exam scheduling and coordination for students who need to retake exams.
@@ -59,7 +59,7 @@ The system consists of multiple ROS2 nodes that communicate through standardized
*For detailed documentation, see: [RetakeScheduler.md](nodes/RetakeScheduler.md)*
#### 5. RetakeGradeDeterminator Node
**Namespace**: `assignments::one::retake_grade_determinator`
**Namespace**: `assignments::one::g2_2025_retake_grade_determinator_node`
**Brief Description**: Handles grade calculation and processing specifically for retake exams.

View File

@@ -1,12 +1,12 @@
# ROS2 Interface Definitions - g2_2025_interfaces
# ROS2 Interface Definitions - g2_2025_assign1_interfaces_pkg
## Package Overview
This document describes the custom ROS2 interface definitions in the `g2_2025_interfaces` package. These interfaces provide standardized communication protocols for the TI Minor Grade Generator system.
This document describes the custom ROS2 interface definitions in the `g2_2025_assign1_interfaces_pkg` package. These interfaces provide standardized communication protocols for the TI Minor Grade Generator system.
**Package Name**: `g2_2025_interfaces`
**Package Name**: `g2_2025_assign1_interfaces_pkg`
**Interface Types**: Messages, Services, Actions
**Location**: `src/g2_2025_interfaces/`
**Location**: `src/g2_2025_assign1_interfaces_pkg/`
## Message Types (.msg)
@@ -114,37 +114,37 @@ string status
**Publishers**:
- **Topic**: `exam_results`
- **Message Type**: `g2_2025_interfaces::msg::Exam`
- **Message Type**: `g2_2025_assign1_interfaces_pkg::msg::Exam`
- **Purpose**: Publishes generated exam results to downstream processing nodes
- **Rate**: Configurable interval (default: 2 seconds)
**Subscribers**:
- **Topic**: `student_course_management`
- **Message Type**: `g2_2025_interfaces::msg::Student`
- **Message Type**: `g2_2025_assign1_interfaces_pkg::msg::Student`
- **Purpose**: Receives student-course enrollment updates for exam generation queue
### FinalGradeDeterminator Node
**Subscribers**:
- **Topic**: `exam_results`
- **Message Type**: `g2_2025_interfaces::msg::Exam`
- **Message Type**: `g2_2025_assign1_interfaces_pkg::msg::Exam`
- **Purpose**: Collects exam results for grade calculation processing
**Service Clients**:
- **Service**: `calculate_grade`
- **Service Type**: `g2_2025_interfaces::srv::Exams`
- **Service Type**: `g2_2025_assign1_interfaces_pkg::srv::Exams`
- **Purpose**: Requests grade calculation from GradeCalculator when threshold is met
**Publishers**:
- **Topic**: `student_course_management`
- **Message Type**: `g2_2025_interfaces::msg::Student`
- **Message Type**: `g2_2025_assign1_interfaces_pkg::msg::Student`
- **Purpose**: Communicate end of enrollment when grade has been calculated
### GradeCalculator Node
**Service Servers**:
- **Service**: `calculate_grade`
- **Service Type**: `g2_2025_interfaces::srv::Exams`
- **Service Type**: `g2_2025_assign1_interfaces_pkg::srv::Exams`
- **Purpose**: Provides grade calculation services for multiple exam grades
- **Processing**: Applies business logic (averaging, bonus points, validation)
@@ -152,7 +152,7 @@ string status
**Action Servers**:
- **Action**: `retake_request`
- **Action Type**: `g2_2025_interfaces::action::Retake`
- **Action Type**: `g2_2025_assign1_interfaces_pkg::action::Retake`
- **Purpose**: Handles long-running retake scheduling operations
- **Feedback**: Provides progress updates during scheduling process
@@ -160,10 +160,10 @@ string status
**Service Clients**:
- **Service**: `calculate_grade`
- **Service Type**: `g2_2025_interfaces::srv::Exams`
- **Service Type**: `g2_2025_assign1_interfaces_pkg::srv::Exams`
- **Purpose**: Requests specialized retake grade calculations
**Subscribers**:
- **Topic**: `retake_results`
- **Message Type**: `g2_2025_interfaces::msg::Exam`
- **Message Type**: `g2_2025_assign1_interfaces_pkg::msg::Exam`
- **Purpose**: Processes completed retake exam results

View File

@@ -1,4 +1,4 @@
# ExamResultGenerator (`assignments::one::exam_result_generator`)
# ExamResultGenerator (`assignments::one::g2_2025_exam_result_generator_node`)
## Overview
The `ExamResultGenerator` is the core node responsible for simulating exam result generation.
@@ -15,7 +15,7 @@ grades, and publishes them to the system.
```cpp
ExamResultGenerator()
```
- Initializes ROS2 node with name `exam_result_generator`
- Initializes ROS2 node with name `g2_2025_exam_result_generator_node`
- Sets up random number generation infrastructure
- Creates DatabaseManager instance with node logger
- Establishes ROS2 publishers, subscribers, and timers
@@ -33,7 +33,7 @@ ExamResultGenerator()
- Selects random student-course combination from queue
- Stores result in database and publishes to ROS2 topic
**`void student_management_callback(const g2_2025_interfaces::msg::Student::SharedPtr msg)`**
**`void student_management_callback(const g2_2025_assign1_interfaces_pkg::msg::Student::SharedPtr msg)`**
- Toggles combinations in/out of processing queue
- Updates database with new enrollments

View File

@@ -1,4 +1,4 @@
# FinalGradeDeterminator (`assignments::one::final_grade_determinator`)
# FinalGradeDeterminator (`assignments::one::g2_2025_final_grade_determinator_node`)
## Overview
The `FinalGradeDeterminator` node collects exam results for student-course combinations, triggers grade calculation when enough results are gathered, and stores final grades in the database. It interacts with ROS2 publishers, subscribers, and service clients to manage the grading workflow.
@@ -13,7 +13,7 @@ The `FinalGradeDeterminator` node collects exam results for student-course combi
```cpp
FinalGradeDeterminator()
```
- Initializes ROS2 node with name `final_grade_determinator`
- Initializes ROS2 node with name `g2_2025_final_grade_determinator_node`
- Declares and retrieves `grade_collection_amount` parameter
- Sets up `DatabaseManager`
- Creates publisher for student course management
@@ -22,7 +22,7 @@ FinalGradeDeterminator()
**Core Functions**
**`void exam_results_callback(const g2_2025_interfaces::msg::Exam::SharedPtr msg)`**
**`void exam_results_callback(const g2_2025_assign1_interfaces_pkg::msg::Exam::SharedPtr msg)`**
- Updates internal map with received exam result for student-course combo
- Checks if enough results have been collected
- Triggers grade calculation request when threshold is met
@@ -32,7 +32,7 @@ FinalGradeDeterminator()
- Sends async request with collected exam grades for the student-course combination
- Uses callback to handle service response
**`void grade_calculator_response(rclcpp::Client<g2_2025_interfaces::srv::Exams>::SharedFuture future, StudentCourse studentCourseCombo)`**
**`void grade_calculator_response(rclcpp::Client<g2_2025_assign1_interfaces_pkg::srv::Exams>::SharedFuture future, StudentCourse studentCourseCombo)`**
- Verifies database connection
- Publishes final student message to ROS2 topic
- Logs final grade information

View File

@@ -1,4 +1,4 @@
# GradeCalculator (`assignments::one::grade_calculator::GradeCalculator`)
# GradeCalculator (`assignments::one::g2_2025_grade_calculator_node::GradeCalculator`)
## Overview
The `GradeCalculator` node provides a ROS2 service for calculating student exam grades. It processes exam scores, applies custom logic for specific student names, and ensures grade results are within valid bounds.
@@ -9,7 +9,7 @@ The `GradeCalculator` node provides a ROS2 service for calculating student exam
```cpp
GradeCalculator()
```
- Initializes ROS2 node with name `grade_calculator`
- Initializes ROS2 node with name `g2_2025_grade_calculator_node`
- Creates a ROS2 service server for `grade_calculator_service`
- Binds the service callback to handle grade calculation requests
- Logs service startup

View File

@@ -1,4 +1,4 @@
# RetakeGradeDeterminator (`assignments::one::retake_grade_determinator`)
# RetakeGradeDeterminator (`assignments::one::g2_2025_retake_grade_determinator_node`)
## Overview
The `RetakeGradeDeterminator` node handles the processing of retake exams for students who have
@@ -16,7 +16,7 @@ final retake grades.
```cpp
RetakeGradeDeterminator(std::unique_ptr<DatabaseManager> db_manager = nullptr)
```
- Initializes ROS2 node with name `retake_grade_determinator`
- Initializes ROS2 node with name `g2_2025_retake_grade_determinator_node`
- Sets up `DatabaseManager` (optional injection for testing)
- Creates publisher for student course management
- Subscribes to exam results topic with retake-specific callback
@@ -25,7 +25,7 @@ RetakeGradeDeterminator(std::unique_ptr<DatabaseManager> db_manager = nullptr)
**Core Functions**
**`void exam_results_callback(const g2_2025_interfaces::msg::Exam::SharedPtr msg)`**
**`void exam_results_callback(const g2_2025_assign1_interfaces_pkg::msg::Exam::SharedPtr msg)`**
- Only processes exam results when `retake_allowed_` flag is true
- Triggers grade calculation request when threshold is met
@@ -33,7 +33,7 @@ RetakeGradeDeterminator(std::unique_ptr<DatabaseManager> db_manager = nullptr)
- Waits for grade calculator service to be available
- Sends async request with collected retake exam grades
**`void grade_calculator_response(rclcpp::Client<g2_2025_interfaces::srv::Exams>::SharedFuture future, StudentCourse studentCourseCombo)`**
**`void grade_calculator_response(rclcpp::Client<g2_2025_assign1_interfaces_pkg::srv::Exams>::SharedFuture future, StudentCourse studentCourseCombo)`**
- Clears collected exam data from internal map
- Updates retake status in database for the student-course combination
- Publishes final student message to ROS2 topic with timestamp
@@ -41,20 +41,20 @@ RetakeGradeDeterminator(std::unique_ptr<DatabaseManager> db_manager = nullptr)
**Action Server Callbacks**
**`rclcpp_action::GoalResponse goal_callback(const rclcpp_action::GoalUUID& uuid, std::shared_ptr<const g2_2025_interfaces::action::Retake::Goal> goal)`**
**`rclcpp_action::GoalResponse goal_callback(const rclcpp_action::GoalUUID& uuid, std::shared_ptr<const g2_2025_assign1_interfaces_pkg::action::Retake::Goal> goal)`**
- Accepts retake goal requests for specific student-course combinations
- Logs received retake requests with student and course information
- Returns `ACCEPT_AND_EXECUTE` for all valid requests
**`rclcpp_action::CancelResponse cancel_callback(const std::shared_ptr<rclcpp_action::ServerGoalHandle<g2_2025_interfaces::action::Retake>> goal_handle)`**
**`rclcpp_action::CancelResponse cancel_callback(const std::shared_ptr<rclcpp_action::ServerGoalHandle<g2_2025_assign1_interfaces_pkg::action::Retake>> goal_handle)`**
- Handles retake action cancellation requests
- Returns `ACCEPT` for all cancellation requests
**`void spawn_callback_thread(const std::shared_ptr<rclcpp_action::ServerGoalHandle<g2_2025_interfaces::action::Retake>> goal_handle)`**
**`void spawn_callback_thread(const std::shared_ptr<rclcpp_action::ServerGoalHandle<g2_2025_assign1_interfaces_pkg::action::Retake>> goal_handle)`**
- Creates detached thread for asynchronous retake action execution
- Ensures non-blocking retake processing
**`void async_execute_callback_thread(const std::shared_ptr<rclcpp_action::ServerGoalHandle<g2_2025_interfaces::action::Retake>> goal_handle)`**
**`void async_execute_callback_thread(const std::shared_ptr<rclcpp_action::ServerGoalHandle<g2_2025_assign1_interfaces_pkg::action::Retake>> goal_handle)`**
- Enables retake exam processing by setting `retake_allowed_` flag
- Publishes student enrollment message to trigger exam generation
- Creates and returns successful action result

View File

@@ -1,4 +1,4 @@
# RetakeScheduler (`assignments::one::retake_scheduler`)
# RetakeScheduler (`assignments::one::g2_2025_retake_scheduler_node`)
## Overview
The `RetakeScheduler` node automatically identifies students who have failed courses and schedules retake exams for them. It periodically queries the database for failing students and sends retake action requests to the `RetakeGradeDeterminator` node to initiate the retake process.
@@ -13,7 +13,7 @@ The `RetakeScheduler` node automatically identifies students who have failed cou
```cpp
RetakeScheduler(std::unique_ptr<DatabaseManager> db_manager = nullptr)
```
- Initializes ROS2 node with name `retake_scheduler`
- Initializes ROS2 node with name `g2_2025_retake_scheduler_node`
- Sets up `DatabaseManager` (optional injection for testing)
- Creates ROS2 action client for retake action communication
- Initializes wall timer for periodic failing student checks

View File

@@ -20,7 +20,9 @@ cd ros2-assignments
### Build the Workspace
```bash
colcon build
colcon build --packages-select g2_2025_assign1_interfaces_pkg
source install/setup.bash
colcon build --packages-select g2_2025_assign1_pkg
```
Any parameters can be changed before building by editing the `grade_calculator.launch.xml` in the launch folder
@@ -38,6 +40,6 @@ You can configure specific database settings in the `docker-compose.yaml` in the
### Start the Grade calculator program
```bash
ros2 launch g2_2025_grade_calculator_pkg grade_calculator.launch.xml
ros2 launch g2_2025_assign1_pkg grade_calculator.launch.xml
```
To change parameters when using the launch file it will need to be edited in the `src/g2_2025_grade_calculator_pkg/launch` folder. All parameters are already added to this document and thus only the values will need to be changed
To change parameters when using the launch file it will need to be edited in the `src/g2_2025_assign1_pkg/launch` folder. All parameters are already added to this document and thus only the values will need to be changed

View File

@@ -1,6 +1,6 @@
# Config Manager Unit Tests
Unit tests for `ConfigManager` are implemented in `src/g2_2025_grade_calculator_pkg/test/ConfigManager.test.cpp` using Google Test and ROS2 test utilities. The tests use temporary TOML files to validate configuration loading and parsing functionality.
Unit tests for `ConfigManager` are implemented in `src/g2_2025_assign1_pkg/test/ConfigManager.test.cpp` using Google Test and ROS2 test utilities. The tests use temporary TOML files to validate configuration loading and parsing functionality.
## Test Cases

View File

@@ -1,6 +1,6 @@
# Database Manager Unit Tests
Unit tests for `DatabaseManager` are implemented in `src/g2_2025_grade_calculator_pkg/test/DatabaseManager.test.cpp` using Google Test and ROS2 test utilities. The tests are designed to work reliably whether a database connection is available or not, focusing on error handling and method behavior validation.
Unit tests for `DatabaseManager` are implemented in `src/g2_2025_assign1_pkg/test/DatabaseManager.test.cpp` using Google Test and ROS2 test utilities. The tests are designed to work reliably whether a database connection is available or not, focusing on error handling and method behavior validation.
## Test Cases

View File

@@ -1,6 +1,6 @@
# Exam Result Generator Node Unit Tests
Unit tests for `ExamResultGenerator` are implemented in `src/g2_2025_grade_calculator_pkg/test/ExamResultGenerator.test.cpp` using Google Test and ROS2 test utilities. The tests use a test subscriber node to capture published messages and validate node behavior.
Unit tests for `ExamResultGenerator` are implemented in `src/g2_2025_assign1_pkg/test/ExamResultGenerator.test.cpp` using Google Test and ROS2 test utilities. The tests use a test subscriber node to capture published messages and validate node behavior.
## Test Cases

View File

@@ -1,6 +1,6 @@
# Final Grade Determintator Node Unit Tests
Unit tests for `FinalGradeDeterminator` are implemented in `src/g2_2025_grade_calculator_pkg/test/FinalGradeDeterminator.test.cpp` using Google Test and ROS2 test utilities. The tests use a mock database manager and a mock grade calculator service to simulate the node's interactions.
Unit tests for `FinalGradeDeterminator` are implemented in `src/g2_2025_assign1_pkg/test/FinalGradeDeterminator.test.cpp` using Google Test and ROS2 test utilities. The tests use a mock database manager and a mock grade calculator service to simulate the node's interactions.
## Test Cases

View File

@@ -1,6 +1,6 @@
# Grade Calculator Node Unit Tests
Unit tests for `GradeCalculator` are implemented in `src/g2_2025_grade_calculator_pkg/test/GradeCalculator.test.cpp` using Google Test and ROS2 test utilities. The tests use a client to call the grade calculation service and verify the results.
Unit tests for `GradeCalculator` are implemented in `src/g2_2025_assign1_pkg/test/GradeCalculator.test.cpp` using Google Test and ROS2 test utilities. The tests use a client to call the grade calculation service and verify the results.
## Test Cases

View File

@@ -135,7 +135,7 @@ colcon build && source install/setup.bash
sudo docker container prune && sudo docker compose up
# 4. Launch all system nodes
ros2 launch g2_2025_grade_calculator_pkg grade_calculator.launch.xml
ros2 launch g2_2025_assign1_pkg grade_calculator.launch.xml
# 6. Monitor database state
By opening dbeaver and connecting to the database "grades".

View File

@@ -1,6 +1,6 @@
# RetakeGradeDeterminator Node Unit Tests
This document describes the unit tests for the `RetakeGradeDeterminator` ROS 2 node, as implemented in [`RetakeGradeDeterminator.test.cpp`](../../src/g2_2025_grade_calculator_pkg/test/RetakeGradeDeterminator.test.cpp).
This document describes the unit tests for the `RetakeGradeDeterminator` ROS 2 node, as implemented in [`RetakeGradeDeterminator.test.cpp`](../../src/g2_2025_assign1_pkg/test/RetakeGradeDeterminator.test.cpp).
## Test Cases

View File

@@ -1,6 +1,6 @@
# RetakeScheduler Node Unit Tests
Unit tests for `RetakeScheduler` are implemented in `src/g2_2025_grade_calculator_pkg/test/RetakeScheduler.test.cpp`
Unit tests for `RetakeScheduler` are implemented in `src/g2_2025_assign1_pkg/test/RetakeScheduler.test.cpp`
The unit tests are written using Google Test and ROS 2 test utilities. They utilize clients to interact
with the RetakeScheduler node's services and actions, verifying correct behavior and expected outcomes.