Question:
Cadre de contrôle asynchrone
Cerin
2014-10-28 03:15:02 UTC
view on stackexchange narkive permalink

Quelqu'un peut-il recommander une bibliothèque de planification asynchrone basée sur Arduino pour contrôler un petit robot mobile?

J'écris le code de contrôle d'un petit robot basé sur Arduino-Uno à 2 roues. Il dispose de quelques capteurs de pare-chocs, de capteurs infrarouges et de capteurs à ultrasons. J'ai écrit une première passe à partir de zéro, en utilisant loop () pour lire les capteurs et définir les valeurs du moteur de manière appropriée, puis attendre que le moteur fasse effet, mais je trouve cela serré. Certains des capteurs, comme les télémètres à ultrasons, nécessitent un petit délai pour fonctionner, et les moteurs nécessitent un délai pour avoir un effet. Bloquer loop () est le moyen le plus simple d'y parvenir, mais cela gaspille des cycles et peut être difficile de chronométrer correctement chaque action sans rejeter d'autres comportements. Ecrire un planificateur asynchrone serait plus efficace, mais beaucoup plus compliqué, et je pense que je réinventerais la roue.

J'ai trouvé cette liste, des bibliothèques de planification existantes, mais Je ne sais pas laquelle, le cas échéant, serait appropriée.

Vous pouvez également jeter un œil à la bibliothèque cosa sur github.
@jfpoilpret, Intéressant. Je ne suis pas sûr de vouloir supprimer la bibliothèque Arduino par défaut uniquement pour utiliser certains composants de planification. Et c'est dommage que la documentation de Cosa soit si mauvaise. Pourquoi tant de développeurs pensent-ils qu'un index de classe avec peu de commentaires et aucun exemple est tout ce dont ils ont besoin pour la documentation? En regardant cela, on ne sait pas ce que je devrais utiliser. Il a une classe Timer, Alarm et Periodic, ainsi que quelques autres classes qui peuvent également être liées à la planification.
vous êtes un peu injuste sur la documentation, ce n'est pas mal du tout (par rapport à la bibliothèque standard arduino du moins). Concernant les exemples, il y en a plus de 100 et ils sont même un très bon moyen d'apprendre le Cosa.
@jfpoilpret, Je conviens que les documents Arduino standard ne sont pas non plus excellents, mais les exemples sont mieux ventilés par ensemble de fonctionnalités. J'ai vu le répertoire [examples] de Cosa (https://github.com/mikaelpatel/Cosa/tree/master/examples), mais à part l'exemple CosaAlarm, je ne vois rien d'autre qui utilise les classes de planification.
Bonjour, je teste actuellement leOS / leOS2 (voir https://github.com/leomil72/) qui semble être une très belle librairie de planification pour Arduino
Deux réponses:
cgarner
2015-09-24 17:50:00 UTC
view on stackexchange narkive permalink

Je recommande d'écrire le vôtre en C ++. Arduino fonctionne bien avec C ++ tel qu'il est écrit en C. Vous pouvez vous concentrer sur l'obtention du comportement asynchrone pour faire ce dont vous avez besoin au lieu d'écrire des pilotes. Je ne pense pas qu'il faudra plus de temps pour apprendre suffisamment de C ++ pour que cela fonctionne que pour apprendre à utiliser, et éventuellement à réparer, une bibliothèque. Vos connaissances en C ++ seront beaucoup plus généralement utiles que de connaître une bibliothèque spécifique.

Igor souligne les avantages de passer à un système d'exploitation en temps réel. Je suis d'accord et je pense que, si vous voulez travailler sur des robots à long terme, vous devriez aller avec un RTOS et vous éloigner d'Arduino. Travailler avec C ++ et Arduino est une façon de commencer.

Igor Stoppa
2015-08-30 13:32:32 UTC
view on stackexchange narkive permalink

Je recommanderais ChibiOS: même s'il vient juste de prendre en charge Arduino et qu'il lui manque quelques pilotes (j'en écris un pour INTx et PCINT), il a un design fondamentalement sain, une communauté autour et l'auteur lui-même est très réactif.

Vous devrez peut-être écrire ou porter les pilotes pour les boucliers externes, mais l'avantage est de vous débarrasser de la crotte qui sévit dans la plupart des bibliothèques Arduino.

Vous pouvez même choisir entre 2 RTOS:

  • ChibiOS RT, un RTOS à part entière.
  • ChibiOS NIL, un OS minimaliste, en fait presque un planificateur, qui laisse plus d'espace et de temps d'exécution pour votre propre code. -Mais si vous vérifiez la quantité de FLASH absorbée par un binaire typique construit avec les bibliothèques Arduino par défaut, vous verrez qu'il extrait une grande quantité de choses généralement inutilisées, vous pouvez donc les échanger contre l'utilisation du RT complet .

Clause de non-responsabilité: je suis juste un utilisateur très heureux de l'OS, je n'ai aucune autre implication avec lui, en particulier la partie commerciale.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...