Hemgjord 3D Scanner på billiga (3 / 4 steg)
Steg 3: programvara
Detta är där huvuddelen av arbetet hände. För att hela denna process att arbeta, jag kommer att behöva:
- Programvara för att fånga data från Kinect
- Programvara för att skicka ett nätverkmeddelande till Pi att berätta den att rotera
- Programvara på Pi att göra GPIO stiften orsaka ett steg upp/ned, vilket i sin tur skulle berätta stepper motor controller att kliva
Tack och lov, i Software Developer Kit för Kinect var ganska enkelt. (Jag är en C# utvecklare av handeln). Jag var lite orolig för nätverk portion av saker, men Lidgren nätverksbibliotek (finns även i C#) visat sig vara mycket händig. På Pi, jag installerade Mono, och skapat en liten klient app som också används Lidgren nätverksbibliotek för att leta efter en inkommande begäran. Jag kunde använda en filbaserad GPIO system (fortfarande i C#) för att berätta den stepper motor controller att göra sin grej.
När jag hade alla 3D skannade data från ett helt varv i objektet som skannas. För varje ögonblicksbild av skannade data förändrat jag den till samma koordinatmodell. Från där jag slutade med en voxel-baserade strategi kombinera data: Jag skulle behandla tre intilliggande djup punkter som en triangel, och skär det triangeln till en octree datastruktur. Till slut var vad jag slutade med en octree som visar vilka områden i 3D utrymme var "fast" och vilka som var "Tom". Därifrån, jag sprang den marscherande kuber algoritmen, och använde den för att generera en vattentät maska.
En av de svåra delarna var att få skannern rätt kalibrerad. Jag hade i princip göra det genom eyeballing saker: Jag skulle sätta ett litet objekt på skannern, avsöka den, rotera den och se hur det förhållande. Om det såg ut, skulle jag behöva justera min "mätt" avstånd från Kinect till mitten av avsökningen plattformen och upprepa processen.