NXT programmering

Hei å hå folkens!
Nå har jeg bygd alle de modellene som fulgte med på CD’en til Minstorm NXT’en. Samt bygd alle de forskjellige modellene, nå over til MOC’s og egne program…
Første spørsmål som da dukker opp er hvordan man programmerer funksjoner med Bluetooth? Noen som har forsøkt seg på dette?
Er jo greit nok fra NXT’en sin side, der kan man ta imot meldinger via Bluetooth og utføre en action på disse meldingene.
Jeg tenkte på en fjernstyrt robot hvor man for eksempel taster på mobiltelefonen 2 for forover, 8 for bakover, 4 sving venstre, 6 sving høyre og 5 er stopp.
Men da kreves det jo at jeg har ett eller annet på min Nokia 6310i som sender disse tallene via Bluetooth til roboten.
Det er forresten veldig greit å kunne laste opp programmer via Bluetooth uten å måtte ha kabelen i for hver gang man skal gjøre en liten endring.
Men nå tilbake til LEGO-byggebordet Smile
Første oppdrag nå er å lage en helt vanlig bil som kan kjøre rundt av seg selv og ikke treffe objekter. Og om den skulle havne over en sort strek så skal den følge den så lenge den kan. Dette er helt sikkert enkelt, men er jo greit å starte litt enkelt med den nye programmeringen “NXT-G”.
Etterhvert tror jeg nok at jeg vil gå over til ett av de C-baserte programmverktøyene. Har testet NQC litt til min gamle RCX men har ikke programmert mye der.

For de som ikke liker å lese bruksanvisninga (hvem liker nå egentlig det?) så har jeg funnet en flott guide som går igjennom mye av programmeringen i NXT-G med video →
http://www.ortop.org/NXT_Tutorial/index.html
Denne guiden tar for seg både de grunnleggende tingene men også de mer avanserte. Og det var en del ting der som jeg ikke hadde fått med meg når jeg leste bruksanvisningen.
Og forresten så er hjelpfunksjonen i NXT-G veldig bra.

F0NIX wrote:
Men da kreves det jo at jeg har ett eller annet på min Nokia 6310i som sender disse tallene via Bluetooth til roboten.
Ja, du må nok skrive et program til Nokia'en. Regner med at det finnes et eller annet SDK. Ellers så er det sikkert en eller annen luring som allerede har gjort det. Smile Tutorial'en ser bra ut. Bra tips!

SDK’en for Bluetooth og NXT’en er lastet ned. Men jeg kan ikke så mye programmering (enda) at jeg tør kaste meg ut i slikt.
Når jeg leitet litt på lugnet, så ser det ut til at det er ett par stykker der som faktisk har planer om å lage en slik enkel applikasjon som funker på Nokia S60 mobiltelefoner. Så da kan jeg jo bare vente til de er ferdig Smile
Nå har jeg det så travelt om dagen og kveldene at det ikke blir tid til noe NXT-G programmering heller. Har nok med de programmene jeg bruker på jobben (programmerer styringssystemer for Audio Video anlegg). Noen av de jeg bruker ligner veldig på C. I tillegg designer jeg layouten til selve touchpanelet til de styringene.
Men, må vel roe seg senere på høsten/vinteren og da setter jeg igang Smile

Har nesten ikke hatt tid til å jobbe med NXT ennå, men har støtt på et lite problem. Har en beltedrevet robot som jeg ønsker skal svinge raskt og presis, dvs motorene går motsatt vei. Noen som vet hvordan man får dette til med NXT?

Centurius wrote:
Har nesten ikke hatt tid til å jobbe med NXT ennå, men har støtt på et lite problem. Har en beltedrevet robot som jeg ønsker skal svinge raskt og presis, dvs motorene går motsatt vei. Noen som vet hvordan man får dette til med NXT?
Kan du utdype problemet. Det skal ikke være noe problem å få motorene til å gå hver sin vei. (?) Selv har jeg hatt problemer med å få blåtann-forbindelsen til å fungere, men etter tips på lugnet, fjernet jeg driverne som fulgte med bt-dongle'n og reinstallerte med WinXP-driverne i steden, og da fungerte det.
Centurius wrote:
Har nesten ikke hatt tid til å jobbe med NXT ennå, men har støtt på et lite problem. Har en beltedrevet robot som jeg ønsker skal svinge raskt og presis, dvs motorene går motsatt vei. Noen som vet hvordan man får dette til med NXT?
Altså er jo ikke noe problem å få motorene til å gå hver sin vei om det var det du tenkte på. For det første hva bruker du for å programmere med? NXT-G (det programmet som følger med Mindstorm NXT) eller ett annet program? Til nå har jeg bare brukt NXT-G mot NXT enheten. Der kan du i en helt vanlig motorblokk (den med to tannhjul), krysse av for B og C motorene, sett svinging helt til enten høyre eller helt til venstre. Da går motorene akkurat like mange omdreininger, men motsatt vei. Men å få en "presis" svinging er vel noe annet. Da kommer det jo helt ann på hvordan du har bygget roboten din. Altså er beltene for eksempel drevet direkte av motorene eller er det noe nedgiring imellom? For å få det presis må du nok bruke "prøv å feil" metoden for å finne ut hvor lenge motorene må gå for å svinge en viss antall grader. Det enkleste er jo å lage ett testprogramm som først kjører rett forover etter en stripe og så tar en 180 grader sving og kjører etter den samme stripen tilbake. Så er det bare å justere antall omdreininger på kommandoblokken som utfører svingingen til du har nøyaktig 180 grader. Når du har funnet ut hvor mye du må ha på 180 grader, så kan du bare dele antall omdreininger på 180 og så har du hvor mange omdreininger du må ha pr grad sving. Nå vil nok dette tallet ikke bli så forferdelig nøyaktig siden det kan være forskjellig grep på beltene på forskjellig underlag. Jeg har hatt størst nøyaktighet på svingene på en robot med de store hjulene som kom med det første mindstorm settet og med lav fart. Monterte hjulene rett på NXT motorene. Da får man fart også når man trenger det. Men fart gir også større feil under svinging da hjulene kan spinne litt, helt vilkårlig når og hvor. Nøyaktig sving får man stort sett kun i lav fart når hjulene får gått grep på underlaget. Så trikset her er jo å bremse ned før man svinger, ta svingen og så gasse på igjen.

Hm… lurer på åssen man får fjernet en “Sequence beam” ?
Har laget ett program som er inne i en loop, og midt inne i loopsekvensen dreiv jeg å testet ut forskjellige ting, deriblant laget jeg en avgreining på “Sequence beam” men den ble litt for lang og enden havnet på undersiden av rammen for loopsekvensen. Og det var med en data tab’en til en display block utvidet.
Så nå lurer jeg på hvordan kan jeg slette denne avgreiningen. Programmet fungerer men det “ser” ikke så ryddig ut med den “hengende ut i intet” Smile
Alle andre objekter i programmet kan man enten “ramme inn” med hjelp av pila slik at den blir markert eller klikke en gang på objektet og så trykke på Delete knappen for å fjerne objektet. Men det fungerer ikke på denne sequence beam’en.
Ett helt annet spørsmål:
Om jeg ønsker å dele programmet med andre, er det nok å bare dele ut *.rbt fila? Følger eventuelle kommentarer i programmet med da?

Har nå utforsket programvaren til NXT og NXT education (NXT-G?), og synes det blir for uoversiktelig ved store programmer. Må nok si at jeg fremdeles foretrekker RoboLab som verktøy. RoboLab 2.9 har jo støtte både for RCX og NXT.
Ved forholdsvis enkle konstruksjoner fungerer NXT-G aldeles utmerket.

Nå har jeg sett mer av det nye i RoboLab 2.9
NXT-G kan ikke en gang kalles RoboLab “Light” selv om begge er basert på den samme programvaren: Lab View fra National Instruments.
Man kan si hva man vil om C og lignende tekstbaserte verktøy (hvis en har tid kan man jo bruke slike “gammeldagse” utviklingsverktøy). Mulighetene som nå er i RoboLab er helt enestående!

Si hva du vil, men slike grafisk baserte program vil aldri kunne overgå det du kaller “gammeldagse” tekstbaserte med tanke på funksjonalitet.

Hvilken funksjonalitet er det du tenker på som ikke kan programmeres med RoboLab / Lab View? (Jeg spør for å lære)

Aner ikke. Jeg har aldri påstått at det er noe som ikke kan programmeres i programmet du nevner. Mente bare at tekstbasert programmering i verste fall gir deg samme funksjonalitet som grafisk, ofte mer.

Dukker denne diskusjonen opp igjen… Rolling Eyes
Tekno: Du svarte aldri på dette her:
http://www.setbb.com/brikkelauget/viewtopic.php?t=67&mforum=brikkelauget
Personlig synes jeg RoboLab og LabView suger! Laughing

Thomas wrote:
Personlig synes jeg RoboLab og LabView suger! Laughing
Hva synes du om NXT-G da? Smile Tipper at du hater det også... siden du ikke liker bokser og streker. Selv er jeg ikke dreven programmerer i hverken C eller andre språk, selv om jeg har drevet å programmert i mye forskjellig (eller kansje akkurat derfor?). Så jeg liker faktisk NXT-G. Synes NXT-G virker ikke direkte intuitivt, men når man har skjønt hvordan de forskjellige blokkene fungerer og vet hvilke kombinasjoner som gir ønsket resultat. Så fungerer NXT-G greit til de enkle tingene jeg ser for meg at de kreasjonene som jeg kommer til å lage nå i starten. På den andre siden så ser jeg jo at det fort blir mye scrolling i programmet når det blir litt mer avansert. Største problemet er jo å vite hvilke funksjoner som ikke fungerer sammen. Desverre så er ikke kompilatoren i programmet noe særlig bra (eller programmet selv) når det kommer til å sjekke om programsnutter som kan lage konflikter. Programmet lages og sendes rått over til NXT'en som bare blir helt forvirret når man for eksempel lager to "sequence beamer" med hver sin motor blokk på som styrer samme motor. Siden programmet er ment for folk som ikke kan noe om programmering fra før synes jeg at slike ting burde vært gjort oppmerksom på, og at man eventuelt fikk opp en liten advarsel om at slikt kan lage trøbbel. Tekstbasert programmering driver jeg også på med på jobben, og synes det er greit når programmene blir store og lange. Men man må kunne denne programmeringen godt for å kunne klare å få med seg sammenhengene mellom flere "blokker" / "deler" av ett større program. Fodelen er jo at det er lettere å gjøre editeringer. Selve programmeringen med tekstbasert programmering krever heller ikke mye resurser av PC'en man bruker (i sammenligning til NXT-G som tar vanvittig mye resurser, iallefall på min PC). Men foreløpig har jeg valgt å holde meg til NXT-G til de enkle oppgavene som jeg programmerer nå.

Her er et lite svar:
Thomas: Du har rett i at det ikke går an å utkommentere kode i RoboLab. Da får man frem en feilkode. Løses veldig enkelt ved å kopiere koden som midlertidig skal bort til en annen VI. (fil). Vanlige kommentarer er mye bedre enn i konvensjonell kode.
Bruk av logiske funksjoner i sekvens går som en drøm i robolab. Eksempel regulering av en motor: er rotasjonssensor lik rød konteiner *ja /nei . er verdien større enn rød konteiner, motor venstre eller er verdien mindre enn rød konteiner, motor høyre. I RoboLab 2.9 er det imidlertid funksjoner som gjør dette betydelig mer elegant da en kan styre motorhastigheten +/- i 100 trinn…
*konteiner er en variabel, men man kan også bruke variabelnavn hvis en trenger flere enn 3 variabler, noe en ofte gjør.
Både RoboLab og NXT-G er basert på den samme “motoren” Lab-View.
Jeg har nå vært så heldig å komme i kontakt med han som leder teamet som utvikler RoboLab (programmerer), og som har “funnet opp” RoboLab. Han har gitt meg masse nyttig informasjon og inspirasjon. Noen som vet hvem det er Question (liten oppgave til de av dere som er interessert)
I følge ham er NXT-G flott dor “retail” markedet, og til små programmer, men for “proffene” er RoboLab tingen. (jeg har prøvd ut begge, og er enig)
Når det gjelder å “debugge” kode i RoboLab er det bare en drøm i forhold til alt annet!
Uansett: RoboLab er kongen på haugen!

Tekno wrote:
Du har rett i at det ikke går an å utkommentere kode i RoboLab. Da får man frem en feilkode. Løses veldig enkelt ved å kopiere koden som midlertidig skal bort til en annen VI. (fil). Vanlige kommentarer er mye bedre enn i konvensjonell kode.
Hmm, betyr det at kommentarer fra dette RoboLab ikke kan leses i andre (tekstbaserte) editorer? Det er jo i så fall helt latterlig.

Ikke helt sikker på hva du mener med andre teksbaserte editorer, men hvorfor skal du kopiere RoboLab kommentarer inn i et annet program?.
En kan selvsagt bruke Word til å skrive en lengre tekst (med stavekontroll…), og bruke “copy - paste” inn til RoboLab (og omvendt) men ser ikke hentikten, kommentarer skal ikke være lange avhanlinger, men en kort forklarende tekst, eller overskrifter på sekvenser. Du kan ikke kopiere er RoboLAb program til et tekstbasert , hvis det var det du lurte på, det er to helt forskjellige verdner (regner med at du har prøvd RoboLab, eventuelt sett det demonstrert)

Når vi først dikuterer RoboLab og det der, må jeg bare gå sånn halvveis offtopic, og skryte av at jeg og partneren min holder delt førsteplass (blant 5000 elever) med 290 poeng på Aker Verdal. Very Happy Klassen vår hadde det største gjennomsnittet også. Smile
Bilder kommer… Wink
PS: Unnskyld Laughing

Jeg blander sikkert med noe annet, Tekno. Trodde det var mulig å få ut ukompilert kode av det.