Wat is RobotLib?

Robotlib is een set van C en C++ routines voor de besturing van een robot. RobotLib draait op een aantal STM32 processoren en is vrij eenvoudig te porten naar andere 32-bit processoren. 

RobotLib positioneert zich tussen systemen als ROS en Carmen enerzijds en de robot- of leveranciers-specifieke libraries als de 3Pi libraries anderzijds.

ROS en Carmen draaien op multi-tasking operating systemen als Linux, terwijl RobotLib direct op de hardware draait (alhoewel dat niet noodzakelijk is...).

Leveranciers-specifieke libraries richten zich vooral op het ontsluiten van de hardware van de robot, zoals motorsturing, sensoren en bediening (knopjes, display). RobotLib ondersteunt dit ook, maar biedt nog veel meer. Het is eigenlijk een soort Robot Operating Systeem.

Features

  • Een 'Hardware Abstraction Layer' maakt het mogelijk om RobotLib eenvoudig te porten naar een nieuwe robot of andere processor.
  • Een uitgebreid 'bedieningssysteem' maakt het mogelijk om de robot commando's te geven, parameters aan te passen en status op te vragen. Dit systeem werkt via een seriële verbinding, infrarood afstandbediening en display op de robot. Het bedieningssysteem is eenvoudig uit te breiden om bijvoorbeeld functies toe te kennen aan knopjes van de robot of door eigen menu's en commando's toe te voegen.
  • Een taak-systeem om eigen modules en modules van RobotLib te activeren.
  • Ondersteuning van diverse sensoren en (andere) I2C devices.
  • Navigatie voor differential-drive robots: positie bijhouden, rijden met bepaald snelheidsprofiel, naar bepaald punt, via een bepaalde curve. Zelf eenvoudig complexere bewegingen maken door reeksen van deze 'bewegingen'.
  • Functies die een snelle start mogelijk maken: hulpmiddelen bij calibratie, kant-en-klare routine om een lijn te volgen.
  • Diverse bouwstenen als queue's, PID controller met autotuner, debug-opties.

Is het de moeite waard?

RobotLib is weer een 'eigen' systeem en het vraagt - zoals ieder nieuw systeem - een investering om mee te beginnen. Is dat wel de moeite of kan ik beter met bijvoorbeeld Arduino gaan werken?

Het antwoord op deze vraag moet je zelf bepalen en zal afhangen van het doel wat je nastreeft. Het is sneller om een eenvoudige lijnvolger te maken met een Arduino. Nog veel sneller is om een robot als de 3Pi te nemen, zodat je gebruik kunt maken van de meegeleverde library van de fabrikant (en wellicht zelfs het demo programma).

Maar... als RobotLib eenmaal werkt op je robot, heb je direct een berg functies beschikbaar. De robot houdt zijn positie bij en kan patronen rijden. Je kunt je eigen code toevoegen, parameters gebruiken die je bij het testen eenvoudig aan kunt passen (ook met je afstandsbediening) en zien wat er onder de motorkap in in jouw code gebeurt.

Het allerbelangrijkste van RobotLib is waarschijnlijk de herbruikbaarheid. Na 5 jaar robotjes bouwen was er allerlei code ontwikkeld, maar bij iedere robot wat het toch bijna weer opnieuw beginnen met wat kopieën van broncode van eerdere projecten. RobotLib is gestart als project om al die eerdere code samen te brengen op een manier die wel herbruikbaar is. Het resultaat na 4 jaar is dat er een kleine 10 robots rijden met dezelfde code als basis. En als er nieuwe features aan RobotLib wordt toegevoegd, kunnen al die robots deze gebruiken.