Страница 2 из 12
Re: Контактный сканер с помощью EMC2
Добавлено: 07 июл 2011, 11:36
psha
Медленно очень будет. Если это критично, то я бы смотрел в сторону sampler и halsampler
http://www.linuxcnc.org/docview/2.4/htm ... ler.9.html
http://www.linuxcnc.org/docview/2.4/htm ... ler.1.html
и скрипт, который этот поток данных переводит в "правильные" координаты
Тогда можно не останавливаться для записи и время/точность обработки просто варьировать скоростью
Re: Контактный сканер с помощью EMC2
Добавлено: 07 июл 2011, 11:55
Nick
Не совсем понял... Что будет медленно M66? Думаешь он будет тормозить после каждого G0 или G1 до нуля?
На сколько я понял, sampler будет сохранять значения каждый тик своего потока, т.е. или base thread или servo thread а это от 1000 до 15000 раз в секунду

. Может есть такая штука, которая будет запускать sampler по срабатыванию пина?
Re: Контактный сканер с помощью EMC2
Добавлено: 07 июл 2011, 12:01
psha
Да, думаю будет тормозить после каждой команды, но не факт на самом деле.
sampler будет делать столько измерений, сколько раз в секунду запускается его тред.
Надо сделать 100 - делаем под него новую нитку и addf sampler-thread sampler.0
Запуск самплера - sampler.0.enable = 1, остановка - 0
Можно еще написать питоновский модуль по типу halsampler и сделать всё виде приятного гуя с кнопкой

Re: Контактный сканер с помощью EMC2
Добавлено: 07 июл 2011, 12:22
Nick
psha писал(а):Запуск самплера - sampler.0.enable = 1, остановка - 0
Да, но как сделать чтобы самплер запускался только один раз...
Может можно загрузить три функции именно в таком порядке:
1. проверяем условие, если срабатывает, то sampler.0.enable
2. собственно сам sampler
3. sampler.0.enable = 0
О, это наверное можно как-то на ladder logic описать...
Re: Контактный сканер с помощью EMC2
Добавлено: 07 июл 2011, 12:31
gendos
Для меня это все пока очень сложно,но буду потихоньку разбираться с emc2 и для начала нужно сделать макет.
Re: Контактный сканер с помощью EMC2
Добавлено: 07 июл 2011, 12:35
psha
Запускаем самплер, отключаем его (enable = 0).
Перед сканированием смотрим что у нас в файле, запоминаем номер, включаем (enable=1)
В конце - выключаем (enable=0), смотрим номер.
Всё что между - данные сканирования.
Никакого ladder не нужно
upd
Собственно основной бонус такой системы перед сканированием через гкод в том, что команды на движение проще изготовить.
Например, можно просто вручную досканировать какое-нибудь место неприятное
Re: Контактный сканер с помощью EMC2
Добавлено: 07 июл 2011, 12:41
Nick
Я думаю ему будет интереснее ровная сетка сканирования, т.е. нужны данные sampler только для определенных координат.
Т.е. чтобы не перелопачивать уйму данных sampler нужно запускать только на один тик.
Gendos, пока сильно не вникай. Мы беседуем о высоких материях оптимизации. Для начала хватит M66, это возможно будет немного медленнее, зато проще освоить. Вечером напишу тебе готовый Gкод. будешь просто открывать программу запускать Gкод и получать на выходе файл.
Re: Контактный сканер с помощью EMC2
Добавлено: 07 июл 2011, 12:50
psha
Не уверен что нужно только для определенных координат.
Как раз идея с самплером и состоит в том, что бы получить _большое_ количество данных вдоль пути сканирования.
Это даст возможность регулировать скорость обработки детали - больше скорость, меньше точность и наоборот.
Никаких проблем в перелопачивании кучи данных не вижу честно говоря. Их всегда можно выкинуть потом.
upd
Более того, это довольно просто делается и без дописывания новых вещей.
Перед enable=1 запускаем halsampler с новым именем файла, после enable=0 - останавливаем.
Получаем результаты сканирования записанные в отдельный файл, без мусора.
Re: Контактный сканер с помощью EMC2
Добавлено: 07 июл 2011, 12:55
Nick
Если потом использовать только для прямого создания Gкода, то все хорошо, но если надо сделать 3d модель и ее редактировать, то нужна ровная сетка.
Re: Контактный сканер с помощью EMC2
Добавлено: 07 июл 2011, 12:58
psha
Не соглашусь.
Что ты называешь "ровной" сеткой?
Оставь код движения как есть, убери только из него логи. Получишь практически эквивалентный результат.
Каждое сечение будет разбито на одинаковое число точек - время полного оборота * тиков самплера.
Re: Контактный сканер с помощью EMC2
Добавлено: 07 июл 2011, 13:13
psha
Собственно вопрос автору темы:
Какова требуемая точность? Размер детали? И что планируется делать с результатом

Время работы (<10минут) вроде уже было оглашено.
Re: Контактный сканер с помощью EMC2
Добавлено: 07 июл 2011, 13:39
gendos
точность 0.5 мм
размер детали - 42 размер обуви
текстовый файл вида
0000 0000 0000
0000 0000 0000
0000 0000 0000
открывается специализированной обувной программой получается 3d модель которую можно редактировать в ней и сохранять в разных
3d форматах
время сканирования взято очень приблизительно
шаг сканирования 0,5-1мм
Re: Контактный сканер с помощью EMC2
Добавлено: 07 июл 2011, 14:35
psha
То есть при условной форме ботинка - цилиндр размером 300х100мм нам нужно получить
300-600 сканов по длине и в каждом из них ~600 точек (на оборот).
Можно попробовать посадить sampler в servo-thread, это даст 1000 точек в секунду.
Надо только проверить что точность удовлетворительная получается.
upd
Обсчитался, не 600 а 300 на оборот
Re: Контактный сканер с помощью EMC2
Добавлено: 07 июл 2011, 15:27
Nick
psha писал(а):Каждое сечение будет разбито на одинаковое число точек - время полного оборота * тиков самплера.
Плохо то, что либо траектория будет спиральной, либо будут дополнительные точки во время перехода от среза к срезу...
gendos писал(а):открывается специализированной обувной программой получается 3d модель которую можно редактировать в ней и сохранять в разных
А у нее есть спец требования к этим колонкам? Если будет просто 10000 разных точек она тоже их схавает, или нужна определенная сетка?
Под сеткой я понимаю прямоугольную сетку, т.е. мы как бы покрываем модель четырех угольниками, из них очень просто составить 3д модель. А вот из спирали - сложнее.
Re: Контактный сканер с помощью EMC2
Добавлено: 07 июл 2011, 15:33
gendos
Nick писал(а):Если потом использовать только для прямого создания Gкода, то все хорошо, но если надо сделать 3d модель и ее редактировать, то нужна ровная сетка.
мне кажется ровная сетка не нужна,программа по моделированию колодки сама построит
3d модель по облаку точек и наложит на нее нужную сетку
важно чтобы координаты данных были не угловые, а не знаю как их назвать --- допустим X Y Z
Re: Контактный сканер с помощью EMC2
Добавлено: 07 июл 2011, 15:42
psha
Как ты покроешь модель ровными четырехугольниками? Только если у тебя модель - куб или цилинидр какой.
Иначе не будет никакой ровной сетки.
Собственно надо скорее всего делать спиральное сканирование, с фиксированным шагом на оборот.
Преобразование полярных координат в обычные делается очень просто.
Пусть у нас ось вдоль ботинка - X, угол A и показания екодера E.
В файле halsampler'а у нас окажутся точки X, A, E
Конвертим их (скриптом после сканирования) в X, E * cos(A), E * sin(A) и получаем то что нужно (с точностью до поворота).
upd
Есличо, из спирали с фиксированным шагом построить triangle mesh должно быть очень просто - достаточно для
каждой точки найти соседние вершины - а это ищется за константное время (максимум - линейное по числу шагов на оборот)
Re: Контактный сканер с помощью EMC2
Добавлено: 07 июл 2011, 15:43
gendos
Nick писал(а):psha писал(а):Каждое сечение будет разбито на одинаковое число точек - время полного оборота * тиков самплера.
Плохо то, что либо траектория будет спиральной, либо будут дополнительные точки во время перехода от среза к срезу...
gendos писал(а):открывается специализированной обувной программой получается 3d модель которую можно редактировать в ней и сохранять в разных
А у нее есть спец требования к этим колонкам? Если будет просто 10000 разных точек она тоже их схавает, или нужна определенная сетка?
Под сеткой я понимаю прямоугольную сетку, т.е. мы как бы покрываем модель четырех угольниками, из них очень просто составить 3д модель. А вот из спирали - сложнее.
модельная программа может импортировать разные форматы, один из которых(забыл его расширение)
если его открыть в текстовом редакторе выглядит как три колонки цифр через пробел первая X вторая у трерья z
расширение чтото типа .asc
Re: Контактный сканер с помощью EMC2
Добавлено: 07 июл 2011, 16:09
Nick
psha писал(а):Есличо, из спирали с фиксированным шагом построить triangle mesh должно быть очень просто - достаточно длякаждой точки найти соседние вершины - а это ищется за константное время (максимум - линейное по числу шагов на оборот)
Из прямоугольной сетки еще проще. Ты видел как в стандартных 3д редакторах рисуется стандартная сфера? В такой оцифровке есть ооочень большой плюс - у модели появляется два нативных параметра u и v - координаты на поверхности. И по такой модели проще построить NURMS поверхность. В общем маленькие нюансы

.
Если программа умеет создавать модель просто из облака точек, тогда действительно описанный psha алгоритм будет работать и очень хорошо.
Re: Контактный сканер с помощью EMC2
Добавлено: 07 июл 2011, 16:18
gendos
вот смог найти только маленький кусок файла созданного и открываемого этой программой
( пример начала файла)-
[000000]
NEWLAST GROUP developed and supported by INESCOP
DEPARTAMENTO CAD/CAM.
EASYLAST3D·
25/02/11 19:45:04
C:\Easylast3D 2.5\колодки\New.asc
[999999]
[003110] Last surface
0.000 0.017 34.226
0.000 0.019 34.226
0.000 0.020 34.226
0.000 0.022 34.226
0.000 0.024 34.226
0.000 0.026 34.227
0.000 0.027 34.227
0.000 0.029 34.227
0.000 0.031 34.228
Re: Контактный сканер с помощью EMC2
Добавлено: 07 июл 2011, 16:32
psha
Я понимаю что для некоторых задач очень хочется иметь четырехугольную сетку на поверхности.
Идея в том, что не стоит сам процесс сканирования подгонять под такое требование.
Если есть возможность быстро и точно построить множество точек поверхности, то потом
завсегда это можно перевести в любой понравившийся формат. А сканирование лучше делать так,
как удобно.