Контактный сканер с помощью EMC2
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Контактный сканер с помощью EMC2
хмммм... забавно... а и вправду, можно ли в hal писать математику? Или только отдельным компонентом?
Re: Контактный сканер с помощью EMC2
Зачем от 0 до 360?
Какая разнца какое там число, если от него всё равно нужны только sin и cos.
Это цилиндрические координаты x, a, r, переводятся в обычные как x, r * cos(a), r * sin(a)
Никакой математики в hal делать не нужно.
Только не забудь, что обычно библиотечные sin и cos работают в радианах, а не в градусах
Какая разнца какое там число, если от него всё равно нужны только 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
psha писал(а):Зачем от 0 до 360?
Какая разнца какое там число, если от него всё равно нужны только sin и cos.
Это цилиндрические координаты x, a, r, переводятся в обычные как x, r * cos(a), r * sin(a)
Никакой математики в hal делать не нужно.
Только не забудь, что обычно библиотечные sin и cos работают в радианах, а не в градусах
Не могупонять , как мне эти три колонки цифр перевести автоматически,
если можно пример, чтоб я мог сообразить
Re: Контактный сканер с помощью EMC2
Код: Выделить всё
#!/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))
Вытягивание из файла нужного куска сам, ибо это зависит от того как у тебя остальной обвес будет выглядеть
root, доделай конвертацию! 
-
gendos
- Мастер
- Сообщения: 1117
- Зарегистрирован: 06 июл 2011, 15:26
- Репутация: 81
- Настоящее имя: Геннадий
- Откуда: Ростов-на-дону
- Контактная информация:
Re: Контактный сканер с помощью EMC2
А как скрипт этот запустить?psha писал(а):Скрипт корвертирует stdin в цилиндрических координатах в stdout в обычныхКод: Выделить всё
#!/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))
Вытягивание из файла нужного куска сам, ибо это зависит от того как у тебя остальной обвес будет выглядеть
-
gendos
- Мастер
- Сообщения: 1117
- Зарегистрирован: 06 июл 2011, 15:26
- Репутация: 81
- Настоящее имя: Геннадий
- Откуда: Ростов-на-дону
- Контактная информация:
Re: Контактный сканер с помощью EMC2
Hабрал в Google "python"
немного просветился,буду изучать.
Может подскажете с чего лучше начать?
немного просветился,буду изучать.
Может подскажете с чего лучше начать?
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Контактный сканер с помощью EMC2
Лучше всего с чего-то интересного, но не очень сложного. Т.е. ставиль перед собой не сложную задачу, начинаешь решать и за одно всему учишься.gendos писал(а):Может подскажете с чего лучше начать?
Сохраняешь скрипт в файл file.py. Чтобы выполнить питоновский код нужно либо написать python file.py, лиюо добваить файлу разрешение на исполнение chmod +x file.py. Т.к. этот скрипт берет данные из стандартного ввода stdin, то чтобы загнать в него файл делаем следующее:gendos писал(а):А как скрипт этот запустить?
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
Спасибо , пока буду делать железки,постараюсь разобраться.
Осталось еще спросить как подключить в emc2 промышленный энкодер имеющий выходы А , В
Осталось еще спросить как подключить в emc2 промышленный энкодер имеющий выходы А , В
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Контактный сканер с помощью EMC2
Заводишь энкодер, назначаешь ему входы, назначаешь размерность и все
.
Ты же через mesa управляешь?
Ты же через mesa управляешь?
-
gendos
- Мастер
- Сообщения: 1117
- Зарегистрирован: 06 июл 2011, 15:26
- Репутация: 81
- Настоящее имя: Геннадий
- Откуда: Ростов-на-дону
- Контактная информация:
Re: Контактный сканер с помощью EMC2
Нет mesу я заказал для эксперимента,
Хочу сервы на DC моторах научиться запускать,хотя если будет смысл может и mesy попробую.
Хочу сервы на DC моторах научиться запускать,хотя если будет смысл может и mesy попробую.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Контактный сканер с помощью EMC2
А на lpt хватит выходов/входов на две сервы и один энкодер?
Если хватит, то можно и на нем, но на месе проще
.
Если хватит, то можно и на нем, но на месе проще
-
gendos
- Мастер
- Сообщения: 1117
- Зарегистрирован: 06 июл 2011, 15:26
- Репутация: 81
- Настоящее имя: Геннадий
- Откуда: Ростов-на-дону
- Контактная информация:
Re: Контактный сканер с помощью EMC2
Я для начала сделяю две координаты на шаговиках + один энкодер,а потом если скорости не хватит поставлю сервыNick писал(а):А на lpt хватит выходов/входов на две сервы и один энкодер?
Если хватит, то можно и на нем, но на месе проще.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Контактный сканер с помощью EMC2
А, ну тогда нормально. Тогда заводишь энкодер и прописываешь ему все необходимые пины. Примерно как в теме про линейки с шаговыми двигателями в emc2
Re: Контактный сканер с помощью EMC2
Если чо лучше делать python file.py < file.coord, это более эффективное перенаправление.Nick писал(а):cat file.coord | python file.py
Вообще там понадобится несколько больше для нормального функционривания - минимум надо уметь
либо обнулять файл с данными перед чтением, либо уметь читать с нужного места.
Да и в принципе наврено несложно будет Gremlin прикрутить для показа отсканированной траектории...
В общем есть где развернуться
root, доделай конвертацию! 
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Контактный сканер с помощью EMC2
Тогда так: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
rm file не выйдет, halsampler его не переоткроет.
А вот truncate -s0 file.coords должно сработать, но надо проверять
Gremlin - аналог превьюшки из Axis но для Gtk (пример встроенного в touchy: http://psha.org.ru/tmp/touchy-gremlin.png)
А вот 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
Смотри выше:psha писал(а):rm file не выйдет, halsampler его не переоткроет.
... rm file.coord ; touch file.coord
Re: Контактный сканер с помощью EMC2
И что? В итоге старый будет удален, в halsampler'е останется открытый дескриптор на этот файл.
Вся последующая запись будет в _удаленный_ файл, то что создано потом с этим же именем на том же месте будет оставаться пустым.
Вся последующая запись будет в _удаленный_ файл, то что создано потом с этим же именем на том же месте будет оставаться пустым.
root, доделай конвертацию! 
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Контактный сканер с помощью EMC2
Погоди, если он дескриптор не закрывает, тогда файл резать нельзя, а если закрывает, тогда он его откроет по новому имени.
И он что работает напрямую с жестким диском минуя файловую систему?
И он что работает напрямую с жестким диском минуя файловую систему?
Re: Контактный сканер с помощью EMC2
Резать тоже нельзя, да. Точнее говоря можно, но будут нули вначале. Чтоб их не было можно в него добавить lseek(1, 0, SEEK_END); перед записью \n
По крайней мере это будет работать, в отличии от rm
По крайней мере это будет работать, в отличии от rm
root, доделай конвертацию! 
