Voor veel bedrijven en organisaties is een accurate en actuele bepaling van de voorraden in hun magazijn vaak cruciaal voor hun operationele, maar tegelijk is het ook een zeer tijdrovende bezigheid om de voorraad te tellen. Bovendien zijn sommige schappen moeilijk te bereiken en gebeuren er vaak menselijke telfouten. In dit artikel gaan we technisch dieper in op de technologie die Flanders Make ontwikkeld heeft om een automatische inventarisatie te doen met behulp van een drone.

 

Drones lijken een ideaal hulpmiddel voor het tellen van dozen en paletten omdat ze snel, accuraat en automatisch kunnen bewegen, ook op moeilijk te bereiken plaatsen. Het is wel belangrijk om een technisch onderscheid te maken tussen het tellen van paletten en van dozen, omdat dit telkens een andere benadering vereist.

 

Voor lange termijn stockage worden palletten typisch in hun geheel gestockeerd. Eens een pallet in gebruik wordt genomen, kunnen dozen worden afgenomen. Voor een succesvolle inventarisatie moeten dus zowel volledige palletten als het aantal dozen op een pallet worden geteld. Deze twee tellingen worden hieronder apart besproken.

 

 

Voor veel bedrijven en organisaties is een accurate en actuele bepaling van de voorraden in hun magazijn vaak cruciaal voor hun operationele, maar tegelijk is het ook een zeer tijdrovende bezigheid om de voorraad te tellen. Bovendien zijn sommige schappen moeilijk te bereiken en gebeuren er vaak menselijke telfouten. In dit artikel gaan we technisch dieper in op de technologie die Flanders Make ontwikkeld heeft om een automatische inventarisatie te doen met behulp van een drone.

 

Drones lijken een ideaal hulpmiddel voor het tellen van dozen en paletten omdat ze snel, accuraat en automatisch kunnen bewegen, ook op moeilijk te bereiken plaatsen. Het is wel belangrijk om een technisch onderscheid te maken tussen het tellen van paletten en van dozen, omdat dit telkens een andere benadering vereist.

 

Voor lange termijn stockage worden palletten typisch in hun geheel gestockeerd. Eens een pallet in gebruik wordt genomen, kunnen dozen worden afgenomen. Voor een succesvolle inventarisatie moeten dus zowel volledige palletten als het aantal dozen op een pallet worden geteld. Deze twee tellingen worden hieronder apart besproken.

 

Tellen van palletten

 

Bij het stockeren van volledige palletten wordt op iedere pallet een sticker aangebracht met hierop de informatie over de goederen op het pallet. Elke pallet krijgt ook een unieke ID die op de sticker geprint wordt in de vorm van een visuele marker, zoals een QR code. Deze visuele markers zijn speciaal ontworpen zodat ze makkelijk door een computer gedetecteerd kunnen worden in een camera beeld. Het tellen van de palletten kan dus simpelweg gedaan worden door te tellen hoeveel unieke QR codes er gevonden worden in de video stream die de drone neemt terwijl ze langs de palletten vliegt. De ID die in de visuele marker zit gecodeerd kan bovendien ook gebruikt worden om de palletten te inventarizeren: welke goederen staan op welke plaats in het rek?

 

Localizeren van palletten in het rek
Voor de inventarisatie moeten we niet enkel de ID van de palletten kunnen uitlezen, maar we moeten elke unieke ID ook aan 1 bepaalde plaats in het rek linken. De eerste stap hiertoe is het localizeren van de palletten in het rek. Omdat de visuele marker op het pallet is gekleefd, kunnen we opnieuw focussen op het localizeren van de visuele markers in plaats van de palletten zelf. Aangezien de markers ook al moesten gedetecteerd worden voor het uitlezen van de pallet ID, sparen we op die manier wat rekenkracht.

 

Voor het localizeren van een marker in het rek moet de positie van deze marker bepaald worden, relatief ten opzichte van het rek. Die positie (bestaande uit 3D afstandscoordinaten) kan niet zomaar rechtstreeks uit de camera beelden bepaald worden. De transformatie van de marker positie in het camera beeld naar de marker positie in het rek bestaat uit de volgende stappen, die elk hun eigen ruis aan de positiebepaling toevoegen:

 

  • Transformatie van het beeld (2D pixel coordinaten) naar de camera (3D afstandscoordinaten). Hiervoor worden de intrinsieke calibratie parameters van de camera gebruikt, zoals de lens distortie eigenschappen en de beeldresolutie. Om een diepteschatting uit het 2D beeld te bekomen, worden meerdere specifieke punten op de visuele marker gebruikt, alsook de werkelijke fysieke grootte van de marker die vooraf gekend is.
  • Transformatie van de camera naar de drone. Deze transformatie gebeurt op basis van de extrinsieke calibratie parameters van de camera. Die parameters definieren de positie en de rotatie van de camera ten opzichte van de drone. Deze transformatie zal dus een ander resultaat opleveren voor een punt dat gedetecteerd is door een camera die erg naar boven is gericht, dan door een camera die naar beneden is gericht.
  • Transformatie van de drone naar het rek. Voor deze transformatie moet de positie en orientatie van de drone gekend zijn op het moment dat het camera beeld genomen wordt. Het bepalen van de drone positie in een gesloten ruimte (zonder GPS) is een hele uitdaging op zich, waar erg geavanceerde technologieen voor kunnen gebruikt worden.

 

Na deze stappen zijn de 3D afstandscoordinaten in het rek bepaald voor elke marker die gedetecteerd is in een camera beeld. Het resultaat is weergegeven in de figuur hieronder, waar verschillende kleuren worden gebruikt om verschillende marker IDs aan te tonen. Merk op dat er meerdere punten zijn per marker ID, aangezien dezelfde marker in meerdere camera beelden kan gedetecteerd worden. Merk ook op dat de punten van eenzelfde ID niet op exact dezelfde plaats liggen, aangezien de meting en de transformaties niet perfect zijn en dus ruis introduceren in het uiteindelijke resultaat.

 

Linken van palletten naar plaatsen in het rek
Om de palletten te inventarizeren moet elk pallet met unieke ID gelinkt worden aan exact 1 bepaalde plaats in het rek. Verder geldt ook nog de voorwaarde dat elke plaats in het rek ofwel nul palletten bevat, ofwel 1 pallet bevat, maar nooit meer dan 1 pallet bevat. Door de ruis in de metingen kan het immers voorkomen dat 1 unieke marker over meerdere plaatsen in het rek verspreid lijkt, of dat verschillende marker IDs in eenzelfde plaats gelocalizeerd zijn. Om deze situaties op te lossen, is het belangrijk om naar het totaalplaatje te kijken, zoals geillustreerd wordt met een voorbeeldje op basis van de figuur hieronder.

 

De figuur toont een situatie waar 2 verschillende markers (rood en blauw) gelocalizeerd zijn in eenzelfde rek plaats (de middelste cel). In de linkerkant van de figuur wordt er niet naar het totaalplaatje gekeken. De meest intuitieve oplossing is hier om de rode marker in de middelste cel te houden, en de blauwe marker naar de nabije rechtse cel te verplaatsen. Als we echter wel naar het totaalplaatje kijken (zie rechterkant figuur), merken we echter op dat de rechtse cel een groene marker bevat. De blauwe marker naar rechts verplaatsen zal leiden tot een nieuw conflict tussen blauw en groen. Aangezien de linkse cel ‘vrij’ is, is de meest intuitieve oplossing hier dus om de rode marker naar de linkse cel te verplaatsen, en de blauwe marker in het midden te houden. Deze probleemstelling kan op een elegante en schaalbare manier voorgesteld worden door een binair optimalizatie probleem, waarbij de binaire optimalizatievariabelen aangeven of een bepaalde marker ID al dan niet aan een bepaalde rek plaats gelinkt wordt. De te minimalizeren kostfunctie kan gedefinieerd worden in functie van de afstanden van alle markers tot hun gekozen rek plaats. Verder maken ook de eerder beschreven voorwaarden deel uit van het optimalizatieprobleem: elke unieke marker moet gelinkt worden aan exact 1 rek plaats en elke rek plaats bevat ofwel nul, ofwel 1 unieke marker. De figuur hieronder toont het resultaat na optimalizatie. De randkleur van elke cel geeft weer welke marker gelinkt is aan die bepaalde rek plaats.

 

Tellen van dozen

 

Set-up
Voor het tellen van dozen in een magazijn, rusten we de drone uit met een LiDAR sensor. Deze verzamelt beelden wanneer de drone door het magazijn vliegt en stuurt deze vervolgens door naar een laptop of server over Wi-Fi. Wanneer de data aankomt op de laptop telt de software het aantal dozen als ook hun positie op het schap of de pallet. Vervolgens wordt voor elke locatie het aantal dozen weergegeven in een real-time visualisatie.

 

 

LiDAR sensor
Het principe van LiDAR (LIght Detection And Ranging of Laser Imaging Detection And Ranging) is zeer gelijkaardig aan RADAR-technologie. Een signaal wordt uitgezonden, gereflecteerd door het te detecteren object en opnieuw ontvangen. De afstand tussen de sensor en het object kan worden afgeleid uit de tijd tussen het verzenden en het ontvangen van het signaal.

 

d = c*t/2 Hierbij is d de afstand tussen de sensor en het object, (=300m/s) de lichtsnelheid en de tijd tussen het uitzenden en ontvangen van het signaal. Het verschil tussen LiDAR en RADAR zit in de golflengte van het signaal. Een LiDAR gebruikt laserlicht die een veel kleinere golflengte (1000 nanometer) heeft, in vergelijking met RADAR die radiogolven gebruikt (1 cm). Hierdoor is LiDAR op korte afstand veel nauwkeuriger.       Aangezien de LiDAR sensor op de drone moet worden bevestigd, zijn de afmetingen en het gewicht van de sensor belangrijk. De Intel LiDAR L515 weegt slecht 100 gram en is daarom ideaal voor deze case. Deze sensor neemt naast een diepte foto ook een reguliere kleurenfoto zodat informatie van beide modaliteiten kan worden gebruikt.   Meer informatie over deze sensor: 1.7 Different sensors and their applications (placeholder op tijd van schrijven)

 

Marker detection
De kleurfoto wordt in de eerste plaats gebruikt om de visuele marker te detecteren. Hier wordt de ArUco marker gebruikt, maar alternatieven zoals de QR marker zijn evengoed mogelijk.

 

Meer informatie: 2.4 Tag-based detection (onvolledig op tijd van schrijven)        Eens de marker gedetecteerd is, kan de markercode worden bepaald. Vervolgens kan meer informatie over dit specifiek pallet worden opgezocht in de database. Hierbij hechten we veel belang bij de afmetingen van de dozen, aangezien we deze later nog nodig zullen hebben bij het tellen van de dozen.

 

Marker ID
Product
Afmetingen doos (BxHxD in cm)
10 Laders   9 x   8 x   7
11 Smartphones 19 x 12 x 12
12 Laptops 30 x 13 x13

 

Naast een ID-nummer geeft de marker ons ook de locatie van de pallet of het schap. Meer informatie over localisatie en calibratie aan de hand van ArUco markers kan hier worden gevonden: 1.4 Camera calibration

 

Algoritme voor het tellen van dozen
Het algoritme voor het tellen van het aantal dozen kan worden opgesplitst in 2 stappen:

 

1. Detectie en lokalisatie van de voorkant van een direct observeerbare doos
Voor het algoritme wordt de dieptefoto gebruikt (zie foto hieronder, links boven). Deze informatie wordt omgezet naar een puntenwolk (zie foto hieronder, rechts boven). In deze puntenwolk worden vervolgens vlakken gedetecteerd. Dit gebeurd aan de hand van het RANSAC algoritme (Fischler and Bolles, 1981). Het algoritme werd voor deze use-case op 3 manieren aangepast:

 

  • Er wordt enkel op verticale vlakken geselecteerd aangezien de dozen rechthoekig zijn en we enkel de voorkant van een doos detecteerbaar is.
  • Het originele algoritme zoekt slechts 1 vlak. In het aangepaste algoritme kunnen meerdere vlakken worden gevonden.
  • Enkel vlakken waar een of meerdere dozen in passen worden behouden. 

Deze gevonden vlakken komen overeen met de voorkant van 1 of meerder dozen (zie foto hieronder, rechts onder). Bijvoorbeeld, het onderste vlak heeft een breedte en hoogte die overeenkomt met 4 dozen naast elkaar. Ter herinnering, de afmetingen van de dozen vonden we in de database aan de hand van de ArUco marker. Nu de direct observeerbare dozen bepaald zijn, kennen we meteen ook hun positie. Door de diepte-sensor is voor elk vlak de positie op de pallet of het schap gekend. 2. Bepaling van het aantal niet-observeerbare dozen, verstopt achter een andere doos De informatie uit stap 1 gebruiken we voor stap 2 van het algoritme: het bepalen van dozen die verborgen zitten achter een andere doos. Het aantal verborgen dozen kan bepaald worden door volgende informatie te combineren:

  •  De diepte-afmeting van elke doos (uit database)
  • De afmetingen van de pallet (uit database)
  • De diepte positie van de observeerbare doos (uit stap 1)

 

 

Live demonstratie

 

labo_movie_cropped.mp4

 

Pin It on Pinterest