Страница 4 из 12
Re: Контактный сканер с помощью EMC2
Добавлено: 19 июл 2011, 17:25
Nick
хмммм... забавно... а и вправду, можно ли в hal писать математику? Или только отдельным компонентом?
Re: Контактный сканер с помощью EMC2
Добавлено: 19 июл 2011, 17:55
psha
Зачем от 0 до 360?
Какая разнца какое там число, если от него всё равно нужны только sin и cos.
Это цилиндрические координаты x, a, r, переводятся в обычные как x, r * cos(a), r * sin(a)
Никакой математики в hal делать не нужно.
Только не забудь, что обычно библиотечные sin и cos работают в радианах, а не в градусах
Re: Контактный сканер с помощью EMC2
Добавлено: 19 июл 2011, 18:42
gendos
psha писал(а):Зачем от 0 до 360?
Какая разнца какое там число, если от него всё равно нужны только sin и cos.
Это цилиндрические координаты x, a, r, переводятся в обычные как x, r * cos(a), r * sin(a)
Никакой математики в hal делать не нужно.
Только не забудь, что обычно библиотечные sin и cos работают в радианах, а не в градусах
Не могупонять , как мне эти три колонки цифр перевести автоматически,
если можно пример, чтоб я мог сообразить
Re: Контактный сканер с помощью EMC2
Добавлено: 19 июл 2011, 18:59
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 в обычных
Вытягивание из файла нужного куска сам, ибо это зависит от того как у тебя остальной обвес будет выглядеть
Re: Контактный сканер с помощью EMC2
Добавлено: 19 июл 2011, 19:20
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 в обычных
Вытягивание из файла нужного куска сам, ибо это зависит от того как у тебя остальной обвес будет выглядеть
А как скрипт этот запустить?
Re: Контактный сканер с помощью EMC2
Добавлено: 19 июл 2011, 19:55
gendos
Hабрал в Google "python"
немного просветился,буду изучать.
Может подскажете с чего лучше начать?
Re: Контактный сканер с помощью EMC2
Добавлено: 19 июл 2011, 21:20
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
Re: Контактный сканер с помощью EMC2
Добавлено: 19 июл 2011, 22:11
gendos
Спасибо , пока буду делать железки,постараюсь разобраться.
Осталось еще спросить как подключить в emc2 промышленный энкодер имеющий выходы А , В
Re: Контактный сканер с помощью EMC2
Добавлено: 19 июл 2011, 22:13
Nick
Заводишь энкодер, назначаешь ему входы, назначаешь размерность и все

.
Ты же через mesa управляешь?
Re: Контактный сканер с помощью EMC2
Добавлено: 19 июл 2011, 22:43
gendos
Нет mesу я заказал для эксперимента,
Хочу сервы на DC моторах научиться запускать,хотя если будет смысл может и mesy попробую.
Re: Контактный сканер с помощью EMC2
Добавлено: 19 июл 2011, 22:53
Nick
А на lpt хватит выходов/входов на две сервы и один энкодер?
Если хватит, то можно и на нем, но на месе проще

.
Re: Контактный сканер с помощью EMC2
Добавлено: 19 июл 2011, 23:01
gendos
Nick писал(а):А на lpt хватит выходов/входов на две сервы и один энкодер?
Если хватит, то можно и на нем, но на месе проще

.
Я для начала сделяю две координаты на шаговиках + один энкодер,а потом если скорости не хватит поставлю сервы
Re: Контактный сканер с помощью EMC2
Добавлено: 19 июл 2011, 23:04
Nick
А, ну тогда нормально. Тогда заводишь энкодер и прописываешь ему все необходимые пины. Примерно как в теме про
линейки с шаговыми двигателями в emc2
Re: Контактный сканер с помощью EMC2
Добавлено: 20 июл 2011, 08:21
psha
Nick писал(а):cat file.coord | python file.py
Если чо лучше делать python file.py < file.coord, это более эффективное перенаправление.
Вообще там понадобится несколько больше для нормального функционривания - минимум надо уметь
либо обнулять файл с данными перед чтением, либо уметь читать с нужного места.
Да и в принципе наврено несложно будет Gremlin прикрутить для показа отсканированной траектории...
В общем есть где развернуться

Re: Контактный сканер с помощью EMC2
Добавлено: 20 июл 2011, 08:49
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?
Re: Контактный сканер с помощью EMC2
Добавлено: 20 июл 2011, 11:11
psha
rm file не выйдет, halsampler его не переоткроет.
А вот truncate -s0 file.coords должно сработать, но надо проверять
Gremlin - аналог превьюшки из Axis но для Gtk (пример встроенного в touchy:
http://psha.org.ru/tmp/touchy-gremlin.png)
Re: Контактный сканер с помощью EMC2
Добавлено: 20 июл 2011, 11:27
Nick
psha писал(а):rm file не выйдет, halsampler его не переоткроет.
Смотри выше:
... rm file.coord ; touch file.coord
Re: Контактный сканер с помощью EMC2
Добавлено: 20 июл 2011, 12:32
psha
И что? В итоге старый будет удален, в halsampler'е останется открытый дескриптор на этот файл.
Вся последующая запись будет в _удаленный_ файл, то что создано потом с этим же именем на том же месте будет оставаться пустым.
Re: Контактный сканер с помощью EMC2
Добавлено: 20 июл 2011, 13:51
Nick
Погоди, если он дескриптор не закрывает, тогда файл резать нельзя, а если закрывает, тогда он его откроет по новому имени.
И он что работает напрямую с жестким диском минуя файловую систему?
Re: Контактный сканер с помощью EMC2
Добавлено: 20 июл 2011, 14:40
psha
Резать тоже нельзя, да. Точнее говоря можно, но будут нули вначале. Чтоб их не было можно в него добавить lseek(1, 0, SEEK_END); перед записью \n
По крайней мере это будет работать, в отличии от rm
