Robot Principal 26
Documentation du Club Robot INSA Rennes 2026
Chargement...
Recherche...
Aucune correspondance
VelocityController.h
Aller à la documentation de ce fichier.
1
7
8#ifndef __VELOCITYCONTROLLER_H__
9#define __VELOCITYCONTROLLER_H__
10
11#include "DifferentialController.h"
12
13
14#define ENABLE_VELOCITYCONTROLLER_LOGS 0 // for debug purposes
15#define VELOCITYCONTROLLER_LOGS_TIMESTEP 20e-3 // mm
16#if ENABLE_VELOCITYCONTROLLER_LOGS
17#include "Teleplot.h"
18#include <math.h>
19#endif
20
30{
31public:
38 VelocityController() : m_rampLinVelSetpoint(0), m_rampAngVelSetpoint(0), m_maxLinAcc(INFINITY), m_maxLinDec(INFINITY), m_maxAngAcc(INFINITY), m_maxAngDec(INFINITY), m_linSpinGoal(0.0), m_angSpinGoal(0.0), m_spinShutdown(true) {}
45
46 void setMaxAngAcc(float maxAngAcc);
47
48 void setMaxLinAcc(float maxLinAcc);
49
56
57 void setMaxLinDec(float maxLinDec);
58
59 void setMaxAngDec(float maxAngDec);
60
65 void setSpinShutdown(bool spinShutdown);
71 float getMaxLinAcc() const { return m_maxLinAcc; }
77 float getMaxAngAcc() const { return m_maxAngAcc; }
83 float getMaxLinDec() const { return m_maxLinDec; }
89 float getMaxAngDec() const { return m_maxAngDec; }
90 float getLinSpinGoal() const { return m_linSpinGoal; }
91 float getAngSpinGoal() const { return m_angSpinGoal; }
98 bool getSpinShutdown() const { return m_spinShutdown; }
99
100 void set_stop(bool stop);
101
102protected:
117 float genRampSetpoint(float stepSetpoint, float input, float rampSetpoint, float maxAcc, float maxDec, float timestep);
122 virtual void process(float timestep);
126 virtual void onProcessEnabling();
127
128 float m_rampLinVelSetpoint; // in mm/s (no longer w/e unit)
129 float m_rampAngVelSetpoint; // in rad/s (no longer w/e unit)
130 float m_maxLinAcc; // always positive, in mm/s^2
131 float m_maxLinDec; // always positive, in mm/s^2
132 float m_maxAngAcc; // always positive, in mm/s^2
133 float m_maxAngDec; // always positive, in mm/s^2
135 float m_linSpinGoal; // Velocity wanted before the spin alarm
136 float m_angSpinGoal; // Velocity wanted before the spin alarm
137 bool m_sensors_stop=false;
139 bool m_sensors_stoped=false;
140 float m_last_linSetpoint;
141 float m_last_angSetpoint;
142
143#if ENABLE_VELOCITYCONTROLLER_LOGS
144 friend class VelocityControllerLogs;
145#endif // ENABLE_VELOCITYCONTROLLER_LOGS
146};
147
148#if ENABLE_VELOCITYCONTROLLER_LOGS
152class VelocityControllerLogs : public PeriodicProcess
153{
154public:
155 void setController(const VelocityController &controller) { m_controller = &controller; }
156
157protected:
158 virtual void process(float timestep);
159
160 const VelocityController *m_controller;
161};
162#endif // ENABLE_VELOCITYCONTROLLER_LOGS
163
164#endif // __VELOCITYCONTROLLER_H__
Wrapper header pour importer la librairie.
DifferentialController()
Constructeur de DifferentialController Constructeur de DifferentialController qui initialise les vari...
Definition DifferentialController.h:26
Classe à implémenter pour gérer les appels dans la loop.
Definition PeriodicProcess/PeriodicProcess.h:17
virtual void process(float timestep)=0
Méthode à implémenter obligatoirement pour hériter de PeriodicProcess.
Objet de controle de la vitesse.
Definition VelocityController.h:30
float genRampSetpoint(float stepSetpoint, float input, float rampSetpoint, float maxAcc, float maxDec, float timestep)
Calcul la vitesse à atteindre.
Definition VelocityController.cpp:15
bool getSpinShutdown() const
Retourne l'état de spinShutDown.
Definition VelocityController.h:98
bool m_sensors_restart
Stop ce truc.
Definition VelocityController.h:138
float m_maxLinAcc
Definition VelocityController.h:130
void setSpinShutdown(bool spinShutdown)
Change l'état de l'arret d'urgence.
Definition VelocityController.cpp:110
bool m_spinShutdown
Definition VelocityController.h:134
float getMaxLinAcc() const
Retourne l'accélération max linéaire.
Definition VelocityController.h:71
float m_maxAngAcc
Definition VelocityController.h:132
float getMaxAngDec() const
Retourne la décélération max angulaire.
Definition VelocityController.h:89
void setMaxAngAcc(float maxAngAcc)
Paramètre les accélérations max.
Definition VelocityController.cpp:100
float m_rampLinVelSetpoint
Definition VelocityController.h:128
void setMaxLinDec(float maxLinDec)
Paramètre les décéleration max.
Definition VelocityController.cpp:95
float m_maxLinDec
Definition VelocityController.h:131
VelocityController()
Constructeur de VelocityController.
Definition VelocityController.h:38
virtual void onProcessEnabling()
Initialisation de l'asservissement.
Definition VelocityController.cpp:83
float m_maxAngDec
Definition VelocityController.h:133
float getMaxLinDec() const
Retourne la décélération max linéaire.
Definition VelocityController.h:83
virtual void process(float timestep)
Calcul l'asservissement.
Definition VelocityController.cpp:35
float m_rampAngVelSetpoint
Definition VelocityController.h:129
float getMaxAngAcc() const
Retourne l'accélération max angulaire.
Definition VelocityController.h:77