Bonjour,
pour les capteurs ultrasons (j'ai jamais utilisé ce modèle en particulier), j'ai constaté les "problèmes" suivants :
- si le capteur "vise" horizontalement, il lui arrive de détecter le sol (de manière "aléatoire"). La solution que j'avais trouvé était d'incliner le capteur légèrement vers le haut
- si le capteur est un peu "à l'intérieur" du robot, il lui arrive de détecter le robot (ça pourrait expliquer ton 0 et ton 3)
- les obstactes (surtout lisses) qui ne sont pas assez perpendiculaires au "faisceau" ultrason ont du mal a être détectés (par exemple, avec 5 capteurs US à l'avant du robot, je n'arrivais pas à détecter un carton d'emballage de 50cm de coté placé à 45° une demi mètre devant le robot!. Si les obstacles sont quasi-parallèles au faisceau, alors tu n'a quasiment aucune chance de les détecter (sauf s'ils sont très rugueux)
- les cônes de détection sont une simplification "abusive" : tu détectera des obstacles bien perpendiculaires au "rayon" ultrason même un peu en dehors du cône, mais tu ratera des obstacles à l'intérieur du cône s'ils sont mal orientés. En gros, plus tu es en face du capteur, plus il est sensible. Selon l'obstacle et son orientation, le signal de retour est plus ou moins fort. Si le signal est assez fort par rapport à la sensibilité, alors il est détecté. Le cône de détection n'est qu'une limite arbitraire de sensibilité.
Pour ce qui est d'un lidar (acheté ou bricolé avec un TF-mini+moteur), tu as une bien meilleur précision, mais tu te retrouve avec beaucoup de données à traiter (pour un lidar comme celui du lien, je ne suis pas sur qu'un Arduino suffise, il te faudra probablement un rasperry Pi). Après, vu que tu as beaucoup de données, tu vas pouvoir faire une navigation beaucoup plus intelligente (contourner les obstacles avant d'être en butée, adapter ta vitesse à la distance aux obstacles, créer une carte de ton environnement et t'y localiser, ...). Donc un lidar est un peu plus complexe a utiliser, mais ouvre la porte à beaucoup de possibilités.
Pour l'idée d'en bricoler un :
- si tu fais de la rotation continue, il faut penser à tes cables : soit tu fait du sans fil (necessite de monter batterie + lidar + module de communication sans fil (+micro-controleur?)) sur la partie tournante, soit tu utilises un moteur à arbre creux et un contact rotatif (slip ring en anglais) pour transmettre le signal et l'alim malgré la rotation (attention, les "slip ring" premier prix chinois ne résistent pas très longtemps à une rotation rapide en continue (de mémoire, quand on avait fait un petit lidar maison pour un projet scolaire, on commençais à avoir des "fils" du slip ring qui déconnaient après une dizaine d'heures d'utilisation)
- si tu ne fais pas de rotation continue, il faudra que tu penses à ralentir progressivement avant la fin (sinon tu vas sauter des pas sur tu moteur pas à pas). Tu n'aura donc pas un écart angulaire constant (mais c'est pas très grave tant que tu le sais)
- si tu utilises un moteur pas à pas, tu ne sais pas où est ton moteur au démarrage : pour résoudre ce problème, tu peux utiliser un bouton en butée (si tu ne fais pas de tours complets), un bouton/contact magnétique/barrière photovoltaique pour des tours complets, ou simplement la mesure d'un obstacle "fixe" faisant partie de ton robot pour te recaller
- si jamais tu utilises un servo-moteur, c'est plus facile, mais tu sera assez lent
- tu peux utiliser un moteur à courant continue avec un encodeur absolu ou encodeur incrémental avec signal de fin de tour : ça permet une très bonne précision angulaire et une vitesse de rotation élevée, mais c'est un peu plus cher