Milliarden Punkte: 3 Dollar gegen 8 Millionen Rubel

So sieht das allsehende Auge im wirklichen Leben aus


: Ein Scanner ist ĂŒbrigens teurer als ein Auto. Tesla S. Mit Luftzustellung zum Eingang in Moskau

. In diesem Beitrag wird der teuerste (wahrscheinlich) der Welt und der billigste 3D-Scanner der Welt beschrieben.


Ich durfte das GerÀt nicht zum Preis eines Teslamobils zerlegen (sÀgen), also habe ich mir die Anweisungen angesehen. Ein paar Bilder von innen von dort.
Auf die Frage, ob ein 3D-Scanner ein Selfie aufnehmen kann (wenn Sie einen Spiegel davor stellen), antworteten sie mir, dass diese GerÀte Probleme mit reflektierenden OberflÀchen haben. Also nahm ich den SchÀdel aus einem nahe gelegenen Regal und versuchte ihn zu scannen.



Solche schönen Dinge werden mit einem Scanner erstellt.


3D-Scanner Surphaser 25HSX


3D-Scanner Surphaser 25HSX ist ein dreidimensionaler Laserscanner mit einem sphĂ€rischen Strahlablenkungssystem, mit dem dreidimensionale Modelle realer Objekte fĂŒr die spĂ€tere Verwendung in verschiedenen Bereichen erstellt werden können:

- Zeichnungen von entworfenen Teilen anhand von Prototypen erstellen;
- Erstellung von Sicherungskopien von Museumsausstellungen und InnenrÀumen;
- Entwicklung von Computerspielen und Werbeanimationen;

Der Scanner basiert auf der Verwendung eines „Scankopfs“ (Hardwarescanner) und eines Steuercomputers, auf dem die „Software“ des Scanners installiert ist, mit dem der Computer den Scanvorgang startet, einen Messdatenstrom vom Scankopf empfĂ€ngt und nach dem Scannen verarbeitet Diese Daten ĂŒbersetzen sie in die Form einer Punktwolke eines Objekts.



TTX
3d , , , .

3d Surphaser 25HSX :

  • – 1.5 – 60 ;
  • — 240180 ;
  • – 200 000 -1 000 000 ;
  • -17-100
  • ~ 2 ( 17 200 000 );
  • – 1 ; 20-60 .
  • 18-22 , 3,3 .


-. 200 /.

: USB-2.



Teile des Scankopfs fĂŒr einen sphĂ€rischen 3D-Scanner
EntschlĂŒsselung
1- ( )
1.1- ( )
1.1.1-
1.1.2- ѐ
1.1.3- .
1.1.4-
1.1.5-
1.1.6-
1.2. –
1.2.1-
1.2.1.1-
1.2.2-
1.3-
2.- «»
2.1-
2.2-
3-
4-

, ( ) . (0,05-0,2 /), — (4-40 /). 200 ( 1 ) ( ). , –
.




Optisches Scanmodul fĂŒr einen sphĂ€rischen 3D-Scanner mit einem Ablenksystem mit Rotation nur um die horizontale Achse, vorbereitet fĂŒr den Transport.


Optisches Design des optischen Scanmoduls
Artikelbeschreibung


:

3 – 47464
4 – 690.0 IF 40 U
7 – 46377
8 – 18.105
11 – 18.106
14 – 18.101.
15 – 18.102.
16 – 47911 48692
17 – 38 02 27 032

1 –
2 –
5 –
6 –
9 –
10 –
12 –
13 –



Die BL-Lasermodul-Baugruppe dient zur Steuerung der Halbleiterlaserdiode HL6750MG. Im Betriebsmodus stellt die Karte die Bildung einer kontinuierlichen optischen Strahlung mit einer konstanten durchschnittlichen optischen Leistung und Amplitudenmodulation bereit.


Die BP-Karte des Fotodetektormoduls ist so ausgelegt, dass sie intensitÀtsmodulierte Laserstrahlung unter Verwendung einer Lawinenphotodiode empfÀngt. In der Betriebsart bietet die Karte die Auswahl des Lichtmodulationssignals und dessen VerstÀrkung.


Die BR-Karte des Radio Engineering-Moduls, die Teil des optischen Scannermoduls des 3D-Scanners ist, erzeugt ein kombiniertes Signal, das die IntensitĂ€t des Lichtstrahls moduliert, das empfangene reflektierte HF-Signal und das Referenz-HF-Signal konvertiert (in eine niedrige Frequenz von 1 MHz ĂŒbersetzt und verstĂ€rkt), die reflektierte niedrige Frequenz isoliert und verstĂ€rkt Signal


Die BS-Karte, die Teil des optischen Scannermoduls des 3D-Scanners ist, erzeugt ein Signal ĂŒber das Vorhandensein eines Strahls am Ausgang des Lasermoduls. Zur Erzeugung des Signals wird nur Streustrahlung verwendet. Im Betriebsmodus ĂŒberschreitet die Ausgangsspannung 0,1 V bei einer Strahlleistung von mehr als 3 mW.

Scannen



So sieht der 3D-Scanner den Raum im vorlĂ€ufigen Modus (Sie können den gewĂŒnschten Bereich auswĂ€hlen, den der Scanner untersuchen soll). Die


Welt mit den Augen eines 3D-Scanners. Wer kann eine Person erkennen?


Der gleiche Raum im 3D-Editor


So sieht ein gewöhnlicher Mensch den SchÀdel


Der gesamte Raum wird diesmal nicht benötigt, daher wÀhlen wir nur den Bereich mit dem SchÀdel im Prescan-Modus aus. Dann dreht sich der Scanner etwa 5-10 Minuten lang mit dem Auge und sucht nach Hobbits . Die Hauptsache ist, sich nicht in den Weg zu stellen, sonst brennt es einen Defekt. Der Scanner erfasst nicht nur den SchÀdel selbst, sondern auch Bereiche, die weit dahinter liegen. Dies kann einfach im Editor bearbeitet werden.


Ein vorbeikommender Mann fiel in den Bereich des Laserstrahls. Sehen Sie den Streifen? Stören Sie nicht das kohÀrente Licht. Alles ist in Ordnung mit der Person, aber auf dem Scan wurde es als "gebrochenes Pixel" reflektiert.

Surphaser`a



























—






3d- 3





  • Arduino Arduino IDE
  • Processing IDE
  • LEGO
  • ( )
  • -
  • Meshlab


image
OKI . 48 (7,5 ),
3,7V, 200-250mA

image
,



image



image
CD, , , LEGO

image
— Creative Webcam Vista. (640x480), (plastic lenses). . .

image
(~1$) , . ( ). 30

image
code
#include <Stepper.h>
Stepper oki(48,8,9); //see stepper tutorial in arduino.cc for info about that
const int ledPin = 13; // the pin that the LED is attached to
int incomingByte; // a variable to read incoming serial data into

void setup() {
// initialize serial communication:
Serial.begin(9600);
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
oki.setSpeed(60);
}

void loop() {
// see if there's incoming serial data:
if (Serial.available() > 0) {
// read the oldest byte in the serial buffer:
incomingByte = Serial.read();
// if it's a capital H (ASCII 72), turn on the LED:
if (incomingByte == 'S') {
digitalWrite(ledPin, HIGH);
oki.step(4);
}
// if it's an L (ASCII 76) turn off the LED:
if (incomingByte == 'K') {
digitalWrite(ledPin, LOW);
}
}
}


image

Processing
code:
import codeanticode.gsvideo.*;
import processing.serial.*;

//objects
PFont f;
GSCapture cam;
Serial myPort;
PrintWriter output;

//colors
color black=color(0);
color white=color(255);

//variables
int itr; //iteration
float pixBright;
float maxBright=0;
int maxBrightPos=0;
int prevMaxBrightPos;
int cntr=1;
int row;
int col;

//scanner parameters
float odl = 210; //distance between webcam and turning axle, [milimeter], not used yet
float etap = 120; //number of phases profiling per revolution
float katLaser = 25*PI/180; //angle between laser and camera [radian]
float katOperacji=2*PI/etap; //angle between 2 profiles [radian]

//coordinates
float x, y, z; //cartesian cords., [milimeter]
float ro; //first of polar coordinate, [milimeter]
float fi; //second of polar coordinate, [radian]
float b; //distance between brightest pixel and middle of photo [pixel]
float pxmmpoz = 5; //pixels per milimeter horizontally 1px=0.2mm
float pxmmpion = 5; //pixels per milimeter vertically 1px=0.2mm

//================= CONFIG ===================

void setup() {
size(800, 600);
strokeWeight(1);
smooth();
background(0);

//fonts
f=createFont(«Arial»,16,true);

//camera conf.
String[] avcams=GSCapture.list();
if (avcams.length==0){
println(«There are no cameras available for capture.»);
textFont(f,12);
fill(255,0,0);
text(«Camera not ready»,680,32);
}
else{
println(«Available cameras:»);
for (int i = 0; i < avcams.length; i++) {
println(avcams[i]);
}
textFont(f,12);
fill(0,255,0);
text(«Camera ready»,680,32);
cam=new GSCapture(this, 640, 480,avcams[0]);
cam.start();
}

//Serial (COM) conf.
println(Serial.list());
myPort=new Serial(this, Serial.list()[0], 9600);

//output file
output=createWriter(«skan.asc»); //plik wynikowy *.asc


}

//============== MAIN PROGRAM =================

void draw() {

PImage zdjecie=createImage(cam.width,cam.height,RGB);
cam.read();
delay(2000);
for (itr=0;itr<etap;itr++) {
cam.read();
zdjecie.loadPixels();
cam.loadPixels();
for (int n=0;n<zdjecie.width*zdjecie.height;n++){
zdjecie.pixels[n]=cam.pixels[n];
}
zdjecie.updatePixels();
set(20,20,cam);
String nazwaPliku=«zdjecie-»+nf(itr+1, 3)+".png";
zdjecie.save(nazwaPliku);
obroc();
delay(500);
}
obroc();
licz();
noLoop();

}

void licz(){
for (itr=0; itr<etap; itr++){

String nazwaPliku=«zdjecie-»+nf(itr+1, 3)+".png";
PImage skan=loadImage(nazwaPliku);
String nazwaPliku2=«odzw-»+nf(itr+1, 3)+".png";
PImage odwz=createImage(skan.width, skan.height, RGB);
skan.loadPixels();
odwz.loadPixels();
int currentPos;
fi=itr*katOperacji;
println(fi);

for(row=0; row<skan.height; row++){ //starting row analysis
maxBrightPos=0;
maxBright=0;
for(col=0; col<skan.width; col++){
currentPos = row * skan.width + col;
pixBright=brightness(skan.pixels[currentPos]);
if(pixBright>maxBright){
maxBright=pixBright;
maxBrightPos=currentPos;
}
odwz.pixels[currentPos]=black; //setting all pixels black
}

odwz.pixels[maxBrightPos]=white; //setting brightest pixel white

b=((maxBrightPos+1-row*skan.width)-skan.width/2)/pxmmpoz;
ro=b/sin(katLaser);
//output.println(b + ", " + prevMaxBrightPos + ", " + maxBrightPos); //I used this for debugging

x=ro * cos(fi); //changing polar coords to kartesian
y=ro * sin(fi);
z=row/pxmmpion;

if( (ro>=-30) && (ro<=60) ){ //printing coordinates
output.println(x + "," + y + "," + z);
}

}//end of row analysis

odwz.updatePixels();
odwz.save(nazwaPliku2);

}
output.flush();
output.close();
}

void obroc() { //sending command to turn
myPort.write('S');
delay(50);
myPort.write('K');
}


image


image


image


image


image
MeshLab



ein anderes Projekt
Bild

Bild
hackaday.io/project/2021-3dollar-scanner

Und doch habe ich eine Frage an Experten: Was macht den grĂ¶ĂŸten Teil der Kosten des GerĂ€ts fĂŒr 8 Millionen Rubel aus?

PS
Idee.
Es besteht die Idee, ein Schulungsprojekt (fĂŒr SchĂŒler und SchĂŒler) mit Zugang zu Crowdsourcing durchzufĂŒhren. Sie können bei VDNH einen 3D-Scanner herausziehen und das „Worker and Collective Farm Girl“ scannen und dann viele SchlĂŒsselanhĂ€nger und Figuren an diejenigen drucken, die einen Beitrag geleistet haben. Und auch um ein Trainingsvideo zu filmen und auf Youtube zu stellen.
Studenten - Wissen, Unternehmen - PR, die 3D-Community - eine nĂŒtzliche Bewegung.
Wenn jemand Freunde aus der VDNH-Administration hat oder wer eine HebebĂŒhne hat, schreibe.

PPS
Die Verwendung von 3D-Scannern in Spielen



Source: https://habr.com/ru/post/de382939/


All Articles