| Asser_Moteurs.c | ||
| Asser_Moteurs.h | ||
| Asser_Position.c | ||
| Asser_Position.h | ||
| CMakeLists.txt | ||
| Deplacement.c | ||
| Deplacement.h | ||
| Evitement.c | ||
| Evitement.h | ||
| Geometrie.c | ||
| Geometrie.h | ||
| Localisation.c | ||
| Localisation.h | ||
| Loi_de_commande.c | ||
| Loi_de_commande.h | ||
| Moteurs.c | ||
| Moteurs.h | ||
| Plateforme.h | ||
| QEI.c | ||
| QEI.h | ||
| quadrature_encoder.pio | ||
| Readme.md | ||
| Rotation.c | ||
| Rotation.h | ||
| Temps.c | ||
| Temps.h | ||
| Trajectoire_bezier.c | ||
| Trajectoire_bezier.h | ||
| Trajectoire_circulaire.c | ||
| Trajectoire_circulaire.h | ||
| Trajectoire_composees.c | ||
| Trajectoire_composees.h | ||
| Trajectoire_droite.c | ||
| Trajectoire_droite.h | ||
| Trajectoire.c | ||
| Trajectoire.h | ||
| Trajet.c | ||
| Trajet.h | ||
Submodule Déplacement pour le RP2040
Ceci est un submodule git pour intégrer facilement la gestion des déplacements à un projet. On crée ce Submodule en se servant de la documentation disponible ici : https://git-scm.com/book/en/v2/Git-Tools-Submodules
Ce module est composé de deux parties :
- L'asservissement des moteurs :
- Moteur PWM
- Lecture codeur
- asservissement
- La gestion des trajets :
- Loi de commande
- Asservissement en position
- Trajectoires
- Trajet (accélération et décélération sur trajectoire)
- Déplacement avec évitement sommaire:
- Ignore l'obstacle
- Arrêt devant obstacle
- Pause devant obstacle
- Inversion trajectoire
Utilisation
Ajout du sub-module
Ajouter ce submodule à votre projet. Dans un terminal, dans le répertoire de votre projet, entrez :
git submodule add https://git.poivron-robotique.fr/Keuronde/Module_deplacement_robot_differentiel.git
Ajouter le fichier nouvellement créé .gitmodules à votre projet.
git add .gitmodules
Configuration de la compilation
Dans le fichier CMakeLists.txt, ajouter le dossier du sub module:
add_subdirectory(Module_deplacement_robot_differentiel)
Dans le fichier CMakeLists.txt, ajouter la bibliothèque RP2040_Servomoteur :
target_link_libraries(Modele_RPiPico
...
Deplacement_Robot_differentiel
)
Intégration au code source
Ajout du fichier d'include :
#include "Module_deplacement_robot_differentiel/Deplacement.h"
Initilisation du module :
AsserMoteur_Init();
Trajet_init();
Fonctions cycliques :
AsserMoteur_Gestion(step_ms);
Localisation_gestion();
Avec :
- step_ms : le temps entre chaque appel de AsserMoteur_Gestion()
Vous avez deux exemples de code plus bas.
Cas où vous clonez un projet contenant des submodules
Après avoir cloné le projet, initilisez les submodules:
git submodule init
git submodule update
Pour récupérer les dernières mise à jour des sub-modules :
git submodule update --remote
Code minimale 1
Ce code permet d'utiliser les fonctions d'asservissement en vitesse des moteurs
#include "Module_deplacement_robot_differentiel/Deplacement.h"
#include <stdio.h>
void main(void){
// Initilisation
AsserMoteur_Init();
// Consignes
AsserMoteur_setConsigne_mm_s(MOTEUR_A, 100);
AsserMoteur_setConsigne_mm_s(MOTEUR_B, 100);
int step_ms = 1;
while(1){
sleep_ms(step_ms);
// Tâche cyclique
AsserMoteur_Gestion(step_ms);
}
}
Tandis que ce code permet d'utiliser les fonctions trajets / trajectoire avec différents mode d'évitement
#include "Module_deplacement_robot_differentiel/Deplacement.h"
#include <stdio.h>
void main(void)
{
stdio_init_all();
// Initialisation
AsserMoteur_Init();
Trajet_init();
// Pour l'exemple
int step_ms = 1;
enum etat_trajet_t etat_trajet = TRAJET_EN_COURS;
struct trajectoire_t ma_trajectoire;
Trajectoire_bezier(&ma_trajectoire,
0, 0,
250, 0,
0, 250,
250, 250);
while(1){
// Tâches cycliques
AsserMoteur_Gestion(step_ms);
Localisation_gestion();
// Gestion du trajet
if(etat_trajet == TRAJET_EN_COURS){
etat_trajet = Deplacement_parcourir_trajet(ma_trajectoire, step_ms, EVITEMENT_SANS_EVITEMENT);
}else{
AsserMoteurs_stop();
}
// Attente de 1 ms
sleep_ms(step_ms);
}
}