Publicatie: Lely en ALTEN passen ROS2 toe in nieuwste stalrobots
In het magazine Mechatronica & Machinebouw (juli 2020) is een artikel gepubliceerd over ROS2:
De software van Lely’s stalrobots was toe aan een update. Het bedrijf koos voor Robot Operating System versie 2 en riep de hulp in van ALTEN. Aan het begin van het project werd het team geconfronteerd met het gebrek aan gestandaardiseerde componenten en de geringe volwassenheid van ROS2. Ook het porten van ROS2 naar het gekozen Arm-platform kostte de nodige moeite. Met de uitgebreide simulatiemogelijkheden biedt ROS2 ook voldoende interessante kansen. Dit heeft ervoor gezorgd dat de eerste robot nu wordt getest en de ontwikkelde software deels kan worden hergebruikt voor toekomstige robots.
In 2018 begon Lely met de ontwikkeling van een nieuwe generatie mobiele robots. De Discovery Juno Vector zijn robots die autonoom rondrijden in stallen en respectievelijk mest schuiven, voer aanschuiven en voer distribueren. Hoewel een groot deel van de functionaliteit van deze drie modellen overeenkomt, zoals het autonoom navigeren, was de software totaal verschillend. Daarnaast was de bestaande hardware weliswaar robuust, maar toe aan een vernieuwingsslag. Het was dus tijd voor een update.
Voor deze update werd een apart team opgericht dat bestond uit ingenieurs van Lely en consultants van ALTEN. De eersten namen hun ervaring mee op het gebied van melkveehouderij en de ontwikkeling van complexe, agrarische roboticaoplossingen. Vanuit ALTEN kwam de kennis en kunde over het ontwikkelen, onderhouden en testen van technische software. De opdracht van het team was niet alleen om de software te updaten voor gebruik op de nieuwste hardware, maar ook om een gemeenschappelijk softwareplatform te bouwen voor de volgende generatie Lely-robots.
Stanford
Nadat het team was samengesteld, kreeg het van het management van Lely een nieuwe opdracht mee: de software moest gebaseerd worden op de nieuwste versie van het Robot Operating System (ROS2). Lely hoopt met de keuze voor ROS2 goede aansluiting te houden met state-of-the-art onderzoek aan universiteiten, waar veelvuldig wordt gewerkt met ROS en ROS2. Bovendien past de modulaire opbouw van het systeem goed bij de wens om meerdere robottypes van hetzelfde softwareplatform gebruik te laten maken.
De universiteit van Stanford ontwikkelde de eerste versie van ROS in 2007 met het idee om de uitwisseling van softwarecomponenten voor robots eenvoudiger te maken. Ze heeft het daarom opgezet als flexibel opensource raamwerk waarin functionaliteiten als losse modules zijn geïmplementeerd en via een gestandaardiseerde communicatielaag data met elkaar uitwisselen. Een levendige opensourcegemeenschap en veelvuldig gebruik in de academische wereld zorgden voor een snelle groei van beschikbare tools en packages. In 2012 is het ROS-Industrial-consortium opgericht om de beschikbare tools en componenten geschikt te maken voor de industrie. Lely is sinds 2013 lid van dit consortium.
Omdat de eerste versie van ROS opgezet is met de academische wereld in het achterhoofd, heeft het een aantal structurele beperkingen die in industriële toepassingen voor uitdagingen kunnen zorgen. Zo is het niet ontworpen voor realtime platformen en maakt het geen gebruik van een quality of service-protocol. Om deze restricties te verhelpen is de Open Source Robotics Foundation (OSRF) – die ROS sinds 2012 onderhoudt – in 2015 begonnen met de ontwikkeling van ROS2. De grootste verandering is dat ROS2 gebruikmaakt van data distribution service (dds) als middleware waardoor het beter geschikt is voor data-uitwisseling tussen machines.
Aanpassingen
De keuze om de software te baseren op ROS2 stelde het ontwikkelteam voor een aantal uitdagingen. Zo was ROS2 in het begin van het project nog sterk in ontwikkeling. Er was bijvoorbeeld geen ondersteuning voor het Arm-platform waarop de software moest gaan draaien. Een deel van het team begon met die implementatie. Doordat ROS2 opensource is, is het mogelijk om alles vanaf de broncode te compileren. Dit kostte de nodige moeite, maar na een paar maanden is het gelukt om het geheel werkend te krijgen.
Tegelijkertijd is een ander deel van het team begonnen met de implementatie van de functionaliteiten van de robot in ROS2. Hierbij was een grote uitdaging dat het publisher-subscriber-patroon waarop ROS2 is gebaseerd, een heel ander concept is dan de sequentiële taken waarvan de huidige generatie robots gebruikmaakt. Dit vereist een andere manier van denken, maar biedt ook kansen. Zo schept het de mogelijkheid om in een later stadium andere sensortypes toe te voegen en de positiemeting te verbeteren door middel van sensorfusion.
Een derde uitdaging is het gebrek aan standaardisatie binnen de robotica in het algemeen én de beperkte mate van volwassenheid van ROS2 aan het begin van het project. Veel functionaliteiten, waarvan het team verwachtte dat ze standaard waren, bleken in de praktijk niet beschikbaar, zoals de software om een metalen strip te volgen met inductiesensoren. Dat is een veelvoorkomende methode in de agrarische sector om robots een pad te laten volgen door de stal. Ook was de api van ROS2 in het begin van het project nog niet stabiel, waardoor veel makers van opensource functionaliteiten wachtten met het porten van hun software van ROS naar ROS2. De volwassenheid van ROS2 neemt snel toe. Zo zal OSRF de laatste distributie, die afgelopen mei werd gereleaset voor minimaal drie jaar ondersteunen.
Gazebo
Naast deze uitdagingen bood ROS2 het team ook kansen. De belangrijkste was de beschikbare simulatieomgeving: Gazebo. Deze simulator stelde het ontwikkelteam in staat de software al in een vroeg stadium te testen.
Tijdens de eerste ontwikkelstappen werd de robot gesimuleerd als een simpele kubus die door de ruimte bewoog. Het team maakte het model van de robot stap voor stap steeds realistischer. Er werd wrijving toegevoegd aan het model, sensoren, motoren en tandwielkasten. Hierdoor is de simulatie nu zo realistisch geworden dat het team zijn algoritmes uitgebreid kan testen en tunen voordat ze toegang tot de echte hardware nodig hebben.
Ook vormt deze simulator een mooie brug tussen de theorie en de praktijk, waarbij het theoretisch effect van bepaalde aanpassingen in het regelsysteem duidelijk zichtbaar werd in de simulatie. Zo werd duidelijk dat de vertraging die een low-pass filter toevoegt, resulteerde in een te late respons van de regelaar; de robot begon door de gesimuleerde stal te zwalken. Het team kon dit probleem ontdekken en oplossen voordat het op de echte robot hoefde te worden getest.
Deze simulator stelt het team dus in staat snellere iteraties van hun software te maken wat tijdswinst oplevert voor het totale project. Ook hoeft het team nu minder te wachten op testtijd op de echte robots.
Eigen bijdrage
Na anderhalf jaar ontwikkelen is het team nu zo ver dat de eerste veldtests worden uitgevoerd; de nieuwe generatie robot wordt in een echte stal getest. Het team heeft de
algemene componenten, zoals een motorregeling, zo ontwikkeld dat deze ook kunnen gaan worden ingezet voor toekomstige robots. Hiermee heeft het team een belangrijke stap gezet op weg naar een algemeen softwareplatform waarvan de nieuwe generatie Lely-robots kunnen gebruikmaken.
De uitdaging waaraan het team momenteel werkt, is de verbetering van de snelheid van de communicatie. Zo biedt ROS2 de mogelijkheid te kiezen tussen verschillende dds-implementaties en is het team al overgestapt naar Fast-RTPS. Daarnaast onderzoekt het momenteel andere opties die nog meer geschikt zijn voor embedded en realtime platformen.
Ook werkt het team aan een motorregeling die gebruikmaakt van de Canopen-infrastructuur. Lely heeft deze infrastructuur ook opensource beschikbaar gesteld, waarmee het nu zelf bijdraagt aan de beschikbaarheid van standaard roboticacomponenten.
Auteurs: Marwijn Hessel is softwarearchitect bij ALTEN. Berend Küpers is roboticaconsultant bij ALTEN. Vincenzo Ferranti is lead engineer bij Lely. Bron foto’s: Lely
Ben je ook geïnteresseerd in een baan op het gebied van (technical) software robotica ? Check via voorgaande links naar de vacatures die er bij ALTEN zijn. We komen graag met je in contact!