Pour compléter la réponse de Mike :
- Sur quels critères dois je choisir mon microcontrôleur ?
Tout d'abord, comme dit Mike, il faut différencier micro-controleur (type Arduino) et micro-ordinateur (type Raspberry pi)
Pour un micro-controleur, les principaux critères sont :
- la facilité d'utilisation
- la tension de fonctionnement (5V, 3.3V ou 1.8V en général), qui déterminent ce que tu peux y connecter directement
- le nombre de pins d'entrée/sortie et leurs types (combien de pins numériques, combien d'entrées analogiques, combien de PWMs, combiens de pins d'intéruption, combien de ports de commnication et lesquels (I2C, UART, SPI, US, CAN, ...)
- la puissance de calcul
- la mémoire (RAM et flash)
En pratique, si tu débutes, je te conseilles un Arduino Uno ou un Arduino Mega si tu as beaucoup de choses à connecter. En soit, c'est loin d'être le mieux en termes rapport performance/prix, mais les Arduinos sont très faciles à utiliser, très bien documentés, et ont une très grosse communauté (tu trouvera plein de monde sur ce forum par exemple qui pourra t'aider si tu as un problème dans ton code Arduino ; si tu prends un STM32 par exemple à la place, tu aura probablement bien plus de capacités à prix égal, mais c'est beaucoup plus dur à prendre en main, et je ne sais pas si tu trouvera quelqu'un sur ce forum qui pourra t'aider).
Une fois que tu sera à l'aise en général avec les Arduinos, si tu as des besoins spécifiques, il sera toujours temps de chercher un microcontroleur qui correspond exactement à ton cahier des charges
- Y'a t'il un lien entre le choix d'un microcontrôleur et l’utilisation de ROS ?
Sur un micro-controleur, tu vas probablement manquer de puissance pour faire tourner ROS, et j'ai de gros doutes que tu trouves des binaires pour l'installer (peut-être qu'il y a moyen de compiler depuis les sources sur certains gros microcontroleurs). En gros, ROS, c'est prévu pour tourner sur un (micro) ordinateur sous linux. Le choix classique en robotique amateur est le Raspberry Pi (là encore, une grosse communoté et pas mal de documentations), mais si besoin, tu peux aussi utiliser quelque chose de plus puissant (par exemple un Odroid, voir encore bien plus puissant si tu en as le besoin et le budget (au travail, on utilise une Jetson Xavier : 8 coeurs, GPU 512 coeurs, 32Go de RAM ... mais 750€)). Pour commencer, un raspberry Pi 4 est je pense un bon choix.
- Y'a t'il des cas ou on utilise plusieurs microcontrôleurs pour un même robot ? si oui pourquoi ?
Oui.
Tout d'abord, un micro-controleur + un micro-ordinateur est très classique, car chacun est bon sur des points différents :
- l'ordinateur est bon pour faire de gros calculs rapidement (ex : traitement d'image, machine learning, navigation, ...), mais ne permet pas de gérer facilement du temps réel, et n'est pas très proatique pour interagir avec l'électronique
- le micro-controleur est plus lent, et ne pourra pas faire de gros calculs. Par contre on maîtrise très bien ce qui s'y passe, on peut donc facilement faire du controle "bas niveau" en temps réel (commande de moteurs, ...). De plus, il a plein d'entrées solties de différents types (numériques, analogiques, PWM, ...) qui font que c'est très pratique pour interagir avec de l'électronique (drivers de moteurs, capteurs, ...)
Ensuite, plusieurs micro-controleurs, c'est aussi parfois utile :
- pour gérer beaucoup d'entrées sorties (j'ai un projet perso en cours où j'ai 16 moteurs, avec pour chacun une limitation de courant et une mesure de courant, et pour 8 d'entre eux un retour de position : j'ai décidé d'utiliser 8 microcontroleurs, chacun gérant deux moteurs avec tous ce qui vas avec (j'ai aussi un raspberry pi (micro-ordinateur) qui commande le tout)
- pour séparer les fonctions (par exemple un micro-controleur qui gère les capteurs de proximité, et un autre qui s'occupe des moteurs) : souvent on peut tout regrouper, mais parfois ça peut être utile de séparer, par exemple si on veut créer un circuit imprimé pour chaque fonctionnalité
- pour garantir que plusieurs choses peuvent se produire chacune pile au bon moment : si tu as besoin de controleur super vite un moteur (par exemple une fois toutes les 1ms exactement), tu peux avoir du mal à en même temps lire 10000 fois par second un capteur à intervalles régulier : si tu utilises un micro-controleur pour lire le capteur, et l'autre pour controler le moteur, tu peux garantir que tu pourra faire chaque chose pile au bon moment