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 |
|
| 0x57 | RW | Flottant 32 bits | Angle fin rad |
|
||||||
| 0x58 | RW | Flottant 32 bits | Angle fin rad |
|
| 0x58 | RW | Flottant 32 bits | Angle fin rad |
|
||||||
| 0x59 | 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 |
|
| **0x80** | R | flottant 32 bits | Position X en mm |
|
||||||
| 0x81 | 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 |
|
| 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 abscisse; // Position entre 0 et 1 sur la trajectoire
|
||||||
float position_mm; // Position en mm sur la trajectoire
|
float position_mm; // Position en mm sur la trajectoire
|
||||||
float vitesse_mm_s;
|
float vitesse_mm_s;
|
||||||
float vitesse_max_trajet_mm_s=500;
|
float vitesse_max_trajet_mm_s;
|
||||||
float acceleration_mm_ss;
|
float acceleration_mm_ss;
|
||||||
const float acceleration_mm_ss_obstacle = 500;
|
const float acceleration_mm_ss_obstacle = 500;
|
||||||
struct trajectoire_t trajet_trajectoire;
|
struct trajectoire_t trajet_trajectoire;
|
||||||
@ -24,7 +24,7 @@ const float distance_pas_obstacle = 2000;
|
|||||||
|
|
||||||
float vitesse_max_contrainte_obstacle;
|
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){
|
void Trajet_init(int id){
|
||||||
Temps_init();
|
Temps_init();
|
||||||
AsserMoteur_Init(id);
|
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){
|
void Trajet_stop(float pas_de_temps_s){
|
||||||
vitesse_mm_s = 0;
|
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
|
/// @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;
|
enum etat_trajet_t etat_trajet=TRAJET_EN_COURS;
|
||||||
struct trajectoire_t trajectoire;
|
struct trajectoire_t trajectoire;
|
||||||
uint8_t mode=0;
|
uint8_t mode=0;
|
||||||
|
Trajet_config(TRAJECT_CONFIG_STD);
|
||||||
|
|
||||||
while(1){
|
while(1){
|
||||||
|
|
||||||
@ -151,6 +152,7 @@ void main(void)
|
|||||||
mise_a_jour_vitesse_roues = false;
|
mise_a_jour_vitesse_roues = false;
|
||||||
mise_a_jour_vitesse_robot = false;
|
mise_a_jour_vitesse_robot = false;
|
||||||
mise_a_jour_trajectoire = false;
|
mise_a_jour_trajectoire = false;
|
||||||
|
mise_a_jour_config_trajet = false;
|
||||||
|
|
||||||
// Copie des données dans la mémoire d'échange
|
// Copie des données dans la mémoire d'échange
|
||||||
// Et actualisation des variables "mise_a_jour_..."
|
// Et actualisation des variables "mise_a_jour_..."
|
||||||
@ -202,7 +204,14 @@ void main(void)
|
|||||||
mode = 4;
|
mode = 4;
|
||||||
uint8_t etat_action = ACTION_EN_COURS;
|
uint8_t etat_action = ACTION_EN_COURS;
|
||||||
mise_données_dans_échange((uint8_t*) &(etat_action), sizeof(etat_action), REG_PROPULSION_ETAT_TRAJET);
|
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_roues = false;
|
||||||
bool mise_a_jour_vitesse_robot = false;
|
bool mise_a_jour_vitesse_robot = false;
|
||||||
bool mise_a_jour_trajectoire = 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){
|
void get_données_reçues(uint8_t * dst, unsigned int taille, unsigned int registre){
|
||||||
memcpy(dst, &(memoire_echange[registre]), taille);
|
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){
|
void écriture_données(unsigned int adresse, uint8_t donnée){
|
||||||
if( adresse <= 11){
|
if( adresse < 11){ // 0x0B
|
||||||
// Position du robot
|
// Position du robot
|
||||||
mise_a_jour_position = true;
|
mise_a_jour_position = true;
|
||||||
}else if(adresse <= 12){
|
}else if(adresse <= 12){ // 0x0C
|
||||||
// Read only
|
// Read only
|
||||||
|
|
||||||
}else if(adresse <= 13){
|
}else if(adresse <= 13){ // 0x0D
|
||||||
// Mode
|
// Mode
|
||||||
mise_a_jour_mode = true;
|
mise_a_jour_mode = true;
|
||||||
}else if(adresse <= 17){
|
}else if(adresse <= 17){ // 0x11
|
||||||
// PWM moteur
|
// PWM moteur
|
||||||
mise_a_jour_pwm = true;
|
mise_a_jour_pwm = true;
|
||||||
}else if(adresse <= 25){
|
}else if(adresse <= 25){ // 0x19
|
||||||
// Vitesse roues
|
// Vitesse roues
|
||||||
mise_a_jour_vitesse_roues = true;
|
mise_a_jour_vitesse_roues = true;
|
||||||
}else if(adresse <= 33){
|
}else if(adresse <= 33){ // 0x21
|
||||||
// Vitesse robot
|
// Vitesse robot
|
||||||
mise_a_jour_vitesse_robot = true;
|
mise_a_jour_vitesse_robot = true;
|
||||||
}else if(adresse <= 86){
|
}else if(adresse <= 0x59){ //
|
||||||
// Trajectoire
|
// Trajectoire
|
||||||
mise_a_jour_trajectoire = true;
|
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
|
// Hors mémoire
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,4 +12,5 @@ extern bool mise_a_jour_mode;
|
|||||||
extern bool mise_a_jour_pwm;
|
extern bool mise_a_jour_pwm;
|
||||||
extern bool mise_a_jour_vitesse_roues;
|
extern bool mise_a_jour_vitesse_roues;
|
||||||
extern bool mise_a_jour_vitesse_robot;
|
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_ROUES 0x12
|
||||||
#define REG_PROPULSION_VITESSE_ROBOT 0x1A
|
#define REG_PROPULSION_VITESSE_ROBOT 0x1A
|
||||||
#define REG_PROPULSION_TRAJECTOIRE 0x22
|
#define REG_PROPULSION_TRAJECTOIRE 0x22
|
||||||
|
#define REG_PROPULSION_CONFIG_TRAJET 0x5A
|
||||||
#define REG_PROPULSION_ABSCISSE 0x8C
|
#define REG_PROPULSION_ABSCISSE 0x8C
|
||||||
#define REG_PROPULSION_POSITION_CONSIGNE 0x90
|
#define REG_PROPULSION_POSITION_CONSIGNE 0x90
|
||||||
#define REG_PROPULSION_VITESSE_ROUES_lecture 0x98
|
#define REG_PROPULSION_VITESSE_ROUES_lecture 0x98
|
||||||
#define REG_PROPULSION_ETAT_TRAJET 0xA0
|
#define REG_PROPULSION_ETAT_TRAJET 0xA0
|
||||||
|
|
||||||
|
|
||||||
struct msg_propulsion_position_t{
|
struct msg_propulsion_position_t{
|
||||||
float position_x_mm, position_y_mm, orientation_rad;
|
float position_x_mm, position_y_mm, orientation_rad;
|
||||||
};
|
};
|
||||||
@ -35,16 +37,9 @@ struct msg_propulsion_vitesse_robot_t {
|
|||||||
struct msg_trajectoire_t {
|
struct msg_trajectoire_t {
|
||||||
struct trajectoire_t trajectoire;
|
struct trajectoire_t trajectoire;
|
||||||
};
|
};
|
||||||
/*
|
|
||||||
struct trajectoire_t {
|
struct msg_propulsion_config_trajet_t {
|
||||||
enum trajectoire_type_t type;
|
float vitesse_mm_s, acceleration_mm_ss;
|
||||||
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;
|
|
||||||
};*/
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
Loading…
Reference in New Issue
Block a user