Perché questo programma funziona in LabView se destinato al computer ma non a NXT?

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

  •  28-10-2019
  •  | 
  •  

Domanda

Ho un programma scritto in Labview per il mio LEGO Mindstorms NXT 2.0.Quando il target è impostato sul computer, il programma funziona perfettamente.Tuttavia, quando imposto il target sull'NXT, il programma non funziona come se fosse mirato al computer.

Il programma fa avanzare il robot finché non si trova a 30 centimetri da un oggetto, che viene rilevato dal sensore a ultrasuoni dell'NXT.Quindi il robot si fermerà.Se l'oggetto viene spostato e non c'è nessun oggetto entro 30 centimetri dal sensore a ultrasuoni dell'NXT, il robot andrà avanti di nuovo finché non si troverà nuovamente a 30 centimetri di distanza da un oggetto.Poi si fermerà.

Funziona quando il target è impostato su computer in Labview, ma non quando è impostato su NXT.Quando impostato su NXT, una volta rilevato il primo oggetto, si fermerà.Ma se l'oggetto viene rimosso e non c'è più alcun oggetto nel raggio di 30 centimetri dal sensore a ultrasuoni, il robot rimarrà fermo e non si muoverà in avanti.

Ecco uno screenshot del diagramma a blocchi:block diagram

Ecco un collegamento al codice sorgente del programma.

Qualsiasi aiuto sarebbe molto apprezzato.

È stato utile?

Soluzione 3

Ho risolto questo problema aggiungendo un blocco di attesa di 200 ms per rallentare l'NXT.Ha funzionato, sembrava che il mattone stesse andando troppo avanti.

Altri suggerimenti

La mia esperienza con NXT è molto limitata, ma suggerirei di utilizzare i VI stringa per visualizzare alcuni dati di debug sullo schermo dell'NXT (come i, la distanza, ecc.).Ciò ti consentirà di determinare dove si trova il programma e potrebbe aiutarti a trovare il problema.

Inoltre, in LV non è generalmente consigliabile avere un loop che non abbia qualcosa che ne controlli la velocità di esecuzione.Questo potrebbe essere diverso per il codice in esecuzione sull'NXT, ma suggerirei comunque di aggiungere una semplice attesa al ciclo.

Non vedo un errore nel tuo codice, ma quello che farei durante la distribuzione sul target NXT è rendere il ciclo infinito (sostituire Stop con una costante False) ed eliminare il grafico della forma d'onda.Non ti servono a NXT.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top