vrijdag 14 juli 2017

Een 'slimme' auto maken met een raspberry pi

We starten met de "Camjam Edukit #3". Hiermee  kan je met een raspberry pi een slimme robotauto maken die objecten kan ontwijken en een lijn kan volgen.

Erg 'slim' is deze robotauto niet. Een tweede lijnsensor kan zijn  intelligentie  opkrikken. Met een raspberry pi camera die vormen, kleuren of gezichten kan ontdekken maak je hem pas echt 'virtueel intelligent', in theorie althans.

We leren al doende een beetje linux en python want de raspberry pi heeft als besturingssyteem een versie van linux en alle programeerwerk gebeurt met de taal python.

Stap 1: werken met de raspberry pi en python

De raspberry pi heeft geen harde schijf ; alle data en het besturingssysteem staan op een sd-kaartje. We hebben sd-kaartjes met het standaardbesturingssyteem raspbian.

Wie zelf een sd-kaartje wil maken met een  besturingssysteem:
Download het "raspbian jessie met desktop"-zipbestand van de officiële site: https://www.raspberrypi.org/downloads/raspbian/
Op deze plaats vind je de methode om het zipbestand op een sd-kaartje te copiëren.

Voor wie met de camera vormen, kleuren en gezichten wil herkennen: verderop in de tekst wordt uitgelegd hoe je de extra software hiervoor kan installeren. Dit is een lang en foutgevoelig werkje. Als je dit voorlopig wil overslaan kan je ook een sd-kaartje gebruiken waar we deze software al op hebben geïnstalleerd.

Raspbian is een versie van Linux speciaal gemaakt voor de hardware van de raspberry pi. Als je nog nooit met linux hebt gewerkt dan is deze introductie handig .

Met een raspberry pi kan je leren programmeren in veel verschillende talen maar de meest gebruikte is toch wel python. Hier vind je enkele introducties tot de programeertaal die wij hier gaan gebruiken.

Stap 2: de basiskit

De worksheets op http://camjam.me/edukit tonen hoe je twee motoren kan laten draaien en daarmee dus twee wielen zodat je de auto in alle mogelijke richtingen kan laten rijden. Een lijnsensor en een afstandssensor programmeren is de kers op de taart van deze zelfrijdende "google auto". Alle programma's zijn geschreven in en worden uitgevoerd met de programeertaal python (zie boven).

De kit bevat 9 worksheets:
Stap 3: extra lijnsensor toevoegen




De robotauto met één lijnsensor over een lijn laten rijden is een hachelijke zaak. Met twee lijnsensoren kan je een veel beter resultaat bekomen. Je kan hier je eerste echte stapjes in het programmeren met python zetten. Hier vind je enkele introducties tot deze programeertaal.





Stap 4: camera installeren en gebruiken




Op de officiële website van raspberry pi vind je duidelijke instructies om de raspberry pi camera aan te sluiten, te activeren en ermee te programmeren in python.








Stap 5: openCV installeren en gebruiken

Met een raspberry pi camera kunnen we in theorie nog heel wat meer. Met de programmeerbibliotheek OpenCV kunnen we de Pi "artificiële intelligent" maken: gezichten, kleuren en vormen herkennen.
De installatie-handleiding van OpenCV 3 voor Raspberry Pi 2/3 met Raspbian Jessie door Adrian Rosebrock kan je hier vinden (het is wel niet eenvoudig):  http://www.pyimagesearch.com/2016/04/18/install-guide-raspberry-pi-3-raspbian-jessie-opencv-3/
Je kan ons ook een voorgeïnstalleerd sd-kaartje vragen.


We hebben op YouTube ook filmpjes gezien van mensen die erin geslaagd zijn de robotauto te laten rijden achter een bal maar de resulaten zijn erg afhankelijk van welk licht er in de kamer is. Een bepaalde vorm of kleur kan op een bepaald moment ontdekt worden en een seconde later weer niet. Door slim te programmeren kan je dat proberen op te lossen. Tijd om te experimenteren dus.


Onze python2-bestanden om rood, blauw, cirkels, gezichten, ogen, neuzen en monden te ontdekken, vind je hier: https://drive.google.com/drive/folders/0B8B_4EJFaJPgZjh6U3ppOTBBc2s?usp=sharing





Stap 6: raspberry pi besturen op afstand via wifi

Steek eerst de wifi-router in het stopcontact.

Om de raspberry pi te verbinden met het netwerk moeten we hem eerst verbinden met het wifi-netwerk. Het is daarom het gemakkelijste om de raspberry pi even aan te sluiten op een scherm.
Rechts bovenaan klikken we op het wifi-symbool en vullen het paswoord in (ligt in de doos van de router)

We starten het programma LXTerminal en typen: hostname -I. We schrijven dat IP-adres op.

We controleren ook even bij Start > Voorkeuren > Raspberry pi Configuratie programma > tabblad interfaces of SSH "aan" staat.

We downloaden het python-programma rijden3.py  en slaan het bijvoorbeeld op in /home/pi/Downloads. Dit programma laat je toe de pijtjestoetsen te gebruiken om te sturen.

Als je de robotauto vanaf je eigen windows-pc wil gebruiken dan moet je eerste een ssh-programma installeren.  Je kan ook een linux-pc gebruiken of een andere raspberry pi aansluiten op het scherm. Daarna openen we LXTerminal:

ssh pi@192.XXX.XXX.XXX (= het IP-adres dat je had opgeschreven)
Mogelijk moet je een keer 'yes' antwoorden en dan het paswoord van de raspberry pi invullen: als je dat niet veranderd hebt, is dat  'raspberry'.

Je bent nu 'in' de robotauto. Type 'pwd' om te weten waar je bent en 'cd /home/pi/Downloads' om naar de Downloads-map te gaan en 'ls' om te kijken of 'rijden3.py' hier staat.

Om het programma te starten: sudo python rijden3.py

Je kan nu de robotauto op afstand besturen met de pijltjestoetsen.

Probeer eventueel rijden4.py en rijden5.py (die de robotauto laten stoppen als ze rood en/of een cirkel zien). Pas het programma aan naar jouw wensen.



Geen opmerkingen:

Een reactie posten