generated from wessel/boilerplate
feat(final_grade_determinator): Add base
add basic files for start nodes final_grade_determinator and grade_calculator
This commit is contained in:
@@ -2,36 +2,19 @@
|
||||
* Action server node template for ROS2
|
||||
*
|
||||
* Node description:
|
||||
* Template action server that demonstrates action server implementation
|
||||
* with goal handling, feedback publishing, and cancellation support
|
||||
*
|
||||
* Reviewed by: <x>
|
||||
* Changelog:
|
||||
* [04-09-2025] Wessel T: Implement template
|
||||
*/
|
||||
|
||||
#include <cstdlib>
|
||||
|
||||
#include "rclcpp/rclcpp.hpp"
|
||||
|
||||
namespace lessons::zero::tmp {
|
||||
|
||||
class NodeTemplate : public rclcpp::Node {
|
||||
public:
|
||||
NodeTemplate()
|
||||
: Node("node_template")
|
||||
{
|
||||
}
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
} // namespace lessons::zero::template
|
||||
#include "nodes/FinalGradeDeterminator.hpp"
|
||||
|
||||
int main(int argc,char *argv[]) {
|
||||
rclcpp::init(argc,argv);
|
||||
|
||||
auto node = std::make_shared<lessons::zero::tmp::NodeTemplate>();
|
||||
auto node = std::make_shared<assignments::one::final_grade_determinator::FinalGradeDeterminator>();
|
||||
|
||||
rclcpp::spin(node);
|
||||
rclcpp::shutdown();
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
#include "FinalGradeDeterminator.hpp"
|
||||
|
||||
namespace assignments::one::final_grade_determinator {
|
||||
|
||||
FinalGradeDeterminator::FinalGradeDeterminator() : Node("final_grade_determinator") {
|
||||
|
||||
|
||||
// Create publisher for exam results
|
||||
student_publisher_ = this->create_publisher<g2_2025_interfaces::msg::Student>("student_course_management", 10);
|
||||
|
||||
// Create subscriber for adding/removing student/course combinations
|
||||
exam_subscriber_ = this->create_subscription<g2_2025_interfaces::msg::Exam>(
|
||||
"exam_results", 10,
|
||||
std::bind(
|
||||
&ExamResultGenerator::exam_results_callback,
|
||||
this,
|
||||
std::placeholders::_1
|
||||
)
|
||||
);
|
||||
|
||||
exam_service_client_= this->create_client<g2_2025_interfaces::srv::Exams>("grade_calculator_service");
|
||||
}
|
||||
|
||||
void FinalGradeDeterminator::exam_results_callback(const g2_2025_interfaces::msg::Exam::SharedPtr msg){
|
||||
dataMap_[{ msg->student_name, msg->course_name}].push_back(msg->result);
|
||||
if (dataMap_[{ msg->student_name, msg->course_name}].size() = PARAM)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void FinalGradeDeterminator::grade_calculator_response(rclcpp::Client<g2_2025_interfaces::srv::Exams>::SharedFuture future){
|
||||
auto response = future.get();
|
||||
StudentCourse passthrough;
|
||||
passthrough.
|
||||
db_manager_->store_final_course_result()
|
||||
}
|
||||
|
||||
} // namespace assignments::one::final_grade_determinator
|
||||
@@ -0,0 +1,38 @@
|
||||
#pragma once
|
||||
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <random>
|
||||
#include <vector>
|
||||
|
||||
#include "rclcpp/rclcpp.hpp"
|
||||
#include "g2_2025_interfaces/msg/exam.hpp"
|
||||
#include "g2_2025_interfaces/msg/student.hpp"
|
||||
#include "g2_2025_interfaces/srv/exams.hpp"
|
||||
|
||||
#include "database/DatabaseManager.hpp"
|
||||
#include "database/StudentCourse.hpp"
|
||||
|
||||
#define PARAM 5
|
||||
|
||||
namespace assignments::one::final_grade_determinator {
|
||||
|
||||
class FinalGradeDeterminator : public rclcpp::Node {
|
||||
public:
|
||||
FinalGradeDeterminator();
|
||||
private:
|
||||
rclcpp::Subscription<g2_2025_interfaces::msg::Exam>::SharedPtr exam_subscriber_;
|
||||
rclcpp::Publisher<g2_2025_interfaces::msg::Student>::SharedPtr student_publisher_;
|
||||
|
||||
rclcpp::Client<g2_2025_interfaces::srv::Exams>::SharedPtr exam_service_client_;
|
||||
|
||||
std::unique_ptr<DatabaseManager> db_manager_;
|
||||
|
||||
std::map<std::pair<std::string, std::string>, std::vector<int>> dataMap_;
|
||||
|
||||
|
||||
|
||||
void exam_results_callback(const g2_2025_interfaces::msg::Exam::SharedPtr msg);
|
||||
void grade_calculator_response(rclcpp::Client<g2_2025_interfaces::srv::Exams>::SharedFuture future)
|
||||
};
|
||||
} // namespace assignments::one::final_grade_determinator
|
||||
@@ -10,28 +10,13 @@
|
||||
* [04-09-2025] Wessel T: Implement template
|
||||
*/
|
||||
|
||||
#include <cstdlib>
|
||||
|
||||
#include "rclcpp/rclcpp.hpp"
|
||||
|
||||
namespace lessons::zero::tmp {
|
||||
|
||||
class NodeTemplate : public rclcpp::Node {
|
||||
public:
|
||||
NodeTemplate()
|
||||
: Node("node_template")
|
||||
{
|
||||
}
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
} // namespace lessons::zero::template
|
||||
#include "nodes/GradeCalculator.hpp"
|
||||
|
||||
int main(int argc,char *argv[]) {
|
||||
rclcpp::init(argc,argv);
|
||||
|
||||
auto node = std::make_shared<lessons::zero::tmp::NodeTemplate>();
|
||||
auto node = std::make_shared<assignments::one::grade_calculator::GradeCalculator>();
|
||||
|
||||
rclcpp::spin(node);
|
||||
rclcpp::shutdown();
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
#include "GradeCalculator.hpp"
|
||||
|
||||
namespace assignments::one::grade_calculator
|
||||
{
|
||||
GradeCalculator::GradeCalculator() : Node("grade_calculator"){
|
||||
grade_calculator_serviceserver_ = this -> create_service<g2_2025_interfaces::srv::Exams>("grade_calculator_service",
|
||||
std::bind(&GradeCalculator::grade_calculator_callback,this,std::placeholders::_1,std::placeholders::_2));
|
||||
}
|
||||
} // namespace assignments::one::grade_calculator
|
||||
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
#pragma once
|
||||
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <random>
|
||||
#include <vector>
|
||||
|
||||
#include "rclcpp/rclcpp.hpp"
|
||||
#include "g2_2025_interfaces/msg/exam.hpp"
|
||||
#include "g2_2025_interfaces/msg/student.hpp"
|
||||
#include "g2_2025_interfaces/srv/exams.hpp"
|
||||
|
||||
|
||||
namespace assignments::one::grade_calculator {
|
||||
|
||||
class GradeCalculator : public rclcpp::Node {
|
||||
public:
|
||||
GradeCalculator();
|
||||
private:
|
||||
rclcpp::Service<g2_2025_interfaces::srv::Exams>::SharedPtr grade_calculator_serviceserver_;
|
||||
|
||||
void grade_calculator_callback(const g2_2025_interfaces::msg::Exam::SharedPtr msg);
|
||||
};
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user