Što kad viličari (u režiji Gideona) postanu autonomni?

Viličari, skladišta, utovar i istovar kamionskih prikolica, prijevoz paleta od točke A do točke B, logističke hale… Ne zvuči baš zanimljivo? Pročitajte što se dogodi kad sve navedeno začinimo s malo umjetne inteligencije i računalnog vida te dodamo prstohvat C++a i Pythona

Gideon, domaća robotička tvrtka koja razvija rješenja temeljena na umjetnoj inteligenciji, prošli tjedan je javnosti predstavila svog novog robota – autonomnog mobilnog viličara za utovar i istovar kamionskih prikolica, nazvanog Trey. Ovaj autonomni viličar predstavlja inovaciju u području automatizacije najsloženijih operacija rukovanja materijalom na globalnoj razini. Nakon nekoliko posljednjih mjeseci tijekom kojih su naporno radili kako bi performanse i funkcionalnosti Treya doveli do savršenstva, sjeli smo s Markom Pavlićem, team leadom takozvanog Brain tima u Gideonu, i Jurajem Radićem, leadom Machine Learning tima. Oni su nam ispričali na koji su način njihovi timovi sudjelovali u razvoju Treya, kakve tehničke izazove su rješavali te koje specifične tehnologije su pritom koristili.

Možete li nam za početak reći čime se vaši timovi bave, odnosno koja im je uloga gledano iz perspektive cjelokupnog razvoja autonomnog mobilnog robota?

Marko: Brain tim bavi se razvojem centralne jedinice (“mozga” – Braina) autonomnog mobilnog robota, a ta je jedinica zadužena za izvršavanje misija. To mogu biti jednostavnije misije, kao što je prijenos palete s jedne točke na drugu, ali mogu biti i vrlo složene, kao što je utovar ili istovar prikolice.

Brain upravlja radom i koristi rezultate ostalih softverskih komponenti (navigacije, semantike…), aktuatora, senzora itd., kako bi se misije izvršavale što brže i sigurnije, a pritom je potrebno paziti da je moguće oporaviti se od nepredviđenih situacija i nastaviti izvršavati misiju.

Juraj: Svi naši roboti opremljeni su kamerama i u semantičkom timu se prvenstveno bavimo analizom i razumijevanjem slike iz kamere. Koncentrirani smo na nekoliko problema: semantička segmentacija slike, detekcija objekata, estimacija poze objekata (procjena 3D pozicije objekta u prostoru), te procjena dubine pomoću stereo kamere. Ovim problemima pristupamo metodama dubokog učenja koje su posljednjih godina doživjele brz razvoj te su se nametnule kao najbolje metode za rješavanje navedenih problema.

Naša rješenja robotima omogućuju sigurno kretanje budući da možemo detektirati i lokalizirati prepreke u prostoru. Također, omogućuju izvršavanje zadataka kao što je određivanje pozicije paleta te njihovo podizanje.

Kako je tekao vaš karijerni put i profesionalni razvoj u Gideonu?

Marko: Gideonu – i Brain timu – sam se pridružio odmah poslije diplomiranja na FER-u, 2019. godine kao C++ softverski inženjer. U tom sam se vremenu imao prilike susresti s raznim inženjerskim problemima, osobito zato što Brain interagira sa svim komponentama robota. Potrebno je razumjeti način rada i algoritme ostalih komponenti, kako bi sam Brain funkcionirao što efikasnije. Zato sam imao priliku usvojiti jako puno znanja iz domene robotike u kratkom vremenu. Prošle jeseni sam preuzeo ulogu voditelja tima, što donosi dodatne odgovornosti, ali i veliko zadovoljstvo, jer svakodnevno mogu raditi sa skupinom iznimnih mladih ljudi i stručnih inženjera u svom timu.

Juraj: U Gideonu radim već nešto više od tri godine i svo vrijeme sam proveo u semantičkom timu kao inženjer strojnog učenja. Sretan sam što sam se imao prilike baviti većim brojem različitih tema čime stalno širim svoje znanje. Početkom ove godine postao sam i voditelj semantičkog tima. To nosi nove odgovornosti i izazove, ali drago mi je što imam priliku razvijati se i u jednom drugom smjeru.

Koje su to funkcionalnosti koje su vaši timovi razvijali specifično za Trey, a razlikuju se od featurea/funkcionalnosti na Gideonovim ostalim robotskim platformama?

Marko: Kako je utovar i istovar paleta iznimno kompleksna misija (gledajući iz perspektive robota), Brain je morao razviti mnoštvo novih funkcionalnosti. Bilo je potrebno implementirati nove interakcije s komponentama koje mogu prepoznati orijentaciju i početak prikolice, prepoznati više paleta istovremeno, pomicati vilice horizontalno, mijenjati njihov nagib, proširiti postojeće interakcije s ostalim komponentama… Sve te nove funkcionalnosti trebalo je smisleno povezati, smisliti algoritme za detekciju kolizije sa statičkim objektima te za kontinuirano podizanje i mijenjanje nagiba vilica kod ulaska u iznimno neravnu prikolicu, razviti posebne skripte za izvršavanje misije, proširiti logiku i kontekst misije, osigurati ponovno izvođenje od zadnje izvršene točke. U posljednjih nekoliko tjedana fokus je na paralelizaciji akcija i ubrzavanju vremena izvođenja misije. U svakom slučaju, ovaj projekt donio je jako puno zanimljivih tehničkih izazova za riješiti zahvaljujući čemu smo imali priliku mnogo toga naučiti.

Juraj: Estimacija poze paleta je komponenta koju smo razvili specifično za Trey. Kako bi istovario kamion, viličar mora podići palete koje se tamo nalaze, a za to je prvo potrebno precizno odrediti njihovu lokaciju u prostoru. Naše rješenje uz lokaciju prepoznaje i tip palete te trenutačno podržavamo šest tipova paleta. Rješenje je kombinacija duboke neuronske mreže i klasičnih algoritama računalnog vida. Budući da se koristimo dubokim učenjem, bilo je bitno sakupiti dovoljnu količinu označenih podataka što obuhvaća snimanje i označavanje paleta – za što smo sami razvili specijalizirani alat.

Koje specifične tehnologije inače koristite u vašim timovima? (Programski jezici, biblioteke, frameworci?

Marko: U Brain timu glavni je fokus na dubinskom poznavanju C++-a, oblikovanju arhitekture koda, objektnom dizajnu, višedretvenom izvođenju i sposobnosti debuggiranja. Tako da uz C++, znanja iz Linux OS-a, gdb-a i ROS-a jako dobro dođu u svakodnevnom radu. Tu su još I LUA kao DSL te neke pomoćne biblioteke.

Juraj: U semantičkom timu od programskih jezika koristimo Python. Za treniranje dubokih mreža koristimo TensorFlow i PyTorch, a za pokretanje tih mreža na robotu oslanjamo se na Nvidia TensorRT.

Kako ste organizirali svakodnevni rad u vašim timovima?

Marko: Članovi tima raspoređeni su po projektima, ovisno o tome koliko je koji projekt zahtijevan. Recimo, u proteklom kvartalu 75% tima bilo je isključivo fokusirano na Trey projekt, dok će u sljedećem kvartalu cijeli tim raditi na tom projektu. Naravno, na ostalim su projektima također potrebni određeni zahvati, tako da se unaprijed rezervira određeni član tima za konkretan zadatak na drugom projektu. Uz to, potrebno je pomoći našoj remote ekipi u SAD-u prilikom testiranja vozila, pa najčešće jedan član tima radi popodnevnu smjenu.

Juraj: Svaki član tima odgovoran je za određene komponente naših rješenja. Činjenica da se testiranje Trey robota većim dijelom odvija u SAD-u znači da ponekad moramo prilagoditi i naše radne sate.

Možete li nam opisati kako izgleda vaša suradnja s drugim timovima u Gideonu? S kojim timovima najviše surađujete i na kojim područjima?

Marko: Kao što sam već napomenuo, Brain je centralna komponenta koja interagira sa svim komponentama sustava. Tako i Brain tim mora surađivati sa svim timovima, bilo softverskim ili hardverskim. Ipak, rekao bih da najviše surađujemo s navigacijskim timom. Brain zna kamo treba poslati vozilo kako bi se određeni koraci misije uspješno izveli. Kretanjem vozila upravlja navigacija, planirajući put i izvršavajući ga. Dakle, Brain šalje ciljeve navigaciji, imajući na umu koji se korak misije izvodi, koji su sljedeći koraci, i kako će navigaciji biti jednostavnije isplanirati putanju, a mora pripremiti i određene preduvjete navigaciji za izvršavanje plana. Također, Brain tim dosta surađuje s Robot Interface (Web) timom, s kojim definira kod misije i daje određene informacije za prikaz korisniku.

Juraj: Nekoliko je timova s kojima često surađujemo. Sa Stereo timom zajedno radimo na problemu određivanja dubine, a oni nam pružaju općenitu podršku pri korištenju kamera. Na Trey projektu često surađujemo s Brain timom koji preuzima našu procjenu pozicije paleta te na temelju toga određuje iduće korake autonomnog viličara. Također, surađujemo sa SLAM timom koji se bavi mapiranjem prostora i lokalizacijom jer su se metode dubokog učenja i na tom polju pokazale vrlo uspješnima.

I za kraj, kako biste opisali svoje iskustvo rada u Gideonu? Kakve su perspektive za razvoj profesionalnih vještina i znanja? Kakva je atmosfera i kultura?

Marko: Mislim da je Gideon idealna sredina za razvoj mladih, perspektivnih inženjera. Problemi na kojima se radi su izazovni, kolege su vrhunski eksperti u svojim područjima, može se čuti puno različitih rješenja i zbog svega toga se mogu usvojiti brojna znanja. Najbitnije od svega, svatko je spreman pomoći i podijeliti svoje znanje i iskustva, popiti kavu, prodiskutirati svakodnevne teme i zaigrati partiju stolnog tenisa ili nogometa, tako da postoji odličan spoj opuštenosti i rada.

Juraj: Dva su razloga zbog kojih volim raditi u Gideonu. Prvi je taj što rješavamo zanimljive i vrlo izazovne probleme. A drugi razlog je što imamo izvrsne ljude: vrijedni, pametni i uvijek spremni pomoći. To stvara odličnu atmosferu. Rekao bih da kompleksnost robota i zahtjevnost problema koje rješavamo jamče pregršt mogućnosti za razvoj i stjecanje novih znanja.

Sad kad znate malo više o tome što radi i razvija ekipa iz Gideona, priznajte da niste očekivali da viličari i skladišta mogu biti ovako zanimljivi!

Više o otvorenim pozicijama u Gideonu možete pročitati ovdje: Gideon Careers Page.
Želite li, pak, uživo susresti ekipu iz Gideona, dođite na .debug:

Kupi ulaznicu

999 kn

Ulaznica

250 kn

Studentska ulaznica

650 kn

Online ulaznica

200 kn

Studentska online ulaznica