Australiër bouwt universele Lego-sorteermachine met kunstmatige intelligentie

Het sorteren van Lego-steentjes is niet meteen het leukste onderdeel van een nieuw bouwproject. De Australiër Daniel West had er zijn buik van vol en ontwikkelde een Lego-sorteermachine. Via kunstmatige intelligentie herkent en sorteert het apparaat bijna elk stukje dat ooit is gemaakt.

Daniel West werkte meer dan twee jaar aan zijn 'universele Lego-sorteermachine'. Door toepassing van kunstmatige intelligentie kan de machine volgens hem nagenoeg elk Lego-onderdeel herkennen en sorteren, op voorwaarde dat er een 3d-model van beschikbaar is. De enige uitzonderingen zijn stukken die te groot zijn voor de machine, bepaalde flexibele en daardoor moeilijk herkenbare onderdelen, en blokjes die niet in de LDraw.org Parts Library zijn opgenomen.

In een YouTube-video is te zien hoe West een bak Lego-blokjes leegkiepert in een grote trechter boven op de sorteermachine. De stukjes worden vervolgens via een transportband in de machine geladen en daarna keurig gesorteerd in maximaal achttien verschillende kleinere compartimenten.

Het hart van de sorteermachine, die zelf uit meer dan tienduizend Lego-stukjes bestaat, is een Raspberry Pi-computer. Via een kleine camera wordt elk blokje geanalyseerd, waarna het systeem in de LDraw.org- en The Rebrickable-databases op zoek gaat naar een match. Daarbij wordt de sorteermachine geassisteerd door een krachtigere laptop waarop een neuraal netwerk draait, meer specifiek het opensource machinelearningplatform TensorFlow.

Voor wie meer details wil weten over de kunstmatige intelligentie van de sorteermachine, plaatste Daniel West nog een tweede YouTube-video online.

Door Michel van der Ven

Nieuwsredacteur

09-12-2019 • 12:27

65 Linkedin

Submitter: Rainbow

Reacties (65)

65
65
51
4
0
13
Wijzig sortering
Is dit geïnspireerd op Lego's Find my Brick 1 april grap van dit jaar?
Kan iemand mij uitleggen wat hier Kunstmatig Intelligent aan is? Een camera maakt een foto, deze wordt opgezocht in een database met 3d modellen van onderdelen, om daarna in het juiste bakje te worden gedaan.
(Dit is geen trol, ik ben echt benieuwd naar het antwoord, want ik haal het niet uit dit verhaal)
Wat hier toegepast wordt is Machine Learning (ML) wat een subgebied van Artificial Intelligence (AI) is. Wat er van tevoren gedaan is, is dat er met behulp van 3D modellen van alle bekende lego-blokjes verschillende images zijn gemaakt. Deze images worden gevoerd aan een Convolution Neural Network (CNN) om te trainen. Een CNN is heel erg geschikt om images te classificeren (bepalen wat er op het plaatje staat). Dus als ik bijvoorbeeld een CNN 10.000 foto's van een kat laat zien, dan is zo'n CNN daarna in staat om een nieuw, nog nooit van tevoren gezien, plaatje te classificeren als zijnde een kat (mits er een kat op staat natuurlijk). Wat jij dus noemt 'een foto opzoeken in een database met 3D modellen', dat kan een computer niet uit zichzelf en dat is waar we tegenwoordig Machine Learning en/of Deep Learning voor gebruiken.

P.S. Ik wil dit thuis ook voor de debiel grote lego verzameling van de kids.
P.S. Ik wil dit thuis ook voor de debiel grote lego verzameling van de kids.
Die machine is achterlijk groot en dan sorteert hij 3.000 soorten alsnog in 18 bakjes. Dat schiet toch niet op? Dan moet je alsnog zelf gaan zoeken naar het juiste stukje.
Je zou het natuurlijk ook zo kunnen maken dat de machine meerdere slagen doet. Dus eerst grof verdelen in 18 categorieën. En daarna een tweede run, waarbij je elk gesorteerd bakje er nog een keer doorheen doet en die weer verdeelt in x andere bakjes.
Nee het blokje wordt exact herkend met een bepaalde zekerheid. De error rate wordt in het filmpje niet genoemd, maar er zijn maar 18 sorteer bakjes. De programmeur heeft dus 18 categorieën gemaakt om het blokje in te laten belanden.

Als er genoeg bakjes waren geweest dan had elk individueel stukje gewoon apart gesorteerd kunnen worden.

Ik doe dit ook bij herbouw acties, uitelkaar halen en proberen een optimale categorisatie te maken. Stokjes, klikertjes, rechte stukken, drukken met een bocht, tandwielen enz. Afhankelijk van de set dan nog op kleur. En bij heel veel rechte stukken dan in lengte categorieën.

Dus 18 bakjes is helemaal niet gek, tijdens het bouwen kan je makkelijk alles vinden zonder lang te hoeven zoeken.

Wat wel zou kunnen als verbetering: eerst alles herkennen, dan een slimme categorie verdeling maken en dan nog een keer er door om te sorteren.

Ook handig om te checken of een set compleet is voordat je m op marktplaats zet :)

Hoewel met het aantal stenen die je nodig hebt om dit te bouwen je daar niet snel aan toe zult komen, die steentjes zijn dan allemaal in gebruik :)

Nog een toepassing: als ik een set nieuw open maak en ik wil deze later nog eens verkopen dan is het van toegevoegde waarde voor de volgende eigenaar om de originele zakjes vulling te hebben om toch meer een ‘nieuwe set’ ervaring te hebben. Dan zou je bij het nieuw uit doos halen ieder zakje kunnen laten herkennen en opslaan, en bij de verkoop weer de originele zakjes indeling kunnen aanleveren door dit te sorteren.

[Reactie gewijzigd door mjl op 10 december 2019 23:11]

Het ligt er maar net aan hoe je de 18 sub-sets indeelt.
Uit één bak basisonderdelen een blokje met de juiste lengte en dikte zoeken is niet zo'n probleem. Het probleem is meer het zoeken van een klein, speciaal onderdeeltje in een grote bak met andere onderdelen.
Maar al zou er simpel op artikelnummer gesorteerd worden, zoeken in een bak met 150 andere soorten onderdelen is altijd nog beter dan zoeken in een grotere bak met 3.000 onderdelen.
Dus deze machine sorteert meer in classificaties dan daadwerkelijk precies dezelfde blokjes lego.
Verklaard waarom het maar 18 bakjes zijn en geen 3000.

Dus met bovenstaande verhaal zou je een nieuw type blokje aan de machine voeren waar geen 3D-model van bekend is, en hij deze toch bij zijn soortgenoten in het bakje gooit.
De classificaties zijn waarschijnlijk door de gebruiker zelf gespecifieerd, de machine heeft enkel geleerd (via images (training)) om blokjes te herkennen. De foto die de machine maakt mapt bijna nooit 1:1 met een image die hij ooit gezien heeft maar door ML kan hij het wel herkennen en een best guess doen. Als hij daadwerkelijk een blokje voor zijn neus krijgt waar hij nooit een foto van heeft gezien zal hij er ook geen exacte classificatie op kunnen plakken maar de kans dat hij bij een soortgelijk blokje terrecht komt is wel groot.

(als ik het een beetje begrijp ten minste)
Nee dat is niet helemaal waar. Het netwerk zal altijd een output geven voor alle blokjes. Dus elke foto wordt geclassificeerd als 0% kans op blokje A, 1% op blokje B etc en meestal 80+% op het juiste blokje. Dus een nooit gezien blokje zal waarschijnlijk toch een ongedefinieerd percentage neigen naar een ander blokje omdat het netwerk niks anders weet dan de blokjes die hij geleerd heeft. Maar zoals de maker al aangeeft gebruikt hij de immense LDraw database als input om de trainingsdata te genereren. Dus het meeste zal hij wel kennen. Grootste probleem met LEGO is dat er elke dat wel weer nieuwe specifieke blokjes bijkomen en dan moet dit netwerk in principe opnieuw getraind worden wat heel erg duur en time-consuming is (veel GPU power nodig).
Verklaard waarom het maar 18 bakjes zijn en geen 3000.
Inderdaad. Maar in het filmpje wordt niet uitgelegd waarom specifiek 18. Om er achter te komen wat een optimaal aantal bakjes is volgens de computer kan je clustering toepassen (unsupervised learning). Daarmee kan je clusters van data maken (of bakjes lego, in deze context) wat volgens de computer bij elkaar hoort. Door daar wat mee te spelen, zou je ook nog het aantal van 18 bakjes kunnen onderbouwen
Dat zou je idd kunnen doen. Gevaar bestaat wel dat je clustering algoritme er op uitkomt dat kleur de beste onderscheidende factor voor LEGO blokjes is en als er iets is wat je niet moet doen als je LEGO gaat sorteren is het wel sorteren op kleur :)
Maar dit zou op zich wel een leuk experiment zijn! Als ik toch eens tijd teveel had...
Sorteren op kleur kan een goede eerste stap zijn, toen ik over de 60KG kocht ben ik eerst op kleur gaan sorteren, maar dan wel basic en niet alle bestaande kleuren want dan komt er geen einde aan. Daarna elke kleur op type brick.
Ja als je je zoveel verschillende bakjes kunt veroorloven dan is een eerste schifting op kleur wellicht wel handig inderdaad. Ik ben wel benieuwd hoeveel bakjes je nu hebt en welk soort bakjes dat zijn?
14 van deze sets gekocht: https://www.ikea.com/nl/n...ansparant-groen-60149673/. Veel bakjes en altijd handig.

Meeste zijn alweer leeg, er staan in de opslag nu een paar verhuisdozen met 110 sets elk in een eigen luchtdichte zak van waaruit ik mijn zoon jarenlang lego kan voeden, het echt kleine spul zit nog in de bakjes en het restant van de grotere dingen combineert geweldig met zijn duplo collectie.

Zou er normaal nooit aan begonnen zijn, maar liep tegen een moeder aan die alles de deur uitdeed voor 300,- en alle boekjes waren er nog bij, maar damn wat een werk om zoiets uit te zoeken, aan de andere kant lekker goedkoop mijn zoon vele jaren elke paar weken een set om mee te spelen.

Hier een deel:
https://i.ibb.co/RvctkJg/Legostarwars1.png
https://i.ibb.co/hMq4852/Legostarwars2.png
volgens mij hebben ze bij bij lego zelf een sorteer machine die alleen op kleur sorteert.. maar ja zij kunnen die blokjes dan weer in de machine gooien om nieuwe van te gieten..
Zal niets meer of minder zijn geweest dan zijn keuze. 50 Bakjes klinkt leuk maar je moet wel alles overal heen transporteren en dus word het al snel een joekel van een machine.

Zou fijn zijn als er een grote feeder bij zit, dan kun je partijen kopen en gooi je er 5 emmers in voor je na je werk gaat en bij thuiskomst zijn de eerste 18 sets eruit gesorteerd :)
Dus met bovenstaande verhaal zou je een nieuw type blokje aan de machine voeren waar geen 3D-model van bekend is, en hij deze toch bij zijn soortgenoten in het bakje gooit.
Nee, in het filmpje zegt de maker dat dit alleen kan als er een 3D model beschikbaar is van het blokje (~1:30). Wel is het zo dat dit neural network kan trainen op het 3D model en er geen 10.000 verschillende afbeeldingen nodig zijn van het type lego blokje.
Het model trainen en bijhouden wellicht? Wat is het verschil tussen AI en een getraind model? AI neemt zelf beslissingen maar deze moeten beoordeeld worden door een mens op correctheid, en daar leert het model van. Gewone intelligentie is niet heel veel anders, maar gaat wel tig keer dieper :)
Ja, ik had dezelfde vraag ik mijn hoofd zitten. In mijn beleving zou je het model niet moeten trainen, maar dat die dat zelf doet.
Wat is intelligent in het computer domein? Echte intelligentie, dwz zelf bewust, is er (nog) niet.

Artificial Intelligence is een paraplu term. In de video geeft hij aan dat er gebruik gemaakt worden van Machine Learning, specifiek een convolutional network. Als ik een gokje mag doen, is het een 2D convolutional neural netwerk, obv Keras' InceptionV3.
Daar zou ik ten minste mee beginnen, dan heb je al een half getrained netwerk, hoef je alleen de tweede helft van je netwerk te trainen wat relatief eenvoudig is.
Toch wel onderdeel van met Lego spelen.
Bak omkieperen en zoeken naar het juiste blokje :+
Een interessante toevoeging zou zijn dat het apparaat een overzicht van bestaande sets of delen daarvan weergeeft die met de voorraad gemaakt kunnen worden. Bouwwerken zonder bewegende delen moeten vervolgens ook wel automatisch in elkaar gezet kunnen worden.
Je bedoelt https://rebrickable.com/ ?

Volledige partlists zijn ook te vinden op: https://brickset.com/

[Reactie gewijzigd door dxta op 9 december 2019 14:46]

Dat zou betekenen dat je een dataset van iedere Legoset ooit moet hebben; geen idee of daar aan te komen is en of Lego zelf daaraan mee zou willen werken.
Misschien kan je dat wel uit API's van bvb bricklink toveren? Er zijn genoeg 'fan' sites die dit soort data voor handen hebben lijkt me, of ze het ook publiek aanbieden weet ik niet.
(wil ik best wel eens even onderzoeken eigenlijk)
Ja, helaas bestaat dat nog niet. Lijkt me heel moeilijk om te maken. Ik wacht er ook nog steeds op, al moet ik ze met de hand invoeren.
Natuurlijk kan dat zonder machine ook, zo lang je maar zelf een inventaris hebt aangelegd ;)
Ik zie nog wel nieuwe toepassingen. Hoe vaak zoek je niet naar een blokje, terwijl je eigenlijk niet 100% zeker weet of je er nog wel een van hebt. Koppel deze sorteerder aan een voorraadmanagementsysteem en je weet precies hoeveel er nog in die berg moeten zitten :+
Ik mis een robot-been van mijn Galactic Enforcer. Heb al 4 bakken doorzocht... :+
Op 1:05 een rol tape van de Gamma, zit die ook in Australie? :P
gamma.org.au levert geen bouwmarkt op, wel ander leuk initatief.
Volgens mij zit er een stuk video in van een andere sorteerrobot. Wellicht dat die een Gamma in de buurt had, want volgens de Gamma website zitten ze alleen in België en Nederland.
Is een Franse naam die genoemd word, dus kan een Belg zijn
Dan is een andere sorteermachine in beeld, die van Jacques Mattheij, een Nederlander.
https://numrush.nl/jacque...unstmatige-intelligentie/
https://youtu.be/3IuJAFRxSjA?t=49
Je bedoelt Jacques Matty-edge?
Shit... net 2 opslagbakken met de hand uit zitten sorteren; komt dit briljante project voorbij. Alles maar weer door elkaar gooien en een mooi project voor de wintermaand ;)
Beetje kip-ei. Je wilt natuurlijk je steentjes gesorteerd hebben voor je aan de bouw van je sorteermachine kunt beginnen.
Ja, en als je al je blokken nodig hebt om een sorteermachine te bouwen, wat valt er dan nog te sorteren 8)7
Knap dat iemand de M&M sorteermachine een nieuwe toepassing heeft gegeven met AI. De kracht van opensource!
Ik heb een machine gebouwd die M&M's op alfabetische volgorde sorteert.
Ik moest het een paar keer lezen, maar briljant :-)
Je kan hier nog veeeel verder mee gaan, als je genoeg opslag bakjes hebt :) Erg leuk om te zien. Wellicht iets voor de kleine voor later (die haat sorteren en zoeken nu al...)
Of als je het nog iets anders aanpakt kan je misschien een soort van sorting tree maken. Bvb hij heeft 18 buckets dus 18 mogelijkheden, maar per bak kan je misschien nog 18 sub-mogelijkheden bedenken. Kap je elke bak gewoon nog eens door de sorter maar dan voor de subtree van die bak. Zo kna je de hele boel wellicht herleiden tot een sorter voor elk specifiek element :)
Ik dacht er ook aan om er een catalogus achter te hangen zodat je van elk item weet hoeveel je er hebt en in welk bakje ze zitten. Dan een oproep systeem waarbij een robot het juiste bakje komt brengen met de gewenste onderdelen. Deze robot slaat ook de herkenden blokjes op, en zou in theorie honderden bakjes kunnen bedienen. Kan prima, kost alleen wat tijd om te bouwen.... maar wat moet je anders met je tijd :)
Het zou pas echt frappant zijn als ze bij Lego zelf geïnspireerd door dit soort projecten een soortgelijke Lego-sorteermachine van Lego bouwen en in dienst nemen. :9~
Waarvoor zou Lego moeten sorteren ;)
Die sorteren aleen op kleur (simpel) en smelten de gebruikte blokjes weer om..
bron: een kennis die designer bij Lego is geweest..
Knap werk. Ook zeer netjes dat hij 2 eerdere projecten noemt en de makers daarvan hun credits geeft.

Alleen, hoe bouw je nu zo'n ding, als alles nog niet gesorteerd is? :s

Ben ook wel benieuwd naar de kosten aan lego van deze machine. Kosten, baten, lijken me nog niet geheel in verhouding.
Het gaat niet om de kosten/baten.
Het gaat er om dat je leert van de bouw en het tweaken. Op de vraag "waarom?", is ook in dit geval maar een antwoord mogelijk en nodig: "omdat het kan".

Het .geek gehalte in dit artikel is ook wel erg hoog. Lego, een Raspberri Pi, AI en wat online spitten en zoeken.
Ik vraag me af of hij nu nog blokjes over heeft om te sorteren :+
Ik denk dat deze mensen wel blokjes genoeg hebben :).

Op dit item kan niet meer gereageerd worden.

Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee