Python workflow for point cloud registration and 3D inspection

Loading...
Thumbnail Image

URL

Journal Title

Journal ISSN

Volume Title

School of Engineering | Master's thesis

Department

Mcode

Language

en

Pages

100

Series

Abstract

Quality is often associated with expensive products and top brands. However, in manufacturing the meaning of quality is more about manufacturing products that are in given tolerances. Inspection of tolerances is usually implemented using a Coordinate Measuring Machine (CMM) or portable scanner. Those measurement devices give 3D point clouds as results and enable many different applications for dimensional and geometrical 3D Inspection. 3D Inspection needs data processing and calculation to get desired information from the measured point clouds. There are numerous software available for 3D Inspection including paid and open-source software. Widely used methods in those software are point cloud registration and different form-fitting methods. In addition, the open-source software Python has lots of libraries for point cloud registration and form-fitting. This thesis aims to investigate the possibilities of Python for 3D Inspection. The thesis provides comprehensive background information in the form of a literature review and a case study of 3D Inspection using Python with 3D scanned point clouds. The case study includes 3D Inspection of cylindrical part diameters with two other Python workflows. One of those workflows uses point cloud registration and the nominal CAD data and the other uses cylinder-fitting without the nominal CAD data. In addition, the case study compares state-of-the-art point cloud registration methods available for Python. The investigation proved Python to be suitable for 3D Inspection. The measurement results of Python workflows were extremely close to the industrial-aimed Gom Inspect software with a maximum difference of 0,006 mm. In addition, there were more accurate cylinder fitting algorithms available for Python than for the open-source software CloudCompare. The algorithm used for Python was Least Squares (LS) and for CloudCompare Ransac. The investigation was also implemented for the point cloud registration methods available for Python. Noteworthy was that the commonly used combination Random Sample Consensus (Ransac) + Iterative Closest Point (ICP) gave more accurate results than the state-of-the-art neural networks-based PointNetLK.

Laatu yhdistetään usein kalliisiin tuotteisiin ja huippumerkkeihin. Valmistusteollisuudessa laadun merkitys painottuu kuitenkin tuotteiden valmistamiseen annettujen toleranssien mukaisesti. Toleranssien tarkastus toteutetaan yleensä koordinaattimittauskoneella tai kannettavalla skannerilla. Nämä mittauslaitteet tuottavat tulokseksi 3D-pistepilviä, ja ne mahdollistavat monia erilaisia sovelluksia dimensionaaliseen ja geometriseen 3D-tarkastukseen. 3D-tarkastuksessa tarvitaan tietojen käsittelyä ja laskentaa, jotta mitatuista pistepilvistä saadaan haluttua tietoa. 3D-tarkastukseen on saatavilla lukuisia ohjelmistoja, mukaan lukien maksullisia ja avoimen lähdekoodin ohjelmistoja. Näissä ohjelmistoissa käytetään yleisesti pistepilvien rekisteröintiä ja erilaisia muotojensovitusmenetelmiä. Kyseisten menetelmien käyttöön on saatavilla lukuisia Pythonille suunnattuja avoimen lähdekoodin kirjastoja. Tämän opinnäytetyön tarkoituksena on tutkia Pythonin mahdollisuuksia 3D-tarkastuksessa. Opinnäytetyössä annetaan kattavat taustatiedot kirjallisuuskatsauksen muodossa ja suoritetaan tapaustutkimus, jossa Python-ohjelmistoa käytetään 3D-tarkastukseen skannattujen pistepilvien kanssa. Tapaustutkimus sisältää sylinterimäisen kappaleen halkaisijoiden tarkastuksen kahdella Python-työnkululla. Toisessa näistä työnkuluista käytetään pistepilven rekisteröintiä ja CAD-referenssimallia ja toisessa sylinterin sovitusta ilman CAD-referenssimallia. Lisäksi tapaustutkimuksessa suoritetaan vertailua Pythonille saatavilla oleville pistepilvien rekisteröintimenetelmille. Tutkimus osoitti Pythonin soveltuvan 3D-tarkastukseen. Python-työnkulkujen mittaustulokset olivat erittäin lähellä teolliseen käyttöön tarkoitettua Gom Inspect-ohjelmistoa suurimalla erolla 0,006 mm. Lisäksi Pythonille oli saatavilla tarkempia sylinterinsovitusalgoritmeja kuin avoimen lähdekoodin CloudCompare-ohjelmistolle. Pythonissa käytetty algoritmi oli pienimmän neliösumman menetelmä (LS) ja CloudComparessa satunnaisotosmenetelmä (Ransac). Tutkimusta suunnattiin myös Pythonille saatavilla oleville pistepilvien rekisteröintimenetelmille. Huomionarvoista oli, että yleisesti käytetty yhdistelmä (Ransac) + iteratiivinen lähimmän pisteen menetelmä (ICP) antoi tarkempia tuloksia kuin viimeisimpään tekniikkaan (neuroverkkoihin) perustuva PointNetLK.

Description

Supervisor

Partanen, Jouni

Thesis advisor

Akmal, Jan

Other note

Citation