• No results found

Att programmera om en LEGO NXT robot Förståelsen av kodgranskning och felsökning inom programmering i språket NXC

N/A
N/A
Protected

Academic year: 2022

Share "Att programmera om en LEGO NXT robot Förståelsen av kodgranskning och felsökning inom programmering i språket NXC"

Copied!
7
0
0

Loading.... (view fulltext now)

Full text

(1)

Att  programmera  om  en   LEGO  NXT  robot  

Förståelsen  av  kodgranskning  och  felsökning   inom  programmering  i  språket  NXC    

  Andreas  Lind  

2014-­‐09-­‐04   alind6@kth.se  

Introduktionskurs  i  datateknik,  II1310    

     

 

 

 

 

(2)

Sammanfattning  

Att  behärska  hur  en  programkod  är  uppbyggd  kan  ta  tid  att  lära  sig,  men  att  sedan  börja  

programmera  och  försöka  hitta  fel  i  en  någorlunda  okänd  programmeringskod  är  betydligt  svårare.    

Jag  har  således  skrivit  denna  labbrapport  som  handlar  om  hur  jag  utan  några  förkunskaper  felsökte   min  första  programmeringskod,  fick  en  LEGO-­‐robot  att  köra  efter  en  krokig  bana  utan  en  

fjärrkontroll,  och  vad  som  gick  bra  och  dåligt  under  laborationens  gång.    

Du  kan  läsa  om  hur  vi  kunde  få  våra  namn  utskrivna  på  robotens  display,  hur  det  var  att   programmera  i  par  och  vad  som  gick  snett  i  koden.    

Det  diskuteras  även  vilka  lösningsmetoder  vi  använde  oss  utav.    

 

Innehållsförteckning  

1.  Inledning  ...  3  

1.1  Bakgrund  ...  3  

1.2  Syfte  och  målsättning  ...  3  

2.  Genomförande  ...  4  

3.  Resultat  ...  5  

4.  Analys  ...  6  

5.  Diskussion  ...  6  

Referenser  ...  7  

Bilagor  ...  7    

 

(3)

1.  Inledning    

I  den  här  laborationsrapporten  får  du  läsa  om  när  jag  och  min  laborationspartner  Rodbeh,  två   kunskapshungriga  studenter  som  för  första  gången  ska  programmera  i  programmeringsspråket  NXC   (Not  eXactly  C).    

I  laboration  som  vi  deltog  i  var  innebörden  att  arbeta  i  par  och  försöka  programmera  en  Lego-­‐robot   samt  få  en  förståelse  för  programmering.  

Det  kommer  bland  annat  att  tas  upp  varför  det  är  bra  att  utföra  denna  laboration  inom   programmering  samt  vad  denna  laborationsrapport  inriktar  sig  på.      

 

1.1  Bakgrund  

Att  kunna  styra  en  robot  via  en  fjärrkontroll  är  inte  det  svåraste.  Om  man  istället  ska  styra  en  robot   via  ett  program  på  en  dator  där  du  själv  måste  programmera  genom  att  skriva  in  olika  kommandon   och  koder  så  ökar  svårighetsgraden.    

Programmering  är  inte  det  lättaste  men  det  är  något  som  ingår  i  många  högskoleutbildningar  på   Kungliga  Tekniska  Högskolan.    

 

1.2  Syfte  och  målsättning  

Syftet  med  laborationen  är  att  få  en  introduktion  om  vad  programmering  handlar  om.  Dessutom  på   ett  underhållande  och  inte  allt  för  svårt  sätt,  kunna  programmera  i  par  där  man  turas  om  att  felsöka   koden  och  testköra  roboten.    

Avsikten  med  laborationen  är  också  att  få  en  kännedom  om  hur  det  är  att  arbeta  på  ett  

ingenjörsmässigt  sätt  och  samtidigt  få  en  arbetsvana  inom  skolans  IT-­‐system.  Man  förutses  även  att   få  en  förståelse  kring  hur  ett  litet  tecken  ligger  fel  någonstans  i  programkoden  som  leder  till  ett  stort   problem  i  programmet.  

Målet  med  denna  uppgift  är  att  få  en  LEGO-­‐robot  göra  ett  par  uppgifter  genom  att  rätta  och  skriva   färdigt  en  felaktig  kod  skrivet  i  NXC  (Not  eXactly  C).  

Mitt  mål  för  laborationen  var  att  klara  uppgiften  vi  fick  samt  ha  kul  med  min  nya  klasskamrat.  

     

 

(4)

Jag  och  min  laborationspartner  Rodbeh  började  med  att  undersöka  roboten  samt  jämförde  den  med   monteringsspecifikationen  och  det  var  inga  konstigheter.  Vi  öppnade  Windows  som  vi  lyckats  få  att   fungera  på  vår  Mac-­‐dator  och  hämtade  drivrutinen  samt  installerade  de  programmen  vi  behövde  för   att  programmera  vår  robot.  

Roboten  skulle  sedan  kopplas  till  datorn  via  en  USB-­‐kabel  där  programmet  skulle  visa  en  blå  symbol   om  programmet  upptäckte  robotens  anslutning.  Den  blå  symbolen  dök  upp  i  programmet  och  det   var  dags  för  att  börja  koda  trodde  vi.    

Det  fanns  redan  en  färdig  kod  som  det  förekom  en  massa  fel  i.  Vi  granskade  därmed  koden  och   upptäckte  en  hel  del  småfel  som  vi  rättade  till.    

Ett  av  felen  var  att  koden  bad  oss  att  skriva  en  text  under  ett  variabeln  som  heter  Int  där  man  bara   kan  mata  in  siffror,  vilket  vi  rättade  till  och  skrev  String  istället.  Ett  annat  fel  var  att  enligt  

programmet  skulle  en  kabel  som  leder  till  ljuskänslighet  sitta  i  en  annan  port,  Rodbeh  bytte  sedan   port  så  att  roboten  skulle  fungera  som  den  skulle.  

Rodbeh  rättade  koden  och  jag  undersökte  robotens  uppträdande  efter  varje  överföring  av  kod,  vi   bytte  sedan  position  när  en  halvtimme  hade  passerat.  Jag  fick  felsöka  i  programmet  och  Rodbeh  fick   testköra  roboten.    

Rodbeh  placerade  roboten  på  en  svart  markerad  linje  som  låg  på  golvet.  Hon  tryckte  sedan  på   startknappen  och  roboten  körde  iväg  och  följde  linjen  rätt  bra  till  en  början,  tills  det  kom  en  skarp   sväng  som  roboten  bara  körde  förbi.  Jag  insåg  att  roboten  måste  minska  farten  ifall  den  ska  klara   svänga  i  den  skarpa  kurvan.  Vi  ändrade  då  siffertalen  i  koden  där  man  fick  bestämma  hastigheten  och   sänkte  den  rejält.  

Återigen  gjorde  vi  ett  nytt  försök  och  den  här  gången  körde  roboten  sakta  men  säkert  på  den  svarta   linjen  tills  den  åkte  in  i  en  vägg  som  stötte  till  två  robotarmar.  Robotarmarna  stannade  roboten  och   skrev  sedan  ut  en  text  på  robotens  display  enligt  följande  ”Gruppmedlemmar:  Andreas  Rodbeh”.    

Vi  visade  vår  laborationsassistent  när  roboten  gjorde  de  tidigare  momenten  och  vi  fick  besked  om  att   vi  hade  löst  uppgiften.  

 

 

         

(5)

robot  körde  in  i  och  stötte  då  till  robotens  armar  så  att  roboten  stannade.  

Roboten  visade  sedan  vår  text  som  vi  hade  skrivit  in  i  koden  ”Gruppmedlemmar:  Rodbeh  Andreas"  

(6)

linjen.    

I  variabeln  string  kan  man  skriva  texter,  vilket  vi  hade  användning  utav  eftersom  vi  ville  skriva  våra   namn  senare  i  programmet.    

Jag  och  Rodbeh  försökte  att  få  våra  namn  utskrivna  i  nummerordning  på  robotens  display.  Det  räckte   då  med  att  bara  ha  kvar  koden  ”8*i”  eftersom  det  bara  fanns  8  rader  (lines)  och  vi  tog  därmed  bort  (-­‐

16)  som  fanns  i  orginalkoden.    

I  slutet  av  den  givna  programkoden  tog  vi  bort  koden  ”Dance  ();”  på  grund  av  att  det  blev  överflödigt,   vi  behövde  inte  den  koden  helt  enkelt.  Det  räckte  med  att  ljussensorn  kände  av  vart  den  svarta  linjen   låg  på  golvet  och  därmed  följde  den  in  till  väggen.    

Det  som  gick  mindre  bra  var  att  vår  robot  tydligen  var  fel  inställd  då  kablar  satt  i  fel  port  samt  att  det   fattades  en  annan  kabel  som  vår  laborationsassistent  fick  springa  iväg  och  hämta.    

Det  mest  positiva  var  att  jag  och  min  laborationspartner  fungerade  bra  ihop.  Vi  lyssnade  på  varandra   och  kunde  komma  fram  till  lösningar  utan  större  problem.  

 

5.  Diskussion  

Laborationen  har  vart  lärorik  eftersom  att  jag  inte  programmerat  i  NXC  tidigare,  det  var  även  min   avsikt  varför  jag  deltog  i  laborationen.    

Målet  med  laborationen  var  att  visa  hur  en  typisk  laboration  på  Kungliga  Tekniska  Högskolan  ser  ut   och  hur  man  ska  jobba  för  att  klara  uppgiften.    

Syftet  framfördes  som  hur  man  på  bästa  sätt  granskar  en  programkod  och  genom  att  arbeta  i  par,   försöka  rätta  eventuella  fel  i  koden.    

I  vissa  situationer  på  laborationen  uppstod  små  problem  då  jag  inte  förstod  min  laborationpartners   olika  antagande  men  det  löste  hon  genom  att  förklara  för  mig  grundligt.  

Jag  och  Rodbeh  fick  hjälp  ifrån  vår  laborationsassistent  emellanåt,  när  vi  hade  fastnat.  Vi  använde  oss   även  utav  en  programmerings  guide  vid  namn  ”Application  Programming  Interface”  som  

underlättade  för  oss  en  hel  del  för  att  förstå  programkoden  vi  testat  redigera.    

Jag  tycker  det  är  en  bra  kombination  att  man  får  både  jobba  praktiskt  med  roboten  och  teoretiskt   förstå  hur  koden  är  uppbyggd.    

Att  laborera  i  par  var  något  nytt  jag  stötte  på  och  det  fick  mig  att  inse  att  man  måste  konversera  med   varandra  hela  tiden  så  att  det  inte  uppstår  något  missförstånd.    

Under  denna  laboration  lärde  jag  mig  även  hur  en  programkod  kan  se  ut,  som  kan  fungerar  i   praktiken.  

Eftersom  att  jag  inte  programmerat  i  NXC  tidigare  så  var  även  det  en  ny  kunskap  jag  fick  av  

laborationstillfället.  Dessa  lärdomar  jag  fått  under  denna  kurs  kommer  jag  att  få  användning  utav  när   jag  ska  programmera  i  NXC  nästa  gång,  vilket  kommer  ske  inom  mina  tre  studieår.      

(7)

• Labb-­‐PM  (2014-­‐08-­‐29)  

https://bilda.kth.se/courseId/11430/content.do?id=22224147  

• BrixcCC.zip  (2014-­‐08-­‐29)  

https://bilda.kth.se/node.do?id=22224203  

• Drivrutin  LEGO  NXT.zip  (2014-­‐08-­‐29)   https://bilda.kth.se/node.do?id=22224215    

• Linefollower.nxc  (2014-­‐08-­‐29)  

https://bilda.kth.se/node.do?id=22224229    

• Kommentarsblad  för  laborationsuppgift.pdf  (2014-­‐08-­‐29)   https://bilda.kth.se/node.do?id=22224207    

• NXC  Programmer’s  Guide  by  John  Hansen  (2014-­‐08-­‐29)  

• Rapportmall.docx  (2014-­‐08-­‐29)  

https://bilda.kth.se/node.do?id=22300661    

• Programming  LEGO  NXT  Robots  using  NXC.pdf  (2014-­‐08-­‐29)   https://bilda.kth.se/node.do?id=22224206    

Bilagor  

   

References

Related documents

När en mottagare programmeras i adressboken med SmartDevice- Monitor for Admin eller Web Image Monitor, kanske, på vissa språk, inte den programmerade mottagaren visas eller

V práci byla vyzkoušena možnost programování robota NXT ve vývojovém prostředí LabVIEW pomocí volně stažitelného rozšíření LabVIEW Toolkit for LEGO

Baserat på Nottinghams tankar om utmanande undervisning och diskussioner med hjälp av koncept (se J. 130, s 134 m fl.), kan ni diskutera med avstamp i koncepten:

Obrázek 18: Schéma SubVI proporcionální složky Lze zde spatřit, že hodnota P je vyjádřena jako součin konstanty Kp a rozdílu původní načtené hodnoty

Tento program umožňuje pohybovat s vytvořeným robotem za pomoci směrových kurzorů na klávesnici. Při spuštění programu robot čeká na stisknutí libovolné směrové

TěŽiŠtěm práce je třetí kapitola. v níŽ autor předkládá navrŽené příklady' programových řeŠení. Pro první modelové řeŠení byla zvolena aplikace

Sensorn var ju givetvis också kritisk för att roboten skulle fungera så det var nödvändigt att kontrollera att roboten får in datan från sensorn som var kopplad till Input 3, i

● Om datorn är ansluten till eluttaget bör du kontrollera att det ger rätt ström genom att ansluta en annan eldriven enhet till samma uttag.. ● Om datorn drivs på batteri eller