Ajout de la configuration vitesse/accelération du trajet
This commit is contained in:
parent
aa5a5d2d64
commit
8e191f52a5
@ -132,6 +132,14 @@ Les adresses en **gras** sont celles pour lesquelles des `#define` existent qui
|
||||
| 0x57 | RW | Flottant 32 bits | Angle fin rad |
|
||||
| 0x58 | RW | Flottant 32 bits | Angle fin rad |
|
||||
| 0x59 | RW | Flottant 32 bits | Angle fin rad |
|
||||
| **0x5A** | RW | Flottant 32 bits | Vitesse max trajectoire |
|
||||
| 0x5B | RW | Flottant 32 bits | Vitesse max trajectoire |
|
||||
| 0x5C | RW | Flottant 32 bits | Vitesse max trajectoire |
|
||||
| 0x5D | RW | Flottant 32 bits | Vitesse max trajectoire |
|
||||
| 0x5E | RW | Flottant 32 bits | Acceleration trajectoire |
|
||||
| 0x5F | RW | Flottant 32 bits | Acceleration trajectoire |
|
||||
| 0x60 | RW | Flottant 32 bits | Acceleration trajectoire |
|
||||
| 0x61 | RW | Flottant 32 bits | Acceleration trajectoire |
|
||||
| **0x80** | R | flottant 32 bits | Position X en mm |
|
||||
| 0x81 | R | flottant 32 bits | Position X en mm |
|
||||
| 0x82 | R | flottant 32 bits | Position X en mm |
|
||||
|
||||
6
Trajet.c
6
Trajet.c
@ -12,7 +12,7 @@ int Trajet_terminee(float abscisse);
|
||||
float abscisse; // Position entre 0 et 1 sur la trajectoire
|
||||
float position_mm; // Position en mm sur la trajectoire
|
||||
float vitesse_mm_s;
|
||||
float vitesse_max_trajet_mm_s=500;
|
||||
float vitesse_max_trajet_mm_s;
|
||||
float acceleration_mm_ss;
|
||||
const float acceleration_mm_ss_obstacle = 500;
|
||||
struct trajectoire_t trajet_trajectoire;
|
||||
@ -24,7 +24,7 @@ const float distance_pas_obstacle = 2000;
|
||||
|
||||
float vitesse_max_contrainte_obstacle;
|
||||
|
||||
/// @brief Initialise le module Trajet. A appeler en phase d'initilisation
|
||||
/// @brief Initialise le module Trajet. A appeler en phase d'initialisation
|
||||
void Trajet_init(int id){
|
||||
Temps_init();
|
||||
AsserMoteur_Init(id);
|
||||
@ -90,7 +90,7 @@ enum etat_trajet_t Trajet_avance(float pas_de_temps_s){
|
||||
|
||||
void Trajet_stop(float pas_de_temps_s){
|
||||
vitesse_mm_s = 0;
|
||||
Trajet_avance(0);
|
||||
Trajet_avance(pas_de_temps_s);
|
||||
}
|
||||
|
||||
/// @brief Savoir si un trajet est terminé est trivial sauf pour les courbes de Bézier
|
||||
|
||||
11
main.c
11
main.c
@ -118,6 +118,7 @@ void main(void)
|
||||
enum etat_trajet_t etat_trajet=TRAJET_EN_COURS;
|
||||
struct trajectoire_t trajectoire;
|
||||
uint8_t mode=0;
|
||||
Trajet_config(TRAJECT_CONFIG_STD);
|
||||
|
||||
while(1){
|
||||
|
||||
@ -151,6 +152,7 @@ void main(void)
|
||||
mise_a_jour_vitesse_roues = false;
|
||||
mise_a_jour_vitesse_robot = false;
|
||||
mise_a_jour_trajectoire = false;
|
||||
mise_a_jour_config_trajet = false;
|
||||
|
||||
// Copie des données dans la mémoire d'échange
|
||||
// Et actualisation des variables "mise_a_jour_..."
|
||||
@ -202,7 +204,14 @@ void main(void)
|
||||
mode = 4;
|
||||
uint8_t etat_action = ACTION_EN_COURS;
|
||||
mise_données_dans_échange((uint8_t*) &(etat_action), sizeof(etat_action), REG_PROPULSION_ETAT_TRAJET);
|
||||
Trajet_config(200, 100);
|
||||
}
|
||||
|
||||
if(mise_a_jour_config_trajet){
|
||||
struct msg_propulsion_config_trajet_t msg_propulsion_config_trajet;
|
||||
get_données_reçues((uint8_t *) &msg_propulsion_config_trajet, sizeof(msg_propulsion_config_trajet), REG_PROPULSION_CONFIG_TRAJET);
|
||||
printf("Trajet config: %.0f %.0f\n",msg_propulsion_config_trajet.vitesse_mm_s, msg_propulsion_config_trajet.acceleration_mm_ss);
|
||||
|
||||
Trajet_config(msg_propulsion_config_trajet.vitesse_mm_s, msg_propulsion_config_trajet.acceleration_mm_ss);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -11,6 +11,7 @@ bool mise_a_jour_pwm = false;
|
||||
bool mise_a_jour_vitesse_roues = false;
|
||||
bool mise_a_jour_vitesse_robot = false;
|
||||
bool mise_a_jour_trajectoire = false;
|
||||
bool mise_a_jour_config_trajet = false;
|
||||
|
||||
void get_données_reçues(uint8_t * dst, unsigned int taille, unsigned int registre){
|
||||
memcpy(dst, &(memoire_echange[registre]), taille);
|
||||
@ -21,28 +22,31 @@ void mise_données_dans_échange(uint8_t * source, unsigned int taille, unsigned
|
||||
}
|
||||
|
||||
void écriture_données(unsigned int adresse, uint8_t donnée){
|
||||
if( adresse <= 11){
|
||||
if( adresse < 11){ // 0x0B
|
||||
// Position du robot
|
||||
mise_a_jour_position = true;
|
||||
}else if(adresse <= 12){
|
||||
}else if(adresse <= 12){ // 0x0C
|
||||
// Read only
|
||||
|
||||
}else if(adresse <= 13){
|
||||
}else if(adresse <= 13){ // 0x0D
|
||||
// Mode
|
||||
mise_a_jour_mode = true;
|
||||
}else if(adresse <= 17){
|
||||
}else if(adresse <= 17){ // 0x11
|
||||
// PWM moteur
|
||||
mise_a_jour_pwm = true;
|
||||
}else if(adresse <= 25){
|
||||
}else if(adresse <= 25){ // 0x19
|
||||
// Vitesse roues
|
||||
mise_a_jour_vitesse_roues = true;
|
||||
}else if(adresse <= 33){
|
||||
}else if(adresse <= 33){ // 0x21
|
||||
// Vitesse robot
|
||||
mise_a_jour_vitesse_robot = true;
|
||||
}else if(adresse <= 86){
|
||||
}else if(adresse <= 0x59){ //
|
||||
// Trajectoire
|
||||
mise_a_jour_trajectoire = true;
|
||||
}else if(adresse >86){
|
||||
}else if(adresse <= 0x61){
|
||||
// Trajet config
|
||||
mise_a_jour_config_trajet = true;
|
||||
}else {
|
||||
// Hors mémoire
|
||||
return;
|
||||
}
|
||||
|
||||
@ -12,4 +12,5 @@ extern bool mise_a_jour_mode;
|
||||
extern bool mise_a_jour_pwm;
|
||||
extern bool mise_a_jour_vitesse_roues;
|
||||
extern bool mise_a_jour_vitesse_robot;
|
||||
extern bool mise_a_jour_trajectoire;
|
||||
extern bool mise_a_jour_trajectoire;
|
||||
extern bool mise_a_jour_config_trajet;
|
||||
|
||||
@ -11,11 +11,13 @@
|
||||
#define REG_PROPULSION_VITESSE_ROUES 0x12
|
||||
#define REG_PROPULSION_VITESSE_ROBOT 0x1A
|
||||
#define REG_PROPULSION_TRAJECTOIRE 0x22
|
||||
#define REG_PROPULSION_CONFIG_TRAJET 0x5A
|
||||
#define REG_PROPULSION_ABSCISSE 0x8C
|
||||
#define REG_PROPULSION_POSITION_CONSIGNE 0x90
|
||||
#define REG_PROPULSION_VITESSE_ROUES_lecture 0x98
|
||||
#define REG_PROPULSION_ETAT_TRAJET 0xA0
|
||||
|
||||
|
||||
struct msg_propulsion_position_t{
|
||||
float position_x_mm, position_y_mm, orientation_rad;
|
||||
};
|
||||
@ -35,16 +37,9 @@ struct msg_propulsion_vitesse_robot_t {
|
||||
struct msg_trajectoire_t {
|
||||
struct trajectoire_t trajectoire;
|
||||
};
|
||||
/*
|
||||
struct trajectoire_t {
|
||||
enum trajectoire_type_t type;
|
||||
struct point_xy_t p1, p2, p3, p4;
|
||||
float orientation_debut_rad, orientation_fin_rad;
|
||||
float rayon, angle_debut_rad, angle_fin_rad;
|
||||
float longueur;
|
||||
// Pour les trajectoires composées
|
||||
struct trajectoire_t * trajectoires[NB_MAX_TRAJECTOIRE];
|
||||
int nb_trajectoire;
|
||||
};*/
|
||||
|
||||
struct msg_propulsion_config_trajet_t {
|
||||
float vitesse_mm_s, acceleration_mm_ss;
|
||||
};
|
||||
|
||||
#endif
|
||||
Loading…
Reference in New Issue
Block a user