3D-Pullontunnistin on SICK:n TiM-laserskannerin ympärille rakennettu sovellus, jonka tehtävänä on pitää kirjaa lasipullojen määrästä ja sijainnista kahdella eri pullohyllyllä. Mittalaitteena toimii 2D TiM561-skanneri, jota luetaan TCP-yhteyden avulla. Skanneria kääntää vertikaalisessa suunnassa Arduinolla ohjattu askelmoottori. Mitatusta datasta muodostetaan pistepilvi, jota analysoimalla voidaan havaita pullojen sijainnit. Ohjelmisto Skanneria luetaan erityisesti tätä projektia varten toteutetulla Windows-sovelluksella, joka on kehitetty .NETframeworkilla ja C#-ohjelmointikielellä. Ohjelmisto lukee skanneria TCP-yhteyden avulla ja parsii sen CoLa-protokollaa noudattavista viesteistä mittaustulokset omiin tietorakenteisiinsa ja muuntaa ne x-, y- ja z-koordinaatistoon. Mittauksen jälkeen ohjelmisto käskee Arduinoa liikuttamaan skanneria yhden askeleen, ja toistaa mittauksen. Tämä jatkuu, kunnes haluttu astemäärä on saavutettu. Lopuksi ohjelmisto tuottaa kerätyistä tiedoista PLY-muotoisen pistepilven, joka voidaan analysoida esim. avoimella CloudCompare-ohjelmistolla.
Projektia varten toteutettujen ohjelmistojen lähdekoodit ovat saatavilla osoitteessa https://gitlab.rd.tut.fi/burri/PullonkaulaSICK. Fyysinen toteutus Skannerin ja askelmoottorin kiinnitys drinkkirobottisoluumme on toteutettu pääosin 3D-tulostetulla kiinnitysmekanismilla. Tulostimena käytettiin Prentan B1.25-tulostinta. Mallit ovat saatavilla osoitteessa http://www.thingiverse.com/thing:1927519. Sovelluksen hyödynnyskohteet 2D-skannerin käyttö kolmiulotteisen pistepilven muodostamiseen on hyvin monipuolinen sovellusapplikaatio. Tarkalla servolla tai askelmoottorilla toteutettuna saadaan pistepilvi muodostettua nopeasti ja tarkasti. Mahdollisia sovelluksia ovat esimerkiksi laatikon tai kontin tyhjyyden varmistaminen.