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

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

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

Сообщение Nick »

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

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

Сообщение psha »

Зачем от 0 до 360?
Какая разнца какое там число, если от него всё равно нужны только sin и cos.
Это цилиндрические координаты x, a, r, переводятся в обычные как x, r * cos(a), r * sin(a)
Никакой математики в hal делать не нужно.
Только не забудь, что обычно библиотечные sin и cos работают в радианах, а не в градусах
root, доделай конвертацию! :)
gendos
Мастер
Сообщения: 1117
Зарегистрирован: 06 июл 2011, 15:26
Репутация: 81
Настоящее имя: Геннадий
Откуда: Ростов-на-дону
Контактная информация:

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

Сообщение gendos »

psha писал(а):Зачем от 0 до 360?
Какая разнца какое там число, если от него всё равно нужны только sin и cos.
Это цилиндрические координаты x, a, r, переводятся в обычные как x, r * cos(a), r * sin(a)
Никакой математики в hal делать не нужно.
Только не забудь, что обычно библиотечные sin и cos работают в радианах, а не в градусах

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

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

Сообщение psha »

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

#!/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))
Скрипт корвертирует stdin в цилиндрических координатах в stdout в обычных
Вытягивание из файла нужного куска сам, ибо это зависит от того как у тебя остальной обвес будет выглядеть
root, доделай конвертацию! :)
gendos
Мастер
Сообщения: 1117
Зарегистрирован: 06 июл 2011, 15:26
Репутация: 81
Настоящее имя: Геннадий
Откуда: Ростов-на-дону
Контактная информация:

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

Сообщение gendos »

psha писал(а):

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

#!/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))
Скрипт корвертирует stdin в цилиндрических координатах в stdout в обычных
Вытягивание из файла нужного куска сам, ибо это зависит от того как у тебя остальной обвес будет выглядеть
А как скрипт этот запустить?
gendos
Мастер
Сообщения: 1117
Зарегистрирован: 06 июл 2011, 15:26
Репутация: 81
Настоящее имя: Геннадий
Откуда: Ростов-на-дону
Контактная информация:

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

Сообщение gendos »

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

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

Сообщение Nick »

gendos писал(а):Может подскажете с чего лучше начать?
Лучше всего с чего-то интересного, но не очень сложного. Т.е. ставиль перед собой не сложную задачу, начинаешь решать и за одно всему учишься.
gendos писал(а):А как скрипт этот запустить?
Сохраняешь скрипт в файл 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
gendos
Мастер
Сообщения: 1117
Зарегистрирован: 06 июл 2011, 15:26
Репутация: 81
Настоящее имя: Геннадий
Откуда: Ростов-на-дону
Контактная информация:

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

Сообщение gendos »

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

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

Сообщение Nick »

Заводишь энкодер, назначаешь ему входы, назначаешь размерность и все :).

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

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

Сообщение gendos »

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

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

Сообщение Nick »

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

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

Сообщение gendos »

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

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

Сообщение Nick »

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

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

Сообщение psha »

Nick писал(а):cat file.coord | python file.py
Если чо лучше делать python file.py < file.coord, это более эффективное перенаправление.
Вообще там понадобится несколько больше для нормального функционривания - минимум надо уметь
либо обнулять файл с данными перед чтением, либо уметь читать с нужного места.
Да и в принципе наврено несложно будет Gremlin прикрутить для показа отсканированной траектории...
В общем есть где развернуться :)
root, доделай конвертацию! :)
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

psha писал(а):Вообще там понадобится несколько больше для нормального функционривания - минимум надо уметьлибо обнулять файл с данными перед чтением, либо уметь читать с нужного места.
Тогда так:
python file.py < file.coord > file.out; rm file.coord
а если нужно чтобы файл остался, но стал пустой:
python file.py < file.coord > file.out ; rm file.coord ; touch file.coord

PS Gremlin?
psha
Опытный
Сообщения: 147
Зарегистрирован: 28 фев 2011, 11:11
Репутация: 1
Контактная информация:

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

Сообщение psha »

rm file не выйдет, halsampler его не переоткроет.
А вот truncate -s0 file.coords должно сработать, но надо проверять

Gremlin - аналог превьюшки из Axis но для Gtk (пример встроенного в touchy: http://psha.org.ru/tmp/touchy-gremlin.png)
root, доделай конвертацию! :)
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

psha писал(а):rm file не выйдет, halsampler его не переоткроет.
Смотри выше:
... rm file.coord ; touch file.coord
psha
Опытный
Сообщения: 147
Зарегистрирован: 28 фев 2011, 11:11
Репутация: 1
Контактная информация:

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

Сообщение psha »

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

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

Сообщение Nick »

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

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

Сообщение psha »

Резать тоже нельзя, да. Точнее говоря можно, но будут нули вначале. Чтоб их не было можно в него добавить lseek(1, 0, SEEK_END); перед записью \n
По крайней мере это будет работать, в отличии от rm :)
root, доделай конвертацию! :)
Ответить

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