Pourquoi ce programme fonctionne-t-il dans LabView lorsqu'il est ciblé sur un ordinateur mais pas sur NXT?

StackOverflow https://stackoverflow.com/questions/8404029

  •  28-10-2019
  •  | 
  •  

Question

J'ai un programme écrit en Labview pour mon LEGO Mindstorms NXT 2.0. Lorsque la cible est définie sur l'ordinateur, le programme fonctionne très bien. Cependant, lorsque je définis la cible sur le NXT, le programme ne fonctionne pas de la même manière que lorsqu'il est ciblé sur l'ordinateur.

Le programme fait avancer le robot jusqu'à ce qu'il soit à 30 centimètres d'un objet détecté par le capteur à ultrasons du NXT. Ensuite, le robot s'arrêtera. Si l'objet est déplacé et qu'il n'y a pas d'objet à moins de 30 centimètres du capteur à ultrasons du NXT, le robot avancera à nouveau jusqu'à ce qu'il soit à nouveau à 30 centimètres d'un objet. Ensuite, cela s'arrêtera.

Cela fonctionne lorsque la cible est définie sur ordinateur dans Labview, mais pas lorsqu'elle est définie sur NXT. Lorsqu'il est réglé sur NXT, une fois le premier objet détecté, il s'arrête. Mais, si l'objet est retiré et qu'il n'y a plus d'objet à moins de 30 centimètres du capteur à ultrasons, le robot restera stationnaire et ne se déplacera pas vers l'avant.

Voici une capture d'écran du diagramme: schéma de principe

Voici un lien vers le code source du programme.

Toute aide serait grandement appréciée.

Était-ce utile?

La solution 3

J'ai corrigé ce problème en ajoutant un bloc d'attente de 200 ms pour ralentir le NXT.Cela a fonctionné, il semblait que la brique prenait de l'avance sur elle-même.

Autres conseils

Mon expérience avec NXT est très limitée, mais je vous suggère d'utiliser les VIs de chaîne pour afficher des données de débogage sur l'écran du NXT (comme i, la distance, etc.).Cela vous permettra de déterminer où se trouve le programme et pourrait vous aider à trouver le problème.

En complément, dans LV, il n'est généralement pas recommandé d'avoir une boucle qui n'a pas quelque chose contrôlant son taux d'exécution.Cela peut être différent pour le code exécuté sur le NXT, mais je suggérerais quand même d'ajouter une simple attente à la boucle.

Je ne vois pas d'erreur dans votre code, mais ce que je ferais lors du déploiement sur la cible NXT est de rendre la boucle infinie (remplacer Stop par une constante False) et de supprimer le graphique de forme d'onde.Vous n'en avez pas besoin chez NXT.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top