Dato: 4. december 2009
Varighed: 7 timer
Deltagere: Annette, Rasmus og Samuel
Mål
At undersøge gyroskopet og få bluetooth kommunikation til at fungere mellem PC og NXT.
Fremgangsmåde
Bluetooth kommunikationen
En af de første ting der skulle laves i projektet, var at få kommunikation mellem PC og NXT til at virke. Det skal bruges i flere sammenhænge, blandt andet til at opdatere parametre til PID regulering løbende. Derfor blev der afprøvet programmer fra tidligere studerendes projekter.
Undersøgelse af gyroskop
Med baggrund i materialet fra NXT om gyrosensoren laves undersøgelser af hvordan den fungerer. Dette indebærer blandt andet:
• Hvilke værdier fås fra porten?
• Hvor stor er nøjagtigheden?
• Drift.
• Hvordan skal softwaren tilpasses?
Resultater
Bluetooth kommunikationen
Problemer
Compile: Det første problem var at finde ud af hvordan programmerne skulle compiles. Modtagerprogrammet der skulle kører på NXT’en gav sig selv, da det bare skulle køre som normalt. Programmet på PC’en var der dog tvivl om.
Efter at have søgt på nettet og set hvad andre tidligere grupper havde gjort, var konklusionen at den skulle compiles som et almindelig java program, dog med en classpath til pccomm.jar filen i lejos mappen.
Dette virkede dog ikke, da compileren stadigvæk ikke kunne forstå syntaksen for bluetooth kommunikation i javafilen. Flere søgninger på nettet viste andre jar filer der skulle med, og i stedet for at skrive dem hver gang noget skulle compiles, blev de skrevet ind i miljøvariablerne i windows:
CLASSPATH
C:\Program Files\leJOS NXJ\pccomms\lib\pccomm.jar;C:\Program Files\leJOS NXJ\pccomms\3rdparty\libbluecove.jar; bluecove-gpl.jar
Dette gjorde at filen blev compilet uden fejl, men det viste sig senere at det ikke var en permanent løsning. (Se Kørsel på PC nedenfor).
Kørsel på PC: Efter det var lykkedes at få compilet filerne rigtigt, var næste problem at få kørt PC programmet. Da PC filen skulle compiles som et normal java program (Compile delen), var det også logisk at den skulle køres på denne måde. Problemet var dog, at der kom en ”noClassDefFoundError”, der sagde at filen ikke blev fundet.
C:\Program Files\leJOS NXJ\pcsamples\BTSend>java BTSend
Exception in thread "main" java.lang.NoClassDefFoundError: BTSend
Caused by: java.lang.ClassNotFoundException: BTSend
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: BTSend. Program will exit.
Dette blev løst ved at tilføje stien til den mappe hvor filen lå, til classpathen:
java -classpath "C:\Program Files\leJOS NXJ\pcsamples\BTSend" BTSend
Dette løste problemet, og programmet udskrev den første linje som den skulle, inden den gik i gang med Bluetooth forbindelsen. Her kom den næste fejl dog:
C:\Program Files\leJOS NXJ\pcsamples\BTSend>java -classpath "C:\Program Files\le
JOS NXJ\pcsamples\BTSend" BTSend
Exception in thread "main" java.lang.NoClassDefFoundError: lejos/pc/comm/NXTConnector at BTSend.main(BTSend.java:27)
Caused by: java.lang.ClassNotFoundException: lejos.pc.comm.NXTConnector
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
... 1 more
Dette blev efterfulgt af en lang serie af søgninger på nettet, som ikke umiddelbart gav resultat. Dog var der nogle der benyttede kommandoerne nxjpcc til at compile de programmer der skulle bruges på PC’en med, og nxjpc til at køre dem. Hvis man bruger windows, kommer disse kommandoer fra to .bat filer som ligger i leJOS NXJ\bin. Disse filer følger ikke med i lejos 0.8, som vi bruger eller tidligere versioner, men i 8.5. Disse filer blev hentet ind og afprøvet.
Nxjpcc virkede fint og compilede, men der kom stadig fejl efter nxjpc. Da disse bat filer selv opsætter classpath og andet der skal bruges, var det ikke længere nødvendigt selv at have defineret classpath. Den classpath der var blevet sat under computerens miljøvariabler, blev slettet, da der var mistanke om at den var skyld i fejlen. Ganske rigtigt. Da miljøvariablen CLASSPATH blev slettet, og kommandoen nxjpc BTSend blev kørt, kom følgende output:
C:\Program Files\leJOS NXJ\pcsamples\BTSend>nxjpc BTSend
BlueCove version 2.1.0 on winsock
Failed to connect to any NXT *
BlueCove stack shutdown completed
* Det skal bemærkes, at der ikke var nogle enheder at forbinde til, så det var helt rigtigt at den ikke kunne få forbindelse.
Konklusion - ”Det gode råd”
Hvis andre windowsbrugere har problemer med at compile og køre Bluetooth programmer til kommunikation mellem PC og NXT, er der en simpel løsning til Lejos 0.8 og tidligere:
Lad være med selv at sætte classpaths!
Hvis der benyttes Lejos 8.0 eller ældre, mangler der kun 2 filer, nxjpcc.bat og nxjc.bat, som skal ligge under …\leJOS NXJ\bin.
Når disse filer er lagt ind, lukkes alle cmd vinduer der skal benytte filerne (ellers er det ikke sikkert at de finder filerne) og de åbnes igen.
Derefter bruges kommandoen nxjpcc til at compile PC filerne, og nxjpc til at køre dem.
Undersøgelse af gyrosensoren
Der skal udføres videre undersøgelser af gyrosensoren, så det hele vil blive beskrevet samlet i projektaktivitet 2.
Konklusion
Efter stort besvær kom bluetooth kommunikationen mellem PC og NXT til at virke. I næste projektaktivitet skal det gøres færdigt med et interface og der skal laves en protokol til at sende dataværdierne. De første undersøgelser af gyrosensoren blev også påbegyndt og vil fortsætte i projektaktivitet 2.
Referencer
Download af nxjpcc og nxjpc filerne: Nxj-pc-compile.rar
Kildekode til Bluetooth Sample fra Lejos: BTSend
Tidligere studerendes projekt: Marvin
torsdag den 3. december 2009
Projektaktivitet 1
Projektaktivitet 1
Abonner på:
Kommentarer til indlægget (Atom)
Ingen kommentarer:
Send en kommentar