libstp
Robotics library for Botball
Loading...
Searching...
No Matches
TransportWriter.hpp
Go to the documentation of this file.
1#pragma once
2
4
5#include <raccoon/Channels.h>
6#include <raccoon/vector3f_t.hpp>
7#include <raccoon/scalar_i8_t.hpp>
8#include <raccoon/scalar_i32_t.hpp>
9#include <raccoon/scalar_f_t.hpp>
10#include <raccoon/orientation_matrix_t.hpp>
11#include <raccoon/kinematics_config_t.hpp>
12
13#include <array>
14
15#include <string>
16
18{
25 class TransportWriter
26 {
27 public:
28 static TransportWriter& instance()
29 {
30 static TransportWriter writer;
31 return writer;
32 }
33
35 void setMotorMode(uint8_t port, int mode);
37 void setMotor(uint8_t port, int valueData);
39 void setMotorVelocity(uint8_t port, int32_t velocity);
41 void setMotorPosition(uint8_t port, int32_t velocity, int32_t goalPosition);
43 void setMotorRelative(uint8_t port, int32_t velocity, int32_t deltaPosition);
45 void setServo(uint8_t port, float degrees);
47 void setServoMode(uint8_t port, uint8_t mode);
49 void setSmoothServo(uint8_t port, float targetDeg, float speedDegPerSec, int easing);
51 void setMotorPid(uint8_t port, float kp, float ki, float kd);
53 void resetMotorPosition(uint8_t port);
54
59 void setChassisVelocity(float vx, float vy, float wz);
60
62 void setShutdown(bool enabled);
63
67
69 void sendKinematicsConfig(const std::array<std::array<float, 4>, 3>& inv_matrix,
70 const std::array<float, 4>& ticks_to_rad,
71 const std::array<std::array<float, 3>, 4>& fwd_matrix,
72 const std::array<float, 4>& bemf_offset);
73
76
80 private:
81 explicit TransportWriter();
82 ~TransportWriter() = default;
83
85 };
86}
void sendKinematicsConfig(const std::array< std::array< float, 4 >, 3 > &inv_matrix, const std::array< float, 4 > &ticks_to_rad, const std::array< std::array< float, 3 >, 4 > &fwd_matrix, const std::array< float, 4 > &bemf_offset)
Send kinematics config to STM32 for on-board odometry.
void setMotorVelocity(uint8_t port, int32_t velocity)
Publish a firmware-side velocity target in BEMF units.
void setMotorRelative(uint8_t port, int32_t velocity, int32_t deltaPosition)
Publish a relative position move command.
void setMotorMode(uint8_t port, int mode)
Publish motor mode command (0=OFF, 1=PASSIVE_BRAKE).
void setMotorPid(uint8_t port, float kp, float ki, float kd)
Publish per-port PID gains.
void resetOdometry()
Request STM32 to reset its integrated odometry pose.
void resetMotorPosition(uint8_t port)
Reset firmware motor position for one port.
void setMotor(uint8_t port, int valueData)
Publish open-loop motor power for one port.
void setServoMode(uint8_t port, uint8_t mode)
Publish a servo mode update.
void setMotorPosition(uint8_t port, int32_t velocity, int32_t goalPosition)
Publish an absolute position move command.
void setShutdown(bool enabled)
Toggle the STM32-wide shutdown flag for the safest available stop path.
void setSmoothServo(uint8_t port, float targetDeg, float speedDegPerSec, int easing)
Publish a smooth servo command; interpolation runs in the C++ reader at 200 Hz.
void setServo(uint8_t port, float degrees)
Publish a servo position command in degrees (0-180).
void setChassisVelocity(float vx, float vy, float wz)