25class KinematicsCoreXY :
public Plugin{
36 void enroll(
RPC *rpc,
const String& instance_name);
58 void push_deep()
override;
59 void pull_deep()
override;
62 volatile DecimalPosition position_x = 0;
63 volatile DecimalPosition position_y = 0;
64 volatile DecimalPosition position_a = 0;
65 volatile DecimalPosition position_b = 0;
78class KinematicsPolarToCartesian :
public Plugin{
80 KinematicsPolarToCartesian();
85 void begin(float64_t fixed_radius = 0);
91 void solve_kinematics();
93 void enroll(
RPC *rpc,
const String& instance_name);
113 DecimalPosition position_r = 0;
114 DecimalPosition position_a = 0;
115 DecimalPosition position_x = 0;
116 DecimalPosition position_y = 0;
129class KinematicsFiveBarForward :
public Plugin{
138 KinematicsFiveBarForward();
149 void begin(float32_t s, float32_t l1, float32_t l2, float32_t l3, float32_t l4, float32_t l5, float32_t a);
154 void enroll(
RPC *rpc,
const String& instance_name);
175 DecimalPosition position_r = 0;
176 DecimalPosition position_l = 0;
177 DecimalPosition position_x = 0;
178 DecimalPosition position_y = 0;
BlockPorts provide a unified interface for mapping inputs and outputs of different StepDance componen...
Definition core.hpp:148
BlockPort output_a
Output BlockPort for A motor motion. Map downstream components to this port.
Definition kinematics.hpp:51
BlockPort input_y
Input BlockPort for Y axis motion. Map upstream components to this port.
Definition kinematics.hpp:47
void begin()
Initializes the KinematicsCoreXY. This must be called before using the kinematics.
BlockPort output_b
Output BlockPort for B motor motion. Map downstream components to this port.
Definition kinematics.hpp:55
BlockPort input_x
Input BlockPort for X axis motion. Map upstream components to this port.
Definition kinematics.hpp:43
void begin(float32_t s, float32_t l1, float32_t l2, float32_t l3, float32_t l4, float32_t l5, float32_t a)
Initializes the KinematicsFiveBarForward with the specified mechanism parameters.
BlockPort output_x
Output BlockPort for X axis motion. Map downstream components to this port.
Definition kinematics.hpp:168
BlockPort input_r
Input BlockPort for the right encoder angle in radians. Map upstream components to this port.
Definition kinematics.hpp:160
BlockPort output_y
Output BlockPort for Y axis motion. Map downstream components to this port.
Definition kinematics.hpp:172
BlockPort input_l
Input BlockPort for the left encoder angle in radians. Map upstream components to this port.
Definition kinematics.hpp:164
KinematicsPolarToCartesian converts polar coordinates (radius and angle) to Cartesian coordinates (X ...
Definition kinematics.hpp:78
void begin(float64_t fixed_radius=0)
Initializes the KinematicsPolarToCartesian with an optional fixed radius. If a fixed radius is provid...
BlockPort output_x
Output BlockPort for X axis motion. Map downstream components to this port.
Definition kinematics.hpp:106
BlockPort input_radius
Input BlockPort for radius (r) in polar coordinates. Ignored if a fixed radius is set in begin()....
Definition kinematics.hpp:98
BlockPort input_angle
Input BlockPort for angle (theta) in polar coordinates. Map upstream components to this port.
Definition kinematics.hpp:102
BlockPort output_y
Output BlockPort for Y axis motion. Map downstream components to this port.
Definition kinematics.hpp:110
RPC class for handling remote procedure calls over serial streams.
Definition rpc.hpp:35