remove unsupported touchprobe module, has been archived in branch archive/touchprobe
[clinton/Smoothieware.git] / src / modules / robot / arm_solutions / CoreXZSolution.cpp
CommitLineData
fff1e42d 1#include "CoreXZSolution.h"
807b9b57 2#include "ActuatorCoordinates.h"
3b0cf08f
JJ
3#include "ConfigValue.h"
4#include "checksumm.h"
fff1e42d 5
728f1037 6#define x_reduction_checksum CHECKSUM("x_reduction")
fff1e42d
JJ
7#define z_reduction_checksum CHECKSUM("z_reduction")
8
9CoreXZSolution::CoreXZSolution(Config* config)
10{
771a26cf 11 x_reduction = config->value(x_reduction_checksum)->by_default(1.0f)->as_number();
3b0cf08f 12 z_reduction = config->value(z_reduction_checksum)->by_default(3.0f)->as_number();
fff1e42d
JJ
13}
14
807b9b57 15void CoreXZSolution::cartesian_to_actuator(const float cartesian_mm[], ActuatorCoordinates &actuator_mm ){
728f1037
JJ
16 actuator_mm[ALPHA_STEPPER] = (this->x_reduction * cartesian_mm[X_AXIS]) + (this->z_reduction * cartesian_mm[Z_AXIS]);
17 actuator_mm[BETA_STEPPER ] = (this->x_reduction * cartesian_mm[X_AXIS]) - (this->z_reduction * cartesian_mm[Z_AXIS]);
fff1e42d
JJ
18 actuator_mm[GAMMA_STEPPER] = cartesian_mm[Y_AXIS];
19}
20
807b9b57 21void CoreXZSolution::actuator_to_cartesian(const ActuatorCoordinates &actuator_mm, float cartesian_mm[] ){
728f1037 22 cartesian_mm[X_AXIS] = (0.5F/this->x_reduction) * (actuator_mm[ALPHA_STEPPER] + actuator_mm[BETA_STEPPER]);
3b0cf08f 23 cartesian_mm[Z_AXIS] = (0.5F/this->z_reduction) * (actuator_mm[ALPHA_STEPPER] - actuator_mm[BETA_STEPPER]);
fff1e42d
JJ
24 cartesian_mm[Y_AXIS] = actuator_mm[GAMMA_STEPPER];
25}