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

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

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

Сообщение Nick »

Так тоже самое, только цикл подправить надо:

Код: Выделить всё

    (LOGOPEN,filename.txt)
    #<y_offset> = 20 
    #<x0> = 0 
    #<w> = 1 
    #<y0> = 0 
    #<h> = 1 

    #<stepx> = .1
    #<stepy> = .1

    #<y> = #<y0>
    #<x> = #<x0>
    O<scanx> WHILE [#<x> LT [#<x0> + #<w>]]
       G0 X#<x>
       #<y> = [#<y>+#<h>]
       G0 A#<y>
    O<scanx> ENDWHILE
    (LOGCLOSE)
    M02
gendos
Мастер
Сообщения: 1117
Зарегистрирован: 06 июл 2011, 15:26
Репутация: 81
Настоящее имя: Геннадий
Откуда: Ростов-на-дону
Контактная информация:

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

Сообщение gendos »

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

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

Сообщение gendos »

Пытаюсь конвертировать цилиндрические координаты в обычные с помощью скрипта

Код: Выделить всё

    #!/usr/bin/env python

    import sys
    from math import sin, cos, radians

    for l in sys.stdin:
       x,a,r = map(float, l.split())
       print x,r * cos(radians(a)), r * sin(radians(a))
используя подсказку Nickа
Сохраняешь скрипт в файл file.py. Чтобы выполнить питоновский код нужно либо написать python file.py, лиюо добваить файлу разрешение на исполнение chmod +x file.py. Т.к. этот скрипт берет данные из стандартного ввода stdin, то чтобы загнать в него файл делаем следующее:

cat file.coord | python file.py
cat - прочитать файл и вывести на стандартный вывод
| - pipe - перенаправляет стандартный вывод предыдущей команды на следующую команду.
А чтобы потом сразу в файл сохранить
cat file.coord | python file.py >> file.out

Можно мне обьяснить поподробней ,вот мой пример скана колодки( порядок координат X A R)
Вложения
filename.tar.gz
(5.82 МБ) 747 скачиваний
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

у меня вот такое выдала:
file.out.rar
(8.39 МБ) 372 скачивания
Последний раз редактировалось nkp 19 янв 2013, 22:13, всего редактировалось 1 раз.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

ложишь рабочий скрипт file.py и
свой файл с координатами (я его назвал file.txt)
в домашнюю папку:
Выделение(019).jpg (2331 просмотр) <a class='original' href='./download/file.php?id=10995&mode=view' target=_blank>Загрузить оригинал (32.12 КБ)</a>
nkp.rar
(4.69 МБ) 336 скачиваний
скрипт сделать исполняемым: ПКМ - свойства - права - поставить галку "разрешить исполнять файл как прогр"
далее в терминале пишешь:

Код: Выделить всё

cat /home/nkp/file.txt | python /home/nkp/file.py >> /home/nkp/file.out
только вместо nkp пропишешь правильный путь
но у меня обработка закончилась с ошибкой:

Код: Выделить всё

nkp@nkp-desktop:~$ cat /home/nkp/file.txt | python /home/nkp/file.py >> /home/nkp/file.out
Traceback (most recent call last):
  File "/home/nkp/file.py", line 7, in <module>
    x,a,r = map(float, l.split())
ValueError: need more than 2 values to unpack
пробуй...
gendos
Мастер
Сообщения: 1117
Зарегистрирован: 06 июл 2011, 15:26
Репутация: 81
Настоящее имя: Геннадий
Откуда: Ростов-на-дону
Контактная информация:

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

Сообщение gendos »

Спасибо буду пробывать
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

в архиве nkp.rar файл file.py
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

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

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

Сообщение gendos »

Скрипт запустился нормально .С этим все хорошо.
Но результат для меня не очень понятный.
Скан не соответствует реальной форме от сканированной колодки.Так как размер файла получается очень большим
(пока для пробы открывал облако точек компасом)компас ругался на нехватку памяти.Решил отсканировать 5мм колодки.Вот как выглядит конвертированный в X Y Z , а ниже приблизительный рисунок разреза колодки
В чем может быть причина такого не соответствия?
Вложения
скан.gif
скан.gif (3.3 КБ) 2317 просмотров
рисунок.gif
рисунок.gif (3.29 КБ) 2317 просмотров
gendos
Мастер
Сообщения: 1117
Зарегистрирован: 06 июл 2011, 15:26
Репутация: 81
Настоящее имя: Геннадий
Откуда: Ростов-на-дону
Контактная информация:

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

Сообщение gendos »

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

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

Сообщение Nick »

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

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

Сообщение gendos »

В файле моих сканов полный оборот 360 градусов .Если ты имееш ввиду файл Siluro.asc, то это пример колодки
с программы которую я буду использовать для открытия своих сканов и к чему мне нужно стремиться.(в примере порядок координат XYZ)
Последний раз редактировалось gendos 21 янв 2013, 20:16, всего редактировалось 1 раз.
gendos
Мастер
Сообщения: 1117
Зарегистрирован: 06 июл 2011, 15:26
Репутация: 81
Настоящее имя: Геннадий
Откуда: Ростов-на-дону
Контактная информация:

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

Сообщение gendos »

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

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

Сообщение Nick »

Прибавить в режиме sampler можно компонентом sum2.

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

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

Сообщение gendos »

Нет ,я визуально вижу что колодка делает один полный оборот ,а потом по Х переезжает на одну единицу
(если ты об этом).
Я сделал так
#<y_offset> = 53 (40 радиус ролика и 13 отступ от ноля )
Я рассуждаю так
Y в обычной системе координат=(r+40 ) *cos a
Z в обычной системе координат=(r+40)*sin a
Получается облако точек,потом 3d модель колодки в обычных координатах (с припуском 40мм)
Теперь мне нужно решить, как отрезать от 3d модели или от облака точек лишний припуск?
Таким способом отсканировал 20мм колодки уже больше похоже ,только как отрезать лишнее зная параметры ролика?
gendos
Мастер
Сообщения: 1117
Зарегистрирован: 06 июл 2011, 15:26
Репутация: 81
Настоящее имя: Геннадий
Откуда: Ростов-на-дону
Контактная информация:

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

Сообщение gendos »

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

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

Сообщение Nick »

Ну берем компонент sum2, на один из входов подаем нужный пин, на второй - поправку (40), а на sampler выводим sum2.out.
http://www.linuxcnc.org/docs/html/man/man9/sum2.9.html


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

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

Сообщение gendos »

Да забыл...
Я пока сканирую через
(LOGOPEN,filename.txt)
#<y_offset> = 53
#<x0> = 0
#<w> = 20
#<y0> = 0
#<h> = 360

#<stepx> = 1
#<stepy> = 1

#<y> = #<y0>
#<x> = #<x0>
O<scanx> WHILE [#<x> LT [#<x0> + #<w>]]
G0 X#<x>
#<i> = 0
O<scany> WHILE [#<i> LT [#<h>/#<stepy>]]
G0 Z#<y>
M66 E0 L0 (снимаем показания энкодера в параметр #5399)
Так как в режиме sampler очень большой файл получается ,я решил что вернусь к нему когда все отлажу и нужна будет скорость
gendos
Мастер
Сообщения: 1117
Зарегистрирован: 06 июл 2011, 15:26
Репутация: 81
Настоящее имя: Геннадий
Откуда: Ростов-на-дону
Контактная информация:

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

Сообщение gendos »

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

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

Сообщение gendos »

Вот что получилось с припуском 40мм(если убрать припуск думаю получилось правильно)
Вложения
колодка 20мм.igs.tar.gz
(56.69 КБ) 704 скачивания
Ответить

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