Låt oss laga: 3D skanner baserat på Arduino och bearbetning (2 / 13 steg)
Steg 2: Principen om drift
Vi hittade kartesiska koordinater (i utrymme) punkter som hör att skannade objektet.
I grund och botten söker vi avstånd, mellan rotationsaxeln och en punkt märkt röd av laser ("ro" på bilden). För att grunda detta, måste vi mäta hur många pixlar är mellan optiska axeln av kamera och laser-märkta punkt. På bilden, är detta avstånd markerad som "b". När vi får denna information, måste vi omvandla den till millimeter (hur många pixlar är en millimeter). Vinkeln mellan laser och kamera axel är konstant och lika med "alpha". Med hjälp av enkel trigonometri, kan vi beräkna "ro":
sinus(alpha) = b / ro, vilket innebär att ro = b / sinus(alpha)
Denna operation upprepas varje lager, i mitt fall är det 480times. Sedan roterande plattformarna flytta genom vissa vinkel och hela operationen upprepas.
Låt oss gå till andra bilden.
Tidigare verksamhet gav oss koordinater i polära koordinatsystem. I polar system, varje punkt ser ut ungefär sådär:
P = (avstånd från Z-axeln, vinkeln mellan punkt och X-axeln, Z) som är P = (ro, fi, z).
Ro är vårt avstånd, mätt i tidigare operation. Fi är en vinkel på roterande plattform. Det växer ett konstant belopp, varje gång plattform rotera. Denna konstant belopp i lika 360 graders / antal operation
Dvs för 120 profiler runt objekt, plattform rör sig om 360deg / 120 = 3 deg. Så efter första draget, fi = 3, efter andra fi = 6, efter tredje fi = 9 etc.
Z-värde är samma värde som Z i kartesiska systemet.
Konvertering från polar till kartesiska är mycket enkel:
x = ro * kosinus (fi)
y = ro * sinus (fi)
z = z