![]() |
firmwareSandsara
|
Se encarga del control de los motores. More...
#include <Motors.h>
Public Member Functions | |
| Motors () | |
| It's the class constructor. More... | |
| void | moveTo (double x, double y, bool=false) |
| Esta funcion hace que el robot se mueve de su posicion actual hacia una nueva posicion x,y. More... | |
| void | init (double=0, double=0) |
| inicializa el objeto Motors More... | |
| double | getCurrentModule () |
| calcula el modulo de la posicion actual de la esfera. More... | |
| double | getCurrentAngle () |
| Calcula el angulo de la posicion actual de la esfera. More... | |
| void | setZCurrent (double) |
| moficica el miembro z_current. More... | |
| void | setThetaCurrent (double) |
| moficica el miembro theta_current. More... | |
| void | setSpeed (int) |
| cambia la velocidad de SandSara. More... | |
| double | getSpeed () |
| obtiene el valor de la velocidad actual de Sandsara en milimetros por segundo More... | |
| double | getZCurrent () |
| obtiene la variable miembro zCurrent More... | |
| double | getThetaCurrent () |
| obtiene la varieble miembro thetaCurrent More... | |
| double | module (double, double, double, double) |
| Calcula la distancia entre 2 puntos. More... | |
| int | position () |
| devuelve un valor para saber en donde se encuentra la esfera. More... | |
| void | completePath () |
| execute the remaining buffered steps. More... | |
| void | setRealQ1 (double) |
| moficica el miembro realQ1. More... | |
| void | setRealQ2 (double) |
| moficica el miembro realQ2. More... | |
| double | getRealQ1 () |
| moficica el miembro realQ1. More... | |
| double | getRealQ2 () |
| moficica el miembro realQ1. More... | |
| void | stopAndResetPositions () |
| this function resets some variables and replace the position variables to the real positions of Sandsara. More... | |
| void | setRealSpeed1 (double) |
| moficica el miembro realSpeed1. More... | |
| void | setRealSpeed2 (double) |
| moficica el miembro realSpeed2. More... | |
| void | resetSpeeds () |
| Recalcula las velocidades de los puntos guardados para movimientos futuros. More... | |
Static Public Member Functions | |
| static void | rotate (double &, double &, double) |
| rota la posicion x,y con centro en 0,0 tantos grados como se desee. More... | |
| static double | zPolar (double, double) |
| calcula el valor del modulo del punto en coordenadas polares More... | |
| static double | thetaPolar (double, double) |
| calcula el angulo que se forma con la horizontal, de un punto x,y. More... | |
| static double | normalizeAngle (double) |
| normaliza un angulo para estar en el rango de [0,2*PI). More... | |
| static double | arcLength (double, double, double) |
| calcula la longitud de arco que se forma al girar de un punto A a un punto B en coordenadas polares. More... | |
| static void | constrainXY (double &x, double &y) |
Public Attributes | |
| AccelStepper | stepper1 |
| AccelStepper | stepper2 |
| MultiStepper | steppers |
| int | microstepping |
| double | degrees_per_step |
| double | couplingAngle |
| double | x_current |
| double | y_current |
| double | q1_current |
| double | q2_current |
| double | millimeterSpeed = 15 |
| double | _pathSpeed |
| bool | lastPoint |
Se encarga del control de los motores.
Esta clase se encarga de calcular los pasos necesarios para llegar a una determinada posicion. En esta clase tambien se encuentran todas las matematicas con respecto a la cinematica y cinematica inversa de Sandsara.
| microstepping | almacena el valor de microstepping del motor |
| x_current | alamacena la coordenada x de la posicion actual de Sandsara (en milimetros). |
| y_current | alamacena la coordenada y de la posicion actual de Sandsara (en milimetros). |
| q1_current | almacena el valor actual del angulo del primer eslabon de Sandsara (en radianes). |
| q2_current | almacena el valor actual del angulo del segundo eslabon de Sandsara (en radianes). |
| zCurrent | se utiliza como referencia del componente modulo para los archivos thr (en milimetros). |
| thetaCurrent | se utiliza como referencia del componente del angulo para los archivos thr (en radianes). |
| couplingAngle | es un angulo que se utiliza para saber cuanto rotar un archivo. |
| constantMotorSpeed | Si esta variable es true, los motores se moveran a una velocidad constante siempre, si es false la velocidad dependera de la distancia recorrida de un punto a otro. |
| Motors::Motors | ( | ) |
It's the class constructor.
|
static |
calcula la longitud de arco que se forma al girar de un punto A a un punto B en coordenadas polares.
En otras palabras, se calcula la distancia que se recorre en una trayectoria espiral de un punto A a un punto B, el numero de grados totales que gira esta definido por el parametro deltaTheta.
| deltaZ | es la diferencia entre la componente modulo del punto final menos la componente modulo del punto inicial. |
| deltaTheta | es la diferencia entre la componente angulo del punto final menos la componente angulo del punto inicial. |
| zInit | es la componente modulo del punto inicial. |
| void Motors::completePath | ( | ) |
execute the remaining buffered steps.
|
static |
calculus of theta
if x,y is out of range, z will be the maximun radius possible
Delimiter module z
| double Motors::getCurrentAngle | ( | ) |
Calcula el angulo de la posicion actual de la esfera.
| double Motors::getCurrentModule | ( | ) |
calcula el modulo de la posicion actual de la esfera.
| double Motors::getRealQ1 | ( | ) |
moficica el miembro realQ1.
| double Motors::getRealQ2 | ( | ) |
moficica el miembro realQ1.
| double Motors::getSpeed | ( | ) |
obtiene el valor de la velocidad actual de Sandsara en milimetros por segundo
| double Motors::getThetaCurrent | ( | ) |
obtiene la varieble miembro thetaCurrent
| double Motors::getZCurrent | ( | ) |
obtiene la variable miembro zCurrent
| void Motors::init | ( | double | xInit = 0, |
| double | yInit = 0 |
||
| ) |
inicializa el objeto Motors
| xInit | es la coordenada en el eje x, medida en milimetros, que se desea como posicion inicial, por defecto es 0. |
| yInit | es la coordenada en el eje y, medida en milimetros, que se desea como posicion inicial, por defecto es 0. |
| double Motors::module | ( | double | x1, |
| double | y1, | ||
| double | x2, | ||
| double | y2 | ||
| ) |
Calcula la distancia entre 2 puntos.
| x1 | es el valor en el eje x del primer punto. |
| y1 | es el valor en el eje y del primer punto. |
| x2 | es el valor en el eje x del segundo punto. |
| y2 | es el valor en el eje y del segundo punto. |
| void Motors::moveTo | ( | double | x, |
| double | y, | ||
| bool | littleMovement = false |
||
| ) |
Esta funcion hace que el robot se mueve de su posicion actual hacia una nueva posicion x,y.
Si las coordenadas x,y se encuentran fuera del espacio de trabajo, la funcion se encarga de limitarlas. La posicion x,y se mide en milimetros. Si la distancia que tiene que recorrer es menor a 0.5 milimetros entonces no avanza a menos que el parametro littleMovement sea verdadero. Si la distancia a recorrer es mayor a 1.1 milimetros, entonces se avanza en linea recta al nuevo punto en una trayectoria de puntos equidistantes a 1 mm formando una linea recta.
| x | es la coordenada en el eje x, medida en milimetros, hacia donde se desea avanzar. |
| y | es la coordenada en el eje y, medida en milimetros, hacia donde se desea avanzar. |
| littleMovement | es una variable que si su valor es false entonces no se movera a menos que la distancia minima sea 0.5 mm y true para que se mueva en cualquier caso. |
|
static |
normaliza un angulo para estar en el rango de [0,2*PI).
| angle | es el angulo, medido en radianes, que se desea normalizar. |
| int Motors::position | ( | ) |
devuelve un valor para saber en donde se encuentra la esfera.
| void Motors::resetSpeeds | ( | ) |
Recalcula las velocidades de los puntos guardados para movimientos futuros.
|
static |
rota la posicion x,y con centro en 0,0 tantos grados como se desee.
por ejemplo, si se rota la posicion (1,0) 90 grados el resultado seria un punto (0,1).
| x | coordenada en el eje x. |
| y | coordenada en el eje y. |
| angle | es el angulo que se desea rotar los puntos x,y. |
| void Motors::setRealQ1 | ( | double | q1 | ) |
moficica el miembro realQ1.
| q1 | es el valor que se le va a asignar a la variable miembro realQ1. |
| void Motors::setRealQ2 | ( | double | q2 | ) |
moficica el miembro realQ2.
| q2 | es el valor que se le va a asignar a la variable miembro realQ1. |
| void Motors::setRealSpeed1 | ( | double | speed1 | ) |
moficica el miembro realSpeed1.
| speed1 | es el valor que se le va a asignar a la variable miembro realQ1. |
| void Motors::setRealSpeed2 | ( | double | speed2 | ) |
moficica el miembro realSpeed2.
| speed2 | es el valor que se le va a asignar a la variable miembro realQ1. |
| void Motors::setSpeed | ( | int | speed | ) |
cambia la velocidad de SandSara.
| speed | es la nueva valocidad, en milimetros por segundo, que va a tener de SandSara. |
| void Motors::setThetaCurrent | ( | double | theta | ) |
moficica el miembro theta_current.
| theta | es el valor que se le va a asignar a la variable miembro thetaCurrent. |
| void Motors::setZCurrent | ( | double | z | ) |
moficica el miembro z_current.
| z | es el valor que se le va a asignar a la variable miembro zCurrent. |
| void Motors::stopAndResetPositions | ( | ) |
this function resets some variables and replace the position variables to the real positions of Sandsara.
|
static |
calcula el angulo que se forma con la horizontal, de un punto x,y.
| x | es el valor de la coordenada en el eje x, medido en milimetros. |
| y | es el valor de la coordenada en el eje y, medido en milimetros. |
|
static |
calcula el valor del modulo del punto en coordenadas polares
| x | es el valor en el eje x del punto. |
| y | es el valor en el eje y del punto. |
| double Motors::_pathSpeed |
| double Motors::couplingAngle |
| double Motors::degrees_per_step |
| bool Motors::lastPoint |
| int Motors::microstepping |
| double Motors::millimeterSpeed = 15 |
| double Motors::q1_current |
| double Motors::q2_current |
| AccelStepper Motors::stepper1 |
| AccelStepper Motors::stepper2 |
| MultiStepper Motors::steppers |
| double Motors::x_current |
| double Motors::y_current |