Контактный сканер с помощью EMC2

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
psha
Опытный
Сообщения: 147
Зарегистрирован: 28 фев 2011, 11:11
Репутация: 1
Контактная информация:

Re: Контактный сканер с помощью EMC2

Сообщение 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
и скрипт, который этот поток данных переводит в "правильные" координаты
Тогда можно не останавливаться для записи и время/точность обработки просто варьировать скоростью
root, доделай конвертацию! :)
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Контактный сканер с помощью EMC2

Сообщение Nick »

Не совсем понял... Что будет медленно M66? Думаешь он будет тормозить после каждого G0 или G1 до нуля?

На сколько я понял, sampler будет сохранять значения каждый тик своего потока, т.е. или base thread или servo thread а это от 1000 до 15000 раз в секунду :think:. Может есть такая штука, которая будет запускать sampler по срабатыванию пина?
psha
Опытный
Сообщения: 147
Зарегистрирован: 28 фев 2011, 11:11
Репутация: 1
Контактная информация:

Re: Контактный сканер с помощью EMC2

Сообщение psha »

Да, думаю будет тормозить после каждой команды, но не факт на самом деле.
sampler будет делать столько измерений, сколько раз в секунду запускается его тред.
Надо сделать 100 - делаем под него новую нитку и addf sampler-thread sampler.0
Запуск самплера - sampler.0.enable = 1, остановка - 0
Можно еще написать питоновский модуль по типу halsampler и сделать всё виде приятного гуя с кнопкой :)
root, доделай конвертацию! :)
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Контактный сканер с помощью EMC2

Сообщение Nick »

psha писал(а):Запуск самплера - sampler.0.enable = 1, остановка - 0
Да, но как сделать чтобы самплер запускался только один раз...

Может можно загрузить три функции именно в таком порядке:
1. проверяем условие, если срабатывает, то sampler.0.enable
2. собственно сам sampler
3. sampler.0.enable = 0

О, это наверное можно как-то на ladder logic описать...
gendos
Мастер
Сообщения: 1117
Зарегистрирован: 06 июл 2011, 15:26
Репутация: 81
Настоящее имя: Геннадий
Откуда: Ростов-на-дону
Контактная информация:

Re: Контактный сканер с помощью EMC2

Сообщение gendos »

Для меня это все пока очень сложно,но буду потихоньку разбираться с emc2 и для начала нужно сделать макет.
psha
Опытный
Сообщения: 147
Зарегистрирован: 28 фев 2011, 11:11
Репутация: 1
Контактная информация:

Re: Контактный сканер с помощью EMC2

Сообщение psha »

Запускаем самплер, отключаем его (enable = 0).
Перед сканированием смотрим что у нас в файле, запоминаем номер, включаем (enable=1)
В конце - выключаем (enable=0), смотрим номер.
Всё что между - данные сканирования.
Никакого ladder не нужно

upd
Собственно основной бонус такой системы перед сканированием через гкод в том, что команды на движение проще изготовить.
Например, можно просто вручную досканировать какое-нибудь место неприятное
root, доделай конвертацию! :)
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Контактный сканер с помощью EMC2

Сообщение Nick »

Я думаю ему будет интереснее ровная сетка сканирования, т.е. нужны данные sampler только для определенных координат.
Т.е. чтобы не перелопачивать уйму данных sampler нужно запускать только на один тик.

Gendos, пока сильно не вникай. Мы беседуем о высоких материях оптимизации. Для начала хватит M66, это возможно будет немного медленнее, зато проще освоить. Вечером напишу тебе готовый Gкод. будешь просто открывать программу запускать Gкод и получать на выходе файл.
psha
Опытный
Сообщения: 147
Зарегистрирован: 28 фев 2011, 11:11
Репутация: 1
Контактная информация:

Re: Контактный сканер с помощью EMC2

Сообщение psha »

Не уверен что нужно только для определенных координат.
Как раз идея с самплером и состоит в том, что бы получить _большое_ количество данных вдоль пути сканирования.
Это даст возможность регулировать скорость обработки детали - больше скорость, меньше точность и наоборот.
Никаких проблем в перелопачивании кучи данных не вижу честно говоря. Их всегда можно выкинуть потом.

upd
Более того, это довольно просто делается и без дописывания новых вещей.
Перед enable=1 запускаем halsampler с новым именем файла, после enable=0 - останавливаем.
Получаем результаты сканирования записанные в отдельный файл, без мусора.
root, доделай конвертацию! :)
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Контактный сканер с помощью EMC2

Сообщение Nick »

Если потом использовать только для прямого создания Gкода, то все хорошо, но если надо сделать 3d модель и ее редактировать, то нужна ровная сетка.
psha
Опытный
Сообщения: 147
Зарегистрирован: 28 фев 2011, 11:11
Репутация: 1
Контактная информация:

Re: Контактный сканер с помощью EMC2

Сообщение psha »

Не соглашусь.
Что ты называешь "ровной" сеткой?
Оставь код движения как есть, убери только из него логи. Получишь практически эквивалентный результат.
Каждое сечение будет разбито на одинаковое число точек - время полного оборота * тиков самплера.
root, доделай конвертацию! :)
psha
Опытный
Сообщения: 147
Зарегистрирован: 28 фев 2011, 11:11
Репутация: 1
Контактная информация:

Re: Контактный сканер с помощью EMC2

Сообщение psha »

Собственно вопрос автору темы:
Какова требуемая точность? Размер детали? И что планируется делать с результатом :)
Время работы (<10минут) вроде уже было оглашено.
root, доделай конвертацию! :)
gendos
Мастер
Сообщения: 1117
Зарегистрирован: 06 июл 2011, 15:26
Репутация: 81
Настоящее имя: Геннадий
Откуда: Ростов-на-дону
Контактная информация:

Re: Контактный сканер с помощью EMC2

Сообщение gendos »

точность 0.5 мм
размер детали - 42 размер обуви
текстовый файл вида
0000 0000 0000
0000 0000 0000
0000 0000 0000
открывается специализированной обувной программой получается 3d модель которую можно редактировать в ней и сохранять в разных
3d форматах
время сканирования взято очень приблизительно
шаг сканирования 0,5-1мм
psha
Опытный
Сообщения: 147
Зарегистрирован: 28 фев 2011, 11:11
Репутация: 1
Контактная информация:

Re: Контактный сканер с помощью EMC2

Сообщение psha »

То есть при условной форме ботинка - цилиндр размером 300х100мм нам нужно получить
300-600 сканов по длине и в каждом из них ~600 точек (на оборот).
Можно попробовать посадить sampler в servo-thread, это даст 1000 точек в секунду.
Надо только проверить что точность удовлетворительная получается.

upd
Обсчитался, не 600 а 300 на оборот
root, доделай конвертацию! :)
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Контактный сканер с помощью EMC2

Сообщение Nick »

psha писал(а):Каждое сечение будет разбито на одинаковое число точек - время полного оборота * тиков самплера.
Плохо то, что либо траектория будет спиральной, либо будут дополнительные точки во время перехода от среза к срезу...
gendos писал(а):открывается специализированной обувной программой получается 3d модель которую можно редактировать в ней и сохранять в разных
А у нее есть спец требования к этим колонкам? Если будет просто 10000 разных точек она тоже их схавает, или нужна определенная сетка?


Под сеткой я понимаю прямоугольную сетку, т.е. мы как бы покрываем модель четырех угольниками, из них очень просто составить 3д модель. А вот из спирали - сложнее.
gendos
Мастер
Сообщения: 1117
Зарегистрирован: 06 июл 2011, 15:26
Репутация: 81
Настоящее имя: Геннадий
Откуда: Ростов-на-дону
Контактная информация:

Re: Контактный сканер с помощью EMC2

Сообщение gendos »

Nick писал(а):Если потом использовать только для прямого создания Gкода, то все хорошо, но если надо сделать 3d модель и ее редактировать, то нужна ровная сетка.
мне кажется ровная сетка не нужна,программа по моделированию колодки сама построит
3d модель по облаку точек и наложит на нее нужную сетку
важно чтобы координаты данных были не угловые, а не знаю как их назвать --- допустим X Y Z
psha
Опытный
Сообщения: 147
Зарегистрирован: 28 фев 2011, 11:11
Репутация: 1
Контактная информация:

Re: Контактный сканер с помощью EMC2

Сообщение psha »

Как ты покроешь модель ровными четырехугольниками? Только если у тебя модель - куб или цилинидр какой.
Иначе не будет никакой ровной сетки.
Собственно надо скорее всего делать спиральное сканирование, с фиксированным шагом на оборот.
Преобразование полярных координат в обычные делается очень просто.
Пусть у нас ось вдоль ботинка - X, угол A и показания екодера E.
В файле halsampler'а у нас окажутся точки X, A, E
Конвертим их (скриптом после сканирования) в X, E * cos(A), E * sin(A) и получаем то что нужно (с точностью до поворота).

upd
Есличо, из спирали с фиксированным шагом построить triangle mesh должно быть очень просто - достаточно для
каждой точки найти соседние вершины - а это ищется за константное время (максимум - линейное по числу шагов на оборот)
Последний раз редактировалось psha 07 июл 2011, 15:44, всего редактировалось 1 раз.
root, доделай конвертацию! :)
gendos
Мастер
Сообщения: 1117
Зарегистрирован: 06 июл 2011, 15:26
Репутация: 81
Настоящее имя: Геннадий
Откуда: Ростов-на-дону
Контактная информация:

Re: Контактный сканер с помощью EMC2

Сообщение gendos »

Nick писал(а):
psha писал(а):Каждое сечение будет разбито на одинаковое число точек - время полного оборота * тиков самплера.
Плохо то, что либо траектория будет спиральной, либо будут дополнительные точки во время перехода от среза к срезу...
gendos писал(а):открывается специализированной обувной программой получается 3d модель которую можно редактировать в ней и сохранять в разных
А у нее есть спец требования к этим колонкам? Если будет просто 10000 разных точек она тоже их схавает, или нужна определенная сетка?


Под сеткой я понимаю прямоугольную сетку, т.е. мы как бы покрываем модель четырех угольниками, из них очень просто составить 3д модель. А вот из спирали - сложнее.

модельная программа может импортировать разные форматы, один из которых(забыл его расширение)
если его открыть в текстовом редакторе выглядит как три колонки цифр через пробел первая X вторая у трерья z
расширение чтото типа .asc
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Контактный сканер с помощью EMC2

Сообщение Nick »

psha писал(а):Есличо, из спирали с фиксированным шагом построить triangle mesh должно быть очень просто - достаточно длякаждой точки найти соседние вершины - а это ищется за константное время (максимум - линейное по числу шагов на оборот)
Из прямоугольной сетки еще проще. Ты видел как в стандартных 3д редакторах рисуется стандартная сфера? В такой оцифровке есть ооочень большой плюс - у модели появляется два нативных параметра u и v - координаты на поверхности. И по такой модели проще построить NURMS поверхность. В общем маленькие нюансы :).

Если программа умеет создавать модель просто из облака точек, тогда действительно описанный psha алгоритм будет работать и очень хорошо.
gendos
Мастер
Сообщения: 1117
Зарегистрирован: 06 июл 2011, 15:26
Репутация: 81
Настоящее имя: Геннадий
Откуда: Ростов-на-дону
Контактная информация:

Re: Контактный сканер с помощью EMC2

Сообщение 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
psha
Опытный
Сообщения: 147
Зарегистрирован: 28 фев 2011, 11:11
Репутация: 1
Контактная информация:

Re: Контактный сканер с помощью EMC2

Сообщение psha »

Я понимаю что для некоторых задач очень хочется иметь четырехугольную сетку на поверхности.
Идея в том, что не стоит сам процесс сканирования подгонять под такое требование.
Если есть возможность быстро и точно построить множество точек поверхности, то потом
завсегда это можно перевести в любой понравившийся формат. А сканирование лучше делать так,
как удобно.
root, доделай конвертацию! :)
Ответить

Вернуться в «LinuxCNC»