12#include "VelocityController.h"
13#include "PositionController.h"
14#include "PurePursuit.h"
15#include "TurnOnTheSpot.h"
24#define LEFTWHEEL_RADIUS_ID 0x10
25#define LEFTWHEEL_CONSTANT_ID 0x11
26#define LEFTWHEEL_MAXPWM_ID 0x12
27#define RIGHTWHEEL_RADIUS_ID 0x20
28#define RIGHTWHEEL_CONSTANT_ID 0x21
29#define RIGHTWHEEL_MAXPWM_ID 0x22
30#define LEFTCODEWHEEL_RADIUS_ID 0x40
31#define LEFTCODEWHEEL_COUNTSPERREV_ID 0x41
32#define RIGHTCODEWHEEL_RADIUS_ID 0x50
33#define RIGHTCODEWHEEL_COUNTSPERREV_ID 0x51
34#define ODOMETRY_AXLETRACK_ID 0x60
35#define ODOMETRY_SLIPPAGE_ID 0x61
36#define VELOCITYCONTROL_AXLETRACK_ID 0x80
37#define VELOCITYCONTROL_MAXLINACC_ID 0x81
38#define VELOCITYCONTROL_MAXLINDEC_ID 0x82
39#define VELOCITYCONTROL_MAXANGACC_ID 0x83
40#define VELOCITYCONTROL_MAXANGDEC_ID 0x84
41#define VELOCITYCONTROL_SPINSHUTDOWN_ID 0x85
42#define LINVELPID_KP_ID 0xA0
43#define LINVELPID_KI_ID 0xA1
44#define LINVELPID_KD_ID 0xA2
45#define LINVELPID_MINOUTPUT_ID 0xA3
46#define LINVELPID_MAXOUTPUT_ID 0xA4
47#define ANGVELPID_KP_ID 0xB0
48#define ANGVELPID_KI_ID 0xB1
49#define ANGVELPID_KD_ID 0xB2
50#define ANGVELPID_MINOUTPUT_ID 0xB3
51#define ANGVELPID_MAXOUTPUT_ID 0xB4
52#define POSITIONCONTROL_LINVELKP_ID 0xD0
53#define POSITIONCONTROL_ANGVELKP_ID 0xD1
54#define POSITIONCONTROL_LINVELMAX_ID 0xD2
55#define POSITIONCONTROL_ANGVELMAX_ID 0xD3
56#define POSITIONCONTROL_LINPOSTHRESHOLD_ID 0xD4
57#define POSITIONCONTROL_ANGPOSTHRESHOLD_ID 0xD5
58#define PUREPURSUIT_LOOKAHED_ID 0xE0
59#define PUREPURSUIT_LOOKAHEADBIS_ID 0xE2
62#define SLOWDOWN_FACTOR 0.5
63#define SLOWDOWN_DISTANCE 0
64#define ALIGN_DISTANCE 130
69 const float LEFTWHEEL_RADIUS;
70 const float LEFTWHEEL_CONSTANT;
71 const float LEFTWHEEL_MAXPWM;
72 const float RIGHTWHEEL_RADIUS;
73 const float RIGHTWHEEL_CONSTANT;
74 const float RIGHTWHEEL_MAXPWM;
75 const long LEFTCODEWHEEL_COUNTSPERREV;
76 const long RIGHTCODEWHEEL_COUNTSPERREV;
77 const float LEFTCODEWHEEL_RADIUS;
78 const float RIGHTCODEWHEEL_RADIUS;
80 const float ODOMETRY_AXLETRACK;
81 const float ODOMETRY_SLIPPAGE;
83 const float VELOCITYCONTROL_AXLETRACK;
84 const float VELOCITYCONTROL_MAXLINACC;
85 const float VELOCITYCONTROL_MAXLINDEC;
86 const float VELOCITYCONTROL_MAXANGACC;
87 const float VELOCITYCONTROL_MAXANGDEC;
88 const bool VELOCITYCONTROL_SPINSHUTDOWN;
91 const float LINVELPID_KP;
92 const float LINVELPID_KI;
93 const float LINVELPID_KD;
95 const float LINVELPID_MINOUTPUT;
96 const float LINVELPID_MAXOUTPUT;
99 const float ANGVELPID_KP;
100 const float ANGVELPID_KI;
101 const float ANGVELPID_KD;
103 const float ANGVELPID_MINOUTPUT;
104 const float ANGVELPID_MAXOUTPUT;
107 const float POSITIONCONTROL_LINVELKP;
108 const float POSITIONCONTROL_ANGVELKP;
110 const float POSITIONCONTROL_LINVELMAX;
111 const float POSITIONCONTROL_ANGVELMAX;
112 const float POSITIONCONTROL_LINPOSTHRESHOLD;
113 const float POSITIONCONTROL_ANGPOSTHRESHOLD;
114 const float PUREPURSUIT_LOOKAHEAD;
115 const float PUREPURSUIT_LOOKAHEADBIS;
118 const float ODOMETRY_TIMESTEP;
119 const float PID_CONTROLLERS_TIMESTEP;
120 const float POSITIONCONTROL_TIMESTEP;
123 const int LEFT_MOTOR_EN;
124 const int LEFT_MOTOR_PWM;
125 const int LEFT_MOTOR_DIR;
126 const int RIGHT_MOTOR_EN;
127 const int RIGHT_MOTOR_PWM;
128 const int RIGHT_MOTOR_DIR;
129 const int DRIVER_RESET;
130 const int DRIVER_FAULT;
134extern DRV8844 driver;
135extern WheelMotor leftWheel;
136extern WheelMotor rightWheel;
155namespace Wheeledbase {
159 void GOTO_DELTA(
float dx,
float dy,
bool bloquant=
true);
161 void TURNTO_DELTA(
float dtheta,
bool bloquant=
true);
165 void SET_OPENLOOP_VELOCITIES(
float leftWheelVel,
float rightWheelVel);
167 void GET_CODEWHEELS_COUNTERS(
float *leftCodewheelCounter,
float *rightCodewheelCounter);
169 void SET_VELOCITIES(
float linVelSetpoint,
float angVelSetpoint);
171 void RESET_PUREPURSUIT();
173 void ADD_PUREPURSUIT_WAYPOINT(
float x,
float y);
175 void START_PUREPURSUIT(int8_t direction,
float finalAngle);
177 void START_TURNONTHESPOT(
bool dir,
float theta);
179 void START_TURNONTHESPOT_DIR(
bool dir,
float theta);
181 void PUREPURSUIT(
const Position** waypoints, uint16_t nb_waypoints,
char dir,
float finalAngle);
183 void GOTO(
Position* pos,
bool alignFirst=
true, int8_t dir=PurePursuit::NONE,
bool bloquant=
true);
185 void GOTO_WAYPOINTS(
bool alignFirst=
true, int8_t dir=PurePursuit::NONE,
int nb_waypoints=1, ...);
187 void GOTO_WAYPOINTS_ARRAY(
Position* positions[],
bool alignFirst=
true, int8_t dir=PurePursuit::NONE,
int nb_waypoints=1);
189 void GOTO_FUNCT(
Position* pos,
void* duringMovingFunct,
void* approachFunct,
bool alignFirst=
true, int8_t dir=PurePursuit::NONE,
float finalAngle=MAXFLOAT);
191 uint8_t POSITION_REACHED();
193 void GET_VELOCITIES_WANTED(
float *linOutput,
float *angOutput,
bool spin=
true);
199 void GET_VELOCITIES(
float *linVel,
float *angVel);
201 void SET_PARAMETER_VALUE(
byte paramID,
float value);
203 float GET_PARAMETER_VALUE(
byte paramID);
Fait la passerelle entre les roues codeuses et le stm32.
Definition Codewheel.h:16
Calcule la position en temps réel du robot.
Definition Odometry.h:71
Classe d'asservissement.
Definition PID.h:13
Classe support des objets AbstractMoveStrategy.
Definition PositionController.h:19
Trajectoire courbe le long d'une ligne brisée.
Definition PurePursuit.h:20
Rotation du robot sans translations.
Definition TurnOnTheSpot.h:14
Objet de controle de la vitesse.
Definition VelocityController.h:22
Structure de position.
Definition Odometry.h:14
Definition Wheeledbase.h:68