Een bestuurbare Robot op Linux

ArticleCategory:

Hardware

AuthorImage:

[Foto van de Auteur]

AuthorName:

Vicente Egea, Jorge Garrido, Roberto Guzmán, Ranko Zotovic

AboutTheAuthor:

Roberto Guzman is afgestudeerd in Computerwetenschappen en is professor en onderzoeker geweest op het gebied van Robotica aan de TU van Valencia, afdeling "Systems and Automation Engineering". Ook is hij onderzoeker geweest aan de FernUniversitaet te Hagen (Duitsland) voor de afdeling Meet- en Regeltechniek ("Process Control and Regulation"). Op dit moment is hij werkzaam bij de onderzoeksafdeling van TMC-Electronics.

Ranko Zotovic is ingenieur. Hij heeft een aantal jaren ervaring met het ontwerpen en vervaardigen van industriële machines, zoals robots, hulpmiddelen voor snijmachines, kwaliteitsbewaking etc. Hij is nu werkzaam als professor in Robotica en CAD/CAM (computergestuurd ontwerpen en -fabriceren) op de afdeling "Systems and Automation Engineering" van de TU Valencia.

Jorge Garrido Serrano is afgestudeerd in Computerwetenscappen. Zijn afstudeeropdracht was het ontwerpen en implementeren van de software voor PCBot. Hij werd hiervoor onderscheiden met de "Bancaja prize for Partnerships with Industry". Hij maakt nu deel uit van het Europese project "MobiNet" (Mobile Robotics Technology for Health Care Research) onder auspiciën van de FernUniversitaet - Hagen (Duitsland).

Vicente Egea Manas is afgestudeerd in Computerwetenscahppen. Ook hij is onderscheiden met de "Bancaja prize for Partnerships with Industry" voor zijn ontwerp en toepassing van de hardware voor PCBot. Hij werkt nu bij TGI.

Abstract:

Onderzoek naar mobiele robots is de laatste jaren enorm in ontwikkeling. Een groot aantal research afdelingen die zich bezig houden met Robotica, Mechanische Elektronica en Kunstmatige Intelligentie hebben zich daarbij toegelegd op het bestuderen van autonome voertuigen. Tot nu toe is dit onderzoek, vanwege de hoge kosten, beperkt gebleven tot de vliegtuigindustrie, militaire toepassingen en atoomonderzoek. De huidige snelle ontwikkelingen hierin hebben echter geleid tot toepassingen in de landbouw, industrie, dienstverlening, mijnbouw, medicijnen etc. Het heeft zich hierdoor ontwikkeld tot een strategisch onderzoeksgebied met groeipotentie.

ArticleIllustration:

Het bestuurbare voertuig PCBot 1.0

ArticleBody:

Introductie

Huidige, commercieel verkrijgbare robots hebben een aantal beperkingen waardoor hun toepasbaarheid beperkt blijft tot het laboratorium. Beperkingen zijn onder andere de hoge kosten, gesloten architecturen, gebrek aan documentatie en de beperkte schaalbaarheid. Deze beperkingen gelden zowel voor de software alsook voor de hardware.

Op onze afdeling "Systemen en Automatisering" hebben we daarom besloten een robot te bouwen zonder al deze beperkingen. We gingen daarbij uit van een architectuur, gebaseerd op de PC, vanwege het grote aantal voordelen dat dit heeft: prijs, rekenkracht, standaardisatie, schaalbaarheid en de verkrijgbaarheid van zowel hardware als software. De keuze daarbij voor Linux en zijn real-time variant RT-Linux heeft ons enorm geholpen in het succesvol afronden van dit project.

Beschrijving van het voertuig

Ons systeem is een voertuig met twee apart aangedreven wielen en twee geleide wielen. De besturing hiervan (het "kinetisch gedrag") is te vergelijken met een rolstoel of een tank. De snelheid van het middelpunt van dit voertuig hangt daarbij dus af van de snelheid van ieder afzonderlijk aangedreven wiel, gezien in de tijd.

Het ontwerp bestaat uit twee gedeelten. Het onderste deel, waar alle mechanica en batterijen zich bevinden, en het bovenste deel, waar alles te vinden is wat te maken heeft met besturing en communicatie van het voertuig. Het onderste deel is aangebracht op een aluminium plaat. Hierop zijn de wielen gemonteerd, overbrenging, motoren, encoders, voeding, batterijen en behuizing. Op het bovendeel bevindt zich de PC-kaart met aanverwante besturingskaarten en floppy drive.
 

Voor- en zijaanzicht van het bestuurbare voertuig PCBot. 
Voor- en zijaanzicht van het bestuurbare voertuig "PCBot". 
De hardware architectuur bestaat uit een kaart die de motoren via de voedingskaarten aanstuurt. Besturing van de as kan via deze stuurkaart of direct via de PC. Zowel de kaarten alsook de software zijn speciaal door ons ontworpen en gemaakt.
 
Hardware Architectuur 
Hardware Architectuur 
De stuuropdrachten voor het voertuig worden vanaf de externe computer (host) verzonden. De PC van het voertuig vertaalt deze opdrachten naar de juiste signalen voor de stuurkaarten. Deze laatste stuurt de versterker aan tot het leveren van de juiste spanning voor de aandrijving van de motoren. De beweging van iedere as wordt gemeten door een sensor (encoder) die deze informatie terugstuurt naar de stuurkaart.

Software Architectuur

De implementatie van een bestuurbaar voertuig vereist ten eerste een "closed loop" systeem dat een constante aansturing in de tijd garandeert. Ten tweede vereist het het periodiek "verversen" van toestandsvariabelen om bijvoorbeeld iedere keer de positie van het middelpunt van het voertuig te bepalen.

Door deze vereisten is het gebruik van een real-time operating systeem noodzakelijk. Bij dit soort systemen hangen de resultaten niet alleen af van de juiste berekeningen, maar ook of deze tijdig beschikbaar komen.

We besloten de PCBot software architectuur te maken onder Linux 2.0.33 met daarbij de real-time extensies (versie 0.6).

Motivatie voor de keuze van Linux en RT-Linux is dezelfde als bij automatiseringsbedrijven die hiervoor kiezen:

Het real-time operating systeem RT-Linux is ontwikkeld door Victor Yodaiken en Michael Barabanov op de afdeling Computer Science van het "Mining and Technology Institute of New Mexico". Onderstaand diagram geeft een indruk van de architectuur. De real-time kernel executeert op het niveau vlak boven de hardware. De scheduler werkt met statische prioriteitenen en wijst de processor toe aan de processen, waarbij deze complete toegang tot de hardware krijgt. Het operating systeem zelf wordt daarbij beschouwd als een van de real-time processen. Deze heeft de laagste prioriteit en krijgt de processor dus slechts toegewezen als andere taken hem niet nodig hebben.
 
Real-time operating systeem RT-Linux 
Real-time operating systeem RT-Linux 
De software architectuur van de PCBot is gebaseerd op het bekende client-server model. De server is actief op de robot en handelt de verzoeken af van de client(s) op de remote systemen. Communicatie tussen clients en server gebeurt via het TCP/IP protocol.

Het gebruik van TCP/IP zorgt ervoor dat de robot onafhankelijk is van het gebruikte operating systeem op de host. De client wacht op opdrachten van de gebruiker en stuurt deze door naar de robot. Er zijn drie typen opdrachten: bewegen, toestand instellen en toestand opvragen. De client controleert de syntaxis van het commando, zet dit om in een bericht en verstuurt dit naar de server met behulp van sockets.

De server staat te wachten op verbindingen vanaf de client. Na het maken van de verbinding zal de server eventuele opdrachten vertalen en doorgeven naar de real-time module die de besturing regelt. Deze module voert de betreffende opdrachten uit en controleert tegelijkertijd de toestand en integriteit van het systeem middels een "watchdog"-achtig proces.
 

Software Architectuur 
Software Architectuur 
De software architectuur bestaat uit twee delen. Het deel dat binnen het Linux operating systeem draait en een deel die in real-time (RT-Linux) wordt geëxecuteerd vanwege de afhankelijkheid van de tijd. De server draait op het Linux-deel en zit dus op de PC van het voertuig. De client -een applicatie zonder tijdslimieten- hoeft niet op deze PC te draaien.

De real-time module bestaat uit regelmatig uit te voeren real-time taken (bewegings-opdrachten en watchdog) en minder regelmatige taken (driver en stop).

Een binaire semafoor schermt de toegang af tot de hardware voor real-time processen. Dit is nodig om verschillende redenen. Allereerst maakt de communicatie met de sturings-kaarten gebruik van een offset register. Als het gebruikende proces wordt onderbroken door een ander proces dan bestaat het gevaar dat er onzin in het register wordt geschreven. Ten tweede draaien er protocollen op registerniveau die niet onderbroken mogen worden. Tenslotte moeten de stuursignalen naar beide assen zo synchroon mogelijk worden uitgevoerd.

Drie real-time FIFO (First In First Out)-wachtrijen (queues) verzorgen de communicatie tussen de real-time module en de server. De server schrijft bewegings-opdrachten van de client naar een wachtrij. De twee andere wachtrijen worden vervolgens door de real-time module gebruikt om de ontvangst van het commando te bevestigen en eventueel de client -via de server- op de hoogte te stellen van afwijkingen.

Een mogelijk scenario is het volgende: de gebruiker start een client programma dat een interface vormt tussen de gebruiker en de PCBot. Ieder commando van de gebruiker wordt door de client doorgegeven aan de server. De server ontvangt het bericht (commando) en geeft dit door aan de real-time module via de daarvoor bestemde wachtrij.

Een driver-proces, verbonden aan die wachtrij, handelt het commando verder af en, indien het een bewegings-opdracht betreft, zal hij de betreffende real-time taak starten en een bevestiging hiervan naar de server sturen. De gestarte taak zal vervolgens voor de juiste acties zorgen om de motoren (en daarmee de wielen) op de juiste manier in beweging te zetten.

Naast de beweeg-opdrachten kan de gebruiker daarbij nog een toestandsverandering forceren of de toestand opvragen. In beide gevallen zal dezelfde driver op dit commando reageren door het manipuleren of uitlezen van de toestandsvariabelen.

De globale variabelen staan in gedeeld geheugen dat door alle real-time taken (inclusief de driver) is uit te lezen. Het gebruik van deze variabelen is een simpele en snelle manier om taken onderling te laten communiceren. De watchdog bijvoorbeeld, verzorgt berichten naar de server indien er sprake is van een belangrijke wijziging in de toestand of als er een onverwachte situatie optreedt.
 

Software architectuur - systeem taken 
Software architectuur - systeem taken 

Conclusies

Een architectuur, gebaseerd op een PC heeft zo zijn voordelen zoals: goedkoop, eenvoudig op te waarderen hardware en software, flexibiliteit door de grote hoeveelheid beschikbare software en rekenkracht. Bovendien heb je geen last van verouderende hardware omdat deze eenvoudig is in te wisselen voor hardware van de volgende generatie. Uitwisselbaarheid is hierbij gegarandeerd.

De keuze voor Linux en de real-time uitbreiding RT-Linux bleek een goede. We hadden hiermee de beschikking over zeer krachtige hulpmiddelen als "wpe" (Windows Programming Environment) en de GNU C compiler, zonder extra kosten.

Linux heeft zijn betrouwbaarheid bewezen tijdens onze experimenten en bleek daarbij ook nog eens effectief met het systeem om te gaan. Hierdoor waren we in staat om met meerdere mensen tegelijk comfortabel te werken op een simpele 486 PC. Sterker nog, na analyse van het systeemgebruik bleek dat zelfs in de drukste periodes, de processor nooit meer dan 30% belast is geweest.

De systeem software is verkrijgbaar in de public domain waardoor deze ons ten alle tijde ter beschikking stond. Dit heeft ons veel inzicht verschaft in de interne werking van het systeem waardoor weer ideeën voor een oplossing konden ontstaan (Zoals het gebruik van andere time managers, nieuw te ontwikkelen drivers etc.). Dit hadden we niet kunnen doen met een commerciële robot.

Fouten zoeken in RT-Linux is simpel. Dit kan onder andere via het aanpassen van de kernel en het zichtbaar maken van variabelen via de systeemfunctie "printk()".

Gedurende het gehele ontwikkeltraject hadden we de volledige steun van onder andere de RT-Linux mailing-list en de hulp van een uitgebreide set documentatie.


Oorspronkelijk in het Engels.
Vertaald door Tom Uijldert