Prepare files for public release

This commit is contained in:
2026-01-24 10:45:51 -05:00
parent 9898e6c975
commit 048e39016a
41 changed files with 2641 additions and 0 deletions

View File

@@ -0,0 +1,28 @@
#ifndef CONTROL_ACTUATOR_H
#define CONTROL_ACTUATOR_H
#include <cstdint>
#include "Module.h"
#include "flatbuffers_generated/RobotModule_generated.h"
#include "flatbuffers_generated/TopologyMessage_generated.h"
class Actuator : public Module {
public:
explicit Actuator(uint8_t device_id) : Module(device_id) {};
Actuator(uint8_t device_id, ModuleType module_type) : Module(device_id, module_type) {};
Actuator(uint8_t device_id, ModuleType module_type, Messaging::ConnectionType connection_type,
uint8_t leader)
: Module(device_id, module_type, connection_type, leader) {};
protected:
virtual std::vector<uint8_t> get_actuation_message() = 0;
private:
[[noreturn]] void actuator_tx_loop();
};
#endif // CONTROL_MODULE_H

View File

@@ -0,0 +1,37 @@
//
// Created by Johnathon Slightham on 2025-11-13.
//
#ifndef CONTROL_BOUNDED1DPOSITIONALACTUATOR_H
#define CONTROL_BOUNDED1DPOSITIONALACTUATOR_H
#include "actuators/Actuator.h"
#include "flatbuffers/AngleControlMessageBuilder.h"
#include "flatbuffers/SensorMessageBuilder.h"
class BoundedPositionalActuator1D : public Actuator {
public:
BoundedPositionalActuator1D(uint8_t device_id, ModuleType type, double max_value,
double min_value, double initial_position)
: Actuator(device_id, type), m_target_position(initial_position), m_max_value(max_value),
m_min_value(min_value),
acm_builder(std::make_unique<Flatbuffers::AngleControlMessageBuilder>()) {
}
double get_position() override;
void actuate(double position) override;
void actuate(double x, double y) override; // no-op
std::vector<uint8_t> get_actuation_message() override;
void update_sensor_data(const Flatbuffers::sensor_value &value) override;
private:
double m_current_position = 0;
double m_target_position;
double m_max_value;
double m_min_value;
std::unique_ptr<Flatbuffers::AngleControlMessageBuilder> acm_builder;
};
#endif // CONTROL_1DPOSITIONALACTUATOR_H

View File

@@ -0,0 +1,34 @@
//
// Created by Johnathon Slightham on 2025-11-13.
//
#ifndef CONTROL_1DPOSITIONALACTUATOR_H
#define CONTROL_1DPOSITIONALACTUATOR_H
#include "actuators/Actuator.h"
#include "flatbuffers/AngleControlMessageBuilder.h"
#include "flatbuffers/SensorMessageBuilder.h"
class PositionalActuator1D final : public Actuator {
public:
PositionalActuator1D(uint8_t device_id, ModuleType type)
: Actuator(device_id, type),
m_acm_builder(std::make_unique<Flatbuffers::AngleControlMessageBuilder>()) {};
double get_position() override;
void actuate(double position) override;
void actuate(double x, double y) override; // no-op
std::vector<uint8_t> get_actuation_message() override;
void update_sensor_data(const Flatbuffers::sensor_value &value) override;
private:
void update_loop();
double m_target_position = 0;
double m_current_position = 0;
double m_board_target_position = 0;
std::unique_ptr<Flatbuffers::AngleControlMessageBuilder> m_acm_builder;
};
#endif // CONTROL_1DPOSITIONALACTUATOR_H