Миллиард точек: 3 доллара против 8 миллионов рублей

    Вот как в реале выглядит всевидящее око


    Кстати, сканер дороже автомобиля. Tesla S. С авиадоставкой до подъезда в Москве

    В этом посте будет описание самого дорогого (наверное) в мире и самого дешевого в мире 3d-сканера.


    Разобрать (распилить) устройство по цене тесламобиля мне не дали, поэтому я заглянул в инструкцию. Пара фоток внутренностей оттуда.
    На вопрос, а может ли 3d-сканер сделать селфи (если перед ним поставить зеркало), мне ответили, что у этих приборов нелады с отражающими поверхностями. Поэтому я взял череп с соседней полки и попробовал его отсканировать.



    Вот такие красивые штуки создаются при помощи сканера


    3D сканер Surphaser 25HSX


    3D сканер Surphaser 25HSX является трехмерным лазерным сканером со сферической системой отклонения луча, предназначенным для формирования 3-х мерных моделей реальных объектов для последующего использования в различных областях:

    — изготовление чертежей проектируемых деталей по прототипам;
    — создание резервных копий музейных экспонатов и интерьеров;
    — разработка компьютерных игр и рекламной мультипликации;

    Работа сканера основана на использовании «Сканирующей головки» (hardware сканера) и управляющего компьютера, на котором установлено «Программное обеспечение» (software сканера), с помощью которого компьютер запускает процесс сканирования, принимает поток данных измерений из сканирующей головки, а после окончания сканирования обрабатывает эти данные, переводя их в форму облака точек объекта.



    ТТХ
    Сканирующая головка является входным устройством 3d сканера, которое является, по сути, электронным прибором для измерения геометрических величин.

    При этом головка позволяет обеспечивать 3d сканеру Surphaser 25HSX следующие параметры:

    • Дальность до измеряемого объекта – 1.5 – 60 м;
    • Зона обзора сканирующей головки со сферической системой отклонения — большая часть поверхности сферы с угловыми размерами 240х180 град;
    • Дискретность измерений – 200 000 -1 000 000 точек в секунду;
    • Плотность распределения точек отсчета дальности -17-100 точек на градус
    • Время сканирования всей зоны обзора ~ 2 минуты (при плотности 17 точек на градус и дискретности 200 000 точек в секунду);
    • Точность измерения продольная – 1 мм и менее; поперечная 20-60 угловых секунд.
    • Сканирующая головка питается от источника постоянного тока 18-22 В, обеспечивающим ток до 3,3 А.


    Одновременно сканирующая головка является устройством ввода-вывода. При этом головка обеспечивает передачу данных в цифровом виде со скоростью до 200 Мбайт/с.

    Интерфейс связи с управляющим компьютером: USB-2.



    Составные части Сканирующей головки для 3D сканера сферического типа
    расшифровка
    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 МГц) производится отсчет времени распространения света до текущей точки объекта (точнее фазовых сдвигов у отраженного луча на частотах модуляции интенсивности света). Данные фазовых измерений, а также данные о текущих значениях углов поворота передаются во внешнее устройство – управляющий компьютер для накопления этих данных и
    последующего расчета по ним геометрии отражающей поверхности объекта.




    Модуль оптической развёртки для сферического 3d сканера с системой отклонения с вращением только вокруг горизонтальной оси, подготовленный для транспортировки.


    Оптическая схема Модуля оптической развертки
    описание по элементам


    Обозначения на схеме:
    Оптические элементы из стекла
    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 Радиотехнического модуля, являющегося частью модуля оптической развертки 3D сканера, предназначена для формирования комбинированного сигнала, модулирующего по интенсивности световой луч, преобразование (перевод на низкую частоту 1 МГц и усиление) принятого отраженного ВЧ сигнала и опорного ВЧ сигнала, выделение и усиление отраженного НЧ сигнала


    Плата BS, являющаяся частью модуля оптической развертки 3D сканера, предназначена для формирования сигнала о наличии луча на выходе лазерного модуля. Для формирования сигнала используется только рассеянное излучение. В рабочем режиме выходное напряжение превышает 0,1 В при мощности луча более 3 мВт.

    Сканирование



    Вот так видит комнату 3д-сканер в предварительном режиме (можно выбрать нужную область, которую сканер будет зондировать)


    Мир глазами 3д-сканера. Кто может разглядеть человека?


    Та же комната в 3д-редакторе


    Вот так видит череп обычный человек


    Вся комната на этот раз не нужна, поэтому мы выбираем только тот участок с черепом в режиме предсканирования. Затем минут 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



    еще один проект
    image

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

    И все же у меня вопрос к знатокам: что составляет большую часть стоимости устройства за 8 миллионов рублей?

    P.S.
    Идея.
    Есть задумка сделать обучающий проект (для школьников и студентов) с выходом на краудсорсинг. Можно вытащить 3d-сканер на ВДНХ и отсканировать «Рабочего и колхозницу», а потом напечатать много брелков и статуэток тем, кто сделал взнос. А еще фильм-обучалку снять и на youtube выложить.
    Студентам — знания, компаниям — пиар, 3d-сообществу — полезная движуха.
    Если есть ли у кого знакомые из администрации ВДНХ или может у кого есть подъемная платформа, пишите.

    P.P.S.
    Применение 3d-сканеров в играх



    Similar posts

    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 34

      +2
      Устройства бывают разными по стоимости. В цену входит: редкие компоненты, которые изготавливаются под заказ, сложность технологии, уникальность технологии, уникальность оборудования, гарантия производителя (производитель несёт ответственность за своё оборудование), а так же стоимость разработки. И если это штучное оборудование, то стоимость разработки делиться между этими штуками.
      Вот например так сказать «kinect» для медицины — система навигации по головному мозгу человека. Стоит всего в два раза дешевле (это без роботизированного кресла — его стоимость я слабо представляю).
        0
        Моторы, линзы и диод…
        Вот интересует, что именно такое редкое, уникальное и сделанное на заказ.
          +5
          «Ресёрч» — раз. Программное обеспечение — два.
            +1
            понятно, а само железо тыщ 300 стоит
              0
              Типа того. Что в общем тоже не копейки (всё ещё можно купить машину, пусть б/у и не тесла).
                0
                За 300 тыщ можно три Теслы купить.
                0
                По нынешнему курсу — не меньше миллиона. Это не считая сборки и наладки.
              +10
              Точность на больших расстояниях. 200 микрон на расстоянии 10 метров за 5 микросекунд всё ещё никто больше не даёт.
              На заказ делаются платы, металлическая основа (на неё очень жёсткие требования как по прочности, так и по реакции на изменение температуры — изгиб на 4 угловых секунды, а это 2 микрона на базе 10 см, для нас неприемлем). Ну, и сам пластиковый корпус.
              Дорогой деталью является панорамная развёртка — она должна выдержать 10 кг сканера, при этом ось не может отклоняться больше, чем на те же 4 угл.сек. И при этом поддерживать равномерное вращение на скорости до 0.01 RPM (1 оборот за 1.5 часа).
              +1
              В цену входит:
              Не в цену, а в себестоимость. Цена определяется исключительно тем, сколько готов платить за продукт клиент.
              +1
              Если я не ошибаюсь, известный тут Mrrl чем-то подобным занимается?
                +12
                «Чем-то подобным» — мягко сказано, последние 16 лет занимаюсь именно этим сканером :)
                +6
                Оцифруйте 3х долларовым сканером 10 метровую трубу и ответьте на вопрос сами
                  0
                  Появните принцип действия сканера за 8 мегарублей. Он стоит в одной точке, проходит каждый пеленг и улог места и измеряет расстояния в них до ближайшего препятствия? То есть, за предметами (например, правую сторону черепа) он ничего отсканировать не может? Если так, то для каких целей его используют?
                    0
                    Его же можно переставлять. То есть сняли картинку из одной точки, переставили, снова сняли. А потом в редакторе картинки совмещают.
                      0
                      Теоретически, я полагаю, сканер и/или софт могут совмещать «картинки» (исходные данные) на основе определения изначальных позиций. В автоматическом или полуавтоматическом режиме.
                      То есть, можно добиться того что сканер сам определит, с высокой точностью, где он стоял ранее и будет достраивать сцену сам.
                      Но это лишь моё мнение)
                        +2
                        Теоретически можно. Но автоматическая глобальная регистрация по 3D-облакам — совсем непростая задача, это намного хуже, чем сшивка панорамы из фотографий.
                        Пока совмещаем по специальным мишеням (сферы или квадраты, разделённые диагоналями на треугольники). Они ищутся довольно надёжно.
                        После того, как примерное взаимное положение известно, уточнить его несложно. Если, конечно, дело происходит не в ровном туннеле.
                      +1
                      Если так, то для каких целей его используют?

                      На фотографиях же показано — строят модели кораблей и мамонтов :) И многого из того, что между. Лишь бы оно не двигалось, не слишком блестело, и было не очень чёрным. Хотя кто-то сканирует нефтяные резервуары изнутри…
                      +4
                      Пожалуй, из лазерных сканеров дешевле будет только Faro Focus. Большинство наших конкурентов либо сравнимы по цене, либо заметно дороже, например 300K$ в мире сканеров — совсем не безумные деньги.
                        +5
                        Большая часть стоимости (почти половина) — пересылка, таможня, оплата посредникам… В Штатах он в 1.5-2 раза дешевле.
                          0
                          У Autodesk был проект облачного 3D-сканирование и построения модели, используя только вашу веб-камеру. Выходило весьма годно.Причем сразу строилась и модель, и проводилось текстурирование.
                            +2
                            Про селфи — вопрос интересный. Теоретически, если заклеить на зеркале точку, в которой отражается центр зеркала (т.е. при попадании в которую луч лазера отразится обратно), то проблем не будет — сканер послушно отсканирует отражённые объекты, в том числе и себя. Правда, он окажется слегка изогнутым: за то время, когда по нему проходит отражённый луч, он успеет повернуться, и в результате, сканируемые края будут дальше от зеркала, чем середина. Ну, и на месте зеркала сканера в модели будет дырка.
                              0
                              надо попробовать
                                0
                                А каким лучём (какая частотно-волновая характеристика луча лазера) он меряет? Надо же учитывать, чтобы стекло/другой материал для этого луча было прозрачным, а отражающая поверхность — отражающей (а не поглощающей)…
                                  0
                                  Сканер, который на фотографии (25-я модель) — красным лазером, 685 нм. Так что зеркало будет работать, как надо. Модели 105 и 10 будут на 1550 нм, для них, вроде бы, тоже всё в порядке. На ультрафиолетовый лазер пока переходить не планируем, он слишком агрессивный (и к фотоприёмнику, и к пользователям). Но и там такое тонкое стекло было бы достаточно прозрачным.
                                    0
                                    А насколько они безопасны для глаз? (При случайном попадании, а не постоянно в него смотреть конечно).
                                      0
                                      Те, которые выпускаются — безопасны. Класс 3R (не знаю точно, что это значит). Но я всё равно стараюсь при сканировании в упор не смотреть. Хотя иногда бывает, что лучик попадёт, тогда на скане видна точка где-то в глубине глаза (сетчатка?)
                                        0
                                        Вероятно, хрусталик.
                                          0
                                          Третий класс это достаточно злые лазеры. Осторожнее с ним. Возрастание класса — возрастание мощности. Первый класс — указка за 50 рублей, непишущий сидюк. DVD резак — насколько помню, второй. Блюрей-резаки — третий или даже четвёртый класс, а из них собирали турели против насекомых.
                                            0
                                            3R — те, которые безопасны, пока движутся. Их пятно проходит по зрачку довольно быстро, и вреда нанести не успевает. После чего зрачок сужается, и света в него попадает ещё меньше, даже, если луч снова проходит по тому же месту.
                                  0
                                    0
                                    миллион баксов на полочке стоит )
                                      +4
                                      Что характерно, большинство пришли на техобслуживание. Деньги давно получены, а работать всё равно надо.
                                    +12
                                    Поэтому я взял череп с соседней полки
                                    Аккуратно обходя свечи вокруг пентаграммы на полу.
                                      0
                                      Сканер Surphaser в главной роли видеосюжета на BBC: съёмка капсулы «Аполлон-11» изнутри. www.bbc.com/news/magazine-35077123

                                      Only users with full accounts can post comments. Log in, please.