J’ai comme projet de réaliser une base roulante autonome évoluant dans un environnement connu.
Celle-ci serait composée :
Pour ce qui est de la motorisation, de 2 roues motorisées par des moteurs CC indépendants et d’une roue folle.
Pour les capteurs, de 2 capteurs US (pour la détection d’obstacle) et également deux odomètres (un par roue motorisée, afin de connaître la position de la base dans l’environnement connu) + éventuellement des fin de course pour détecter une éventuelle collision.
Je me questionne pour le moment sur deux points (mais c’est certainement que le début …).
Tout d’abord j’aurai voulu savoir quel type d’algorithme, concernant la gestion du déplacement, est le plus adapté pour ce type de projet. Partant du principe que l’environnement dans lequel se déplacera la base roulante est connu et pour les imprévus ceux-ci seront détectés par les capteurs US. Pour le moment, je pensais « cartographier » l’environnement dans une matrice et ensuite utilisé soit un algorithme type « ligne droite » ou «depth first search » .
Ensuite, ce projet est-il réalisable avec une carte arduino UNO + shield carte SD ou faut-il passer à la gamme du dessus arduino MEGA ou passer à un autre type de produit …
(D’un point de vu entrée/sortie, l’arduino UNO me semble largement suffisante, maintenant j’ai un doute concernant l’implémentation d’un algorithme de déplacement sur ce type de carte).
bonjour, niveau I/O ça passe et même niveau algo elle tiendra le choc reste juste à voir si tu fait une usine à gaz ou pas, la la uno ne suffira peut être plus à stocker ton programme... à voir, possible si tu optimise ton code moi je dit !
D'un point de vue purement matériel une carte UNO serait envisageable.
2 interfaces de puissance pour moteur DC -> 2 broches numérique PWM
2 capteurs ultrason -> 2 broches analogique ou 2 broches numérique suivant le type de capteur
2 odomètres -> 2 broches numérique
une UNO :
6 broches anlogique
11 broches numérique
Donc ça passerai sans probléme.
Maintenant concernant ton programme :
Pour le moment, je pensais « cartographier » l’environnement dans une matrice et ensuite utilisé soit un algorithme type « ligne droite » ou «depth first search » .
C'est une bonne idée MAIS tu ne dispose que que 30Ko de mémoire flash et 2Ko de ram.
Tu n'arrivera jamais à faire passer une carte matricielle dans 2Ko de ram, sur un PC avec des Go de ram pourquoi pas mais pas ici.
La solution d'une carte SD est pas mal, par contre il faudra travailler avec seulement ~380 octets de ram disponible une fois la carte SD initialisé.
Pour moi une solution serait d'avoir une carte sous un format à définir et une RAM externe pour la stocker et travailler dessus.
Il existe des ram SPI chez microchip de 32Ko (23k256, /!\ alim 3v3)
si je reprends la solution de SKYWODD, il faudrait donc décharger le contenu de la carte SD dans la RAM à la mise sous tension de la base roulante et faire l'inverse avant la mise hors tension ?
concernant l'algorithme de déplacement, en avez-vous un précis à me conseiller ?
cyval:
si je reprends la solution de SKYWODD, il faudrait donc décharger le contenu de la carte SD dans la RAM à la mise sous tension de la base roulante et faire l'inverse avant la mise hors tension ?
Pas besoin de la décharger la ram à la mise hors tension, la carte étant connu et la ram par définition s'effaçant lors elle n'est plus alimenté.
cyval:
concernant l'algorithme de déplacement, en avez-vous un précis à me conseiller ?
Regarde du côté des robots pour parcourir un labyrinthe "maze solver", il ont des algo relativement puissant pour la gestion d'une carte / chemin.
elriri:
peux être envisager une liaison sans fil, qui permettrait le stockage de la carte...
A ce moment là autant déporter la gestion des déplacements sur l'ordi et uniquement envoyer des ordres de déplacement et des info de capteurs.