مليار نقطة: 3 دولارات مقابل 8 ملايين روبل

هذا ما تبدو عليه العين الواضحة في الحياة الواقعية


، بالمناسبة ، الماسح الضوئي أغلى من السيارة. تسلا س. مع توصيل الهواء إلى المدخل في موسكو

، سيصف هذا المنشور أغلى (على الأرجح) في العالم وأرخص ماسح ثلاثي الأبعاد في العالم.


لم يتم تفكيمي (منشار) الجهاز بسعر سيارة صغيرة ، لذلك نظرت إلى التعليمات. زوجان من الصور من الداخل.
عندما سُئل عما إذا كان الماسح الضوئي ثلاثي الأبعاد يمكنه التقاط صورة ذاتية (إذا وضعت مرآة أمامه) ، أجابوني أن هذه الأجهزة بها مشاكل في الأسطح العاكسة. لذا أخذت الجمجمة من رف قريب وحاولت مسحها.



يتم إنشاء هذه الأشياء الجميلة باستخدام الماسح الضوئي.


ماسح ضوئي ثلاثي الأبعاد Surphaser 25HSX


الماسح الضوئي ثلاثي الأبعاد Surphaser 25HSX عبارة عن ماسح ليزر ثلاثي الأبعاد مع نظام انحراف شعاعي كروي ، مصمم لتكوين نماذج ثلاثية الأبعاد للكائنات الحقيقية لاستخدامها لاحقًا في مختلف المجالات:

- عمل رسومات للأجزاء المصممة وفقًا للنماذج الأولية ؛
- إنشاء نسخ احتياطية من المعروضات والمتاحف الداخلية ؛
- تطوير ألعاب الكمبيوتر والرسوم المتحركة الإعلانية ؛

يعتمد الماسح الضوئي على استخدام "رأس المسح" (الماسح الضوئي للأجهزة) وكمبيوتر التحكم الذي يتم تثبيت "برنامج" الماسح الضوئي عليه ، والذي يبدأ الكمبيوتر من خلاله عملية المسح ، ويتلقى دفق بيانات القياس من رأس المسح ، ويعالجها بعد المسح هذه البيانات ، وترجمتها إلى شكل سحابة نقطة للكائن.



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.



أجزاء من رأس المسح لماسحة ثلاثية الأبعاد كروية
فك التشفير
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 ) ( ). , –
.




وحدة مسح ضوئي لماسح كروي ثلاثي الأبعاد مع نظام انحراف مع دوران فقط حول المحور الأفقي ، معدة للنقل.


التصميم البصري لوحدة المسح الضوئي
وصف السلعة


:

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 –



تم تصميم حزمة دارة وحدة الليزر BL للتحكم في الصمام الثنائي ليزر أشباه الموصلات HL6750MG. في وضع التشغيل ، توفر


اللوحة تشكيل إشعاع ضوئي مستمر بمتوسط ​​ثابت للقدرة البصرية وتعديل السعة.لوحة BP لوحدة الكاشف الضوئي مصممة لاستقبال إشعاع الليزر المعدل بشدة باستخدام الصمام الثنائي الضوئي. في وضع التشغيل ، توفر اللوحة اختيار إشارة تعديل الضوء وتضخيمها.


تم تصميم لوحة BR لوحدة هندسة الراديو ، وهي جزء من وحدة الماسحة الضوئية للماسح الضوئي ثلاثي الأبعاد ، لتوليد إشارة مجمعة تعدل شدة شعاع الضوء ، وتحول (يترجم إلى تردد منخفض من 1 ميجاهرتز ويضخم) إشارة RF المنعكسة المستلمة وإشارة RF المرجعية ، وتستخرج وتضخم التردد المنخفض المنعكس إشارة


تم تصميم لوحة BS ، وهي جزء من وحدة الماسحة الضوئية للماسح الضوئي ثلاثي الأبعاد ، لتوليد إشارة حول وجود شعاع عند خرج وحدة الليزر. يتم استخدام الإشعاع المتناثر فقط لتوليد الإشارة. في وضع التشغيل ، يتجاوز جهد الخرج 0.1 فولت مع قوة شعاع أكثر من 3 ميجاوات.

يتم المسح



هذه هي الطريقة التي يرى الماسح الضوئي ثلاثي الأبعاد الغرفة في الوضع الأولي (يمكنك تحديد المنطقة المطلوبة التي سيبحثها الماسح الضوئي)


العالم من خلال عيون الماسح الضوئي ثلاثي الأبعاد. من يستطيع أن يصنع شخصًا؟


نفس الغرفة في محرر 3D


هذه هي الطريقة التي يرى بها الشخص العادي الجمجمة


لا توجد حاجة إلى الغرفة بأكملها هذه المرة ، لذلك نختار فقط تلك المنطقة التي توجد فيها الجمجمة في وضع التصوير. ثم ، لمدة حوالي 5-10 دقائق ، يلتوي الماسح الضوئي بعينه ، بحثًا عن الهوبيت . الشيء الرئيسي هو عدم الوقوف في طريقه ، وإلا فإنه سيحرق عيبًا. لا يلتقط الماسح الجمجمة فحسب ، بل يلتقط أيضًا المناطق التي تقع خلفه. يتم تحرير هذا بسهولة في المحرر.


مر رجل ، سقط في منطقة شعاع الليزر. ترى الشريط؟ لا تعترض طريق الضوء المتماسك. كل شيء على ما يرام مع الشخص ، ولكن في المسح انعكس على أنه "بكسل مكسور"

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



مشروع آخر
صورة

صورة
hackaday.io/project/2021-3dollar-scanner

ومع ذلك لدي سؤال للخبراء: ما الذي يشكل معظم تكلفة الجهاز مقابل 8 ملايين روبل؟ فكرة

PS
.
هناك فكرة لجعل مشروع تدريب (لأطفال المدارس والطلاب) مع الوصول إلى التعهيد الجماعي. يمكنك سحب ماسح ضوئي ثلاثي الأبعاد في VDNH ومسح "العاملة وعامل المزرعة الجماعية" ، ثم طباعة العديد من سلاسل المفاتيح والتماثيل لمن ساهم. وكذلك لتصوير فيديو تدريبي ووضعه على اليوتيوب.
الطلاب - المعرفة ، الشركات - العلاقات العامة ، المجتمع ثلاثي الأبعاد - حركة مفيدة.
إذا كان لدى أي شخص أصدقاء من إدارة VDNH أو من لديه منصة رفع ، اكتب.

PPS
استخدام الماسحات الضوئية ثلاثية الأبعاد في الألعاب



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


All Articles