Guide: Byg en robot

Guide: Byg en robot

Share

Programmeringen afgør, hvor god din autonome robot bliver

Autonome robotter finder anvendelse mange steder. Langt de fleste rumsonder må klare sig selv, da signalet fra Jorden tager lang tid at få frem, og fjernstyring er ikke muligt. Mere jordnære robotter til støvsugning og græsslåning er også autonome.

I første afsnit blev hardware præsenteret. Vores robot består af en lyssensor og to motorer samt en Arduino. For at gøre robotten autonom, skal vi her i anden afsnit se nærmere på programmeringen. Robottens program afgør, hvor godt vores robot er i stand til at finde rundt på banen på egen hånd.

Lidt om Arduino-programmering

I første afsnit var vi kort inde på det, og vi skal heller ikke igennem et større kursus i Arduino-programmering.
Programmeringssproget er C++ med en række begrænsninger. For eksempel er exceptions slået fra. Grunden er, at exceptions ofte bruger mere plads, end hvad godt er – en Arduino har ikke meget plads at gøre godt med. Som C eller C++-programmør tænker du nok, at du altid skal implementere funktionen main. I et program til en Arduino skal du ikke implementere main.

Der er to andre funktioner, som du altid skal implementere: setup og loop. Som navnet antyder, afvikles setup som det første. Her kan du sætte alt op, f.eks. kan du sætte hastigheden på den serielle port og initialisere globale variabler.

Se også:  Sikker programudvikling med C++

Når setup er færdig, kommer loop i spil. Når loop er afviklet, begynder funktionen forfra. Med andre ord, koden i loop afvikles i en uendelig løkke (loop er engelsk og betyder løkke). Mange programmører er vant til at tænke over byggesystem. C++-programmører har traditionelt brugt Make, mens Java-folk bruger Ant, Maven eller måske det hippe Gradle. Arduinos udviklingsmiljø tager sig af den opgave, og inkluderer du et eller flere biblioteker, skal du ikke selv have styr på byggeprocessen. De inkluderede biblioteker vil blive taget med helt automatisk.

Byg en robot med et lille styresystem

Godt nok er Arduino en lille microcontroller, og det er ikke det store styresystem, som følger med. Faktisk er der ikke tale om et styresystem, men mere et mindre runtime-miljø med begrænset funktionalitet.

Langt de fleste styresystemer i dag kan afvikle flere programmer samtidig. Endvidere er det ofte muligt, at et kørende program består af to eller flere tråde. En tråd er en kopi af programmet, og hver tråd afvikles uafhængig af de andre tråde. Men trådene er i stand til at tilgå fælles data og koordinere, hvad du gør.

Se også:  Byg en robot med et Arduino kit

Der er flere fordele ved at strukturere et program til at bruge flere tråde. Ofte tager det langt tid at læse værdien fra en sensor. Tid skal her ses i forhold til, hvor hurtig en cpu er. Hver klok-cyklus tabt på at vente på en sensor, er tid tabt, hvor cpu’en aktivt kunne styre robotten. På 1 millisekund kan en cpu med en klokfrekvens på 1 MHz nå op til 1000 instruktioner. Ved at dele programmet op i tråde, kan en tråd vente på en sensor, men en anden tråd aktivt tager beslutninger om, hvordan robotten skal opføre sig.

En af ulemperne ved at bruge flere tråde er, at det er meget sværere at fejlrette. Kompleksiteten vokser mindst en størrelsesorden, når du introducerer tråde i dit program! Heldigvis findes der flere glimrende Arduino-biblioteker, som håndterer multitrådet programmering. Nogle biblioteker er avancerede med mange funktioner, andre små med lidt funktionalitet. I infoboksen ”Få mere at vide” finder du links til flere af dem.

Del denne