Страница 8 из 12
Re: Контактный сканер с помощью EMC2
Добавлено: 19 янв 2013, 15:30
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
Re: Контактный сканер с помощью EMC2
Добавлено: 19 янв 2013, 16:02
gendos
При загрузке кода EMC зависает....
Заработал ,буду проверять
Re: Контактный сканер с помощью EMC2
Добавлено: 19 янв 2013, 21:43
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)
Re: Контактный сканер с помощью EMC2
Добавлено: 19 янв 2013, 22:03
nkp
Re: Контактный сканер с помощью EMC2
Добавлено: 19 янв 2013, 22:11
nkp
ложишь рабочий скрипт file.py и
свой файл с координатами (я его назвал file.txt)
в домашнюю папку:
скрипт сделать исполняемым: ПКМ - свойства - права - поставить галку "разрешить исполнять файл как прогр"
далее в терминале пишешь:
Код: Выделить всё
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
пробуй...
Re: Контактный сканер с помощью EMC2
Добавлено: 19 янв 2013, 22:17
gendos
Спасибо буду пробывать
Re: Контактный сканер с помощью EMC2
Добавлено: 19 янв 2013, 22:23
nkp
в архиве nkp.rar файл file.py
Re: Контактный сканер с помощью EMC2
Добавлено: 19 янв 2013, 23:08
nkp
ошибка была потому что в последней строке данных были только 2 координаты вместо 3-х
подправил и все отрабатывает без ошибки
Re: Контактный сканер с помощью EMC2
Добавлено: 20 янв 2013, 21:04
gendos
Скрипт запустился нормально .С этим все хорошо.
Но результат для меня не очень понятный.
Скан не соответствует реальной форме от сканированной колодки.Так как размер файла получается очень большим
(пока для пробы открывал облако точек компасом)компас ругался на нехватку памяти.Решил отсканировать 5мм колодки.Вот как выглядит конвертированный в X Y Z , а ниже приблизительный рисунок разреза колодки
В чем может быть причина такого не соответствия?
Re: Контактный сканер с помощью EMC2
Добавлено: 20 янв 2013, 21:11
gendos
Вот файл демонстрационной колодки сохраненной в специализированной программе,в итоге хотел бы получить со своего сканера похожий файл.
Re: Контактный сканер с помощью EMC2
Добавлено: 21 янв 2013, 09:32
Nick
А сколько у тебя полный оборот в координатах A?
В файле скана не видно чисел около 360...
Re: Контактный сканер с помощью EMC2
Добавлено: 21 янв 2013, 20:07
gendos
В файле моих сканов полный оборот 360 градусов .Если ты имееш ввиду файл Siluro.asc, то это пример колодки
с программы которую я буду использовать для открытия своих сканов и к чему мне нужно стремиться.(в примере порядок координат XYZ)
Re: Контактный сканер с помощью EMC2
Добавлено: 21 янв 2013, 20:14
gendos
Сейчас думаю,до преобразования цилиндрических координат сначала к показаниям энкодера прибавлю радиус ролика
40мм,потом преобразую с помощью скрипта в координаты XYZ. Должен получиться скан колодки с приуском 40мм,а потом нужно вычесть с координат по 40мм. Может так получится.
Re: Контактный сканер с помощью EMC2
Добавлено: 21 янв 2013, 23:12
Nick
Прибавить в режиме sampler можно компонентом sum2.
Так сколько единиц измерений по Y составляет полный оборот заготовки? Такое ощущение, что у тебя 180 единиц на оборот...
Re: Контактный сканер с помощью EMC2
Добавлено: 21 янв 2013, 23:39
gendos
Нет ,я визуально вижу что колодка делает один полный оборот ,а потом по Х переезжает на одну единицу
(если ты об этом).
Я сделал так
#<y_offset> = 53 (40 радиус ролика и 13 отступ от ноля )
Я рассуждаю так
Y в обычной системе координат=(r+40 ) *cos a
Z в обычной системе координат=(r+40)*sin a
Получается облако точек,потом 3d модель колодки в обычных координатах (с припуском 40мм)
Теперь мне нужно решить, как отрезать от 3d модели или от облака точек лишний припуск?
Таким способом отсканировал 20мм колодки уже больше похоже ,только как отрезать лишнее зная параметры ролика?
Re: Контактный сканер с помощью EMC2
Добавлено: 21 янв 2013, 23:42
gendos
Nick писал(а):Прибавить в режиме sampler можно компонентом sum2.
Это как ?
Re: Контактный сканер с помощью EMC2
Добавлено: 21 янв 2013, 23:50
Nick
Ну берем компонент sum2, на один из входов подаем нужный пин, на второй - поправку (40), а на sampler выводим sum2.out.
http://www.linuxcnc.org/docs/html/man/man9/sum2.9.html
Сколько у тебя получается 1 оборот вокруг оси в единицах измерения оси?
С условием припуска получается правильно?
Re: Контактный сканер с помощью EMC2
Добавлено: 22 янв 2013, 00:00
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 очень большой файл получается ,я решил что вернусь к нему когда все отлажу и нужна будет скорость
Re: Контактный сканер с помощью EMC2
Добавлено: 22 янв 2013, 00:02
gendos
Nick писал(а):
Сколько у тебя получается 1 оборот вокруг оси в единицах измерения оси?
С условием припуска получается правильно?
1 оборот оси 360 градусов
Re: Контактный сканер с помощью EMC2
Добавлено: 22 янв 2013, 00:04
gendos
Вот что получилось с припуском 40мм(если убрать припуск думаю получилось правильно)