CRINSA-team2025 V1
Documentation du Club Robot INSA Rennes 2025
Chargement...
Recherche...
Aucune correspondance
VelocityController.h
1#ifndef __VELOCITYCONTROLLER_H__
2#define __VELOCITYCONTROLLER_H__
3
4#include "DifferentialController.h"
5
6
7#define ENABLE_VELOCITYCONTROLLER_LOGS 0 // for debug purposes
8#define VELOCITYCONTROLLER_LOGS_TIMESTEP 20e-3 // mm
9#if ENABLE_VELOCITYCONTROLLER_LOGS
10#include "Teleplot.h"
11#include <math.h>
12#endif
13
22{
23public:
30 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) {}
37
38 void setMaxAngAcc(float maxAngAcc);
39
40 void setMaxLinAcc(float maxLinAcc);
41
48
49 void setMaxLinDec(float maxLinDec);
50
51 void setMaxAngDec(float maxAngDec);
52
57 void setSpinShutdown(bool spinShutdown);
63 float getMaxLinAcc() const { return m_maxLinAcc; }
69 float getMaxAngAcc() const { return m_maxAngAcc; }
75 float getMaxLinDec() const { return m_maxLinDec; }
81 float getMaxAngDec() const { return m_maxAngDec; }
82 float getLinSpinGoal() const { return m_linSpinGoal; }
83 float getAngSpinGoal() const { return m_angSpinGoal; }
90 bool getSpinShutdown() const { return m_spinShutdown; }
91
92 void set_stop(bool stop);
93
94protected:
109 float genRampSetpoint(float stepSetpoint, float input, float rampSetpoint, float maxAcc, float maxDec, float timestep);
114 virtual void process(float timestep);
118 virtual void onProcessEnabling();
119
120 float m_rampLinVelSetpoint; // in mm/s (no longer w/e unit)
121 float m_rampAngVelSetpoint; // in rad/s (no longer w/e unit)
122 float m_maxLinAcc; // always positive, in mm/s^2
123 float m_maxLinDec; // always positive, in mm/s^2
124 float m_maxAngAcc; // always positive, in mm/s^2
125 float m_maxAngDec; // always positive, in mm/s^2
127 float m_linSpinGoal; // Velocity wanted before the spin alarm
128 float m_angSpinGoal; // Velocity wanted before the spin alarm
129 bool m_sensors_stop=false;
131 bool m_sensors_stoped=false;
132 float m_last_linSetpoint;
133 float m_last_angSetpoint;
134
135#if ENABLE_VELOCITYCONTROLLER_LOGS
136 friend class VelocityControllerLogs;
137#endif // ENABLE_VELOCITYCONTROLLER_LOGS
138};
139
140#if ENABLE_VELOCITYCONTROLLER_LOGS
144class VelocityControllerLogs : public PeriodicProcess
145{
146public:
147 void setController(const VelocityController &controller) { m_controller = &controller; }
148
149protected:
150 virtual void process(float timestep);
151
152 const VelocityController *m_controller;
153};
154#endif // ENABLE_VELOCITYCONTROLLER_LOGS
155
156#endif // __VELOCITYCONTROLLER_H__
DifferentialController()
Constructeur de DifferentialController Constructeur de DifferentialController qui initialise les vari...
Definition DifferentialController.h:23
Classe à implémenter pour gérer les appels dans la loop.
Definition PeriodicProcess.h:16
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:22
float genRampSetpoint(float stepSetpoint, float input, float rampSetpoint, float maxAcc, float maxDec, float timestep)
Calcul la vitesse à atteindre.
Definition VelocityController.cpp:18
bool getSpinShutdown() const
Retourne l'état de spinShutDown.
Definition VelocityController.h:90
bool m_sensors_restart
Stop ce truc.
Definition VelocityController.h:130
float m_maxLinAcc
Definition VelocityController.h:122
void setSpinShutdown(bool spinShutdown)
Change l'état de l'arret d'urgence.
Definition VelocityController.cpp:113
bool m_spinShutdown
Definition VelocityController.h:126
float getMaxLinAcc() const
Retourne l'accélération max linéaire.
Definition VelocityController.h:63
float m_maxAngAcc
Definition VelocityController.h:124
float getMaxAngDec() const
Retourne la décélération max angulaire.
Definition VelocityController.h:81
void setMaxAngAcc(float maxAngAcc)
Paramètre les accélérations max.
Definition VelocityController.cpp:103
float m_rampLinVelSetpoint
Definition VelocityController.h:120
void setMaxLinDec(float maxLinDec)
Paramètre les décéleration max.
Definition VelocityController.cpp:98
float m_maxLinDec
Definition VelocityController.h:123
VelocityController()
Constructeur de VelocityController.
Definition VelocityController.h:30
virtual void onProcessEnabling()
Initialisation de l'asservissement.
Definition VelocityController.cpp:86
float m_maxAngDec
Definition VelocityController.h:125
float getMaxLinDec() const
Retourne la décélération max linéaire.
Definition VelocityController.h:75
virtual void process(float timestep)
Calcul l'asservissement.
Definition VelocityController.cpp:38
float m_rampAngVelSetpoint
Definition VelocityController.h:121
float getMaxAngAcc() const
Retourne l'accélération max angulaire.
Definition VelocityController.h:69