Страница 10 из 14
Re: EMC2 и Joystick
Добавлено: 27 окт 2012, 19:20
nkp
shvv писал(а): визуализация присутствует только в симе, в "нормальном" станке её нет
а в чем проблема??
вот создал на скорую руку конфиг
вроде бы все работает
в чем подвох????
Re: EMC2 LinuxCNC и Joystick
Добавлено: 21 июл 2013, 22:55
verser
Есть такой hal файл для управления станком джойстиком Logitech Freedom 2.4
Работает неплохо, но хотелось бы улучшить пару моментов:
-максимальная скорость перемещений задается жестко в joypad.hal, а было бы удобнее её привязать к той что выставляется слайдером во вкладке "Ручное управление [F3]";
-после запуска программы LinuxCNC для корректной работы (чтобы оси самопроизвольно не стартовали при включении станка) надо перед включением станка пошевелить на джойстике оси X и Y (типа разбудить что ли) а уже после этого можно включать станок. Как то это неудобно.
Думаю если это дружно подправить - получим идеальное решение для любого джойстика(только надо пины под свой джойстик переназначить).
Re: EMC2 LinuxCNC и Joystick
Добавлено: 22 июл 2013, 12:55
Nick
verser писал(а):максимальная скорость перемещений задается жестко в joypad.hal, а было бы удобнее её привязать к той что выставляется слайдером во вкладке
Это странно, я бы вообще эту скорость завязал на какую-нибудь дополнительную ось... На какой-нибудь thrust....
verser писал(а):-после запуска программы LinuxCNC для корректной работы (чтобы оси самопроизвольно не стартовали при включении станка) надо перед включением станка пошевелить на джойстике оси X и Y (типа разбудить что ли) а уже после этого можно включать станок. Как то это неудобно
Ишь ты оно как, я правда не совсем понял, где это задается... а не может это сам джойстик "засыпать"?
Или оно все вот тут делается:
Код: Выделить всё
#------------------------------------------------------
# Set up X axis one-shot
#------------------------------------------------------
# To set up the jogs as a one-shot, we have to build a small Rube Goldberg machine.
# A window comparator will tell you if there IS a trigger, not which direction the
# pulse should go. That's where the invert output comes in.
# If the second comparator shows that we're in the lower half, then we offset the
# inverse of the pulse wave to get a negative pulse. We also use that second comparator
# to trigger the mux to determine whether to send a positive of negative pulse.
# All these conversions are required because the required components will only work with
# certain types of inputs. Edge detection sends out a bit, and a mux requires a float.
net Xwindow wcomp.0.in => deadzone.3.out
net Xwindow wcomp.1.in => deadzone.3.out
net XwindowInv not.0.in => wcomp.0.out
net Xedge edge.0.in => not.0.out
net Xupconv1 conv-bit-s32.0.in => edge.0.out
net Xupconv2 conv-s32-float.0.in => conv-bit-s32.0.out
net Xupconvinv1 conv-bit-s32.1.in => edge.0.out-invert
net Xupconvinv2 conv-s32-float.2.in => conv-bit-s32.1.out
net Xupconvinv3 offset.0.in => conv-s32-float.2.out
net Xjogleft mux2.3.in0 => conv-s32-float.0.out
net Xjogright mux2.3.in1 => offset.0.out
net XjogDirection mux2.3.sel => wcomp.1.out
net Xjoglink mux2.0.in1 => mux2.3.out
#At this point, mux2.0 has the one-shot Xpulse as one of the inputs.
Когда я думал о том, чтобы использовать джойстик, я хотел на гашетку завязать enable от перемещений, чтобы от случайного задевания джойстика станок не начал куда-нибудь ломиться
ЗЫ вообще очень красиво вес конфиг написан
, где ты такой нашел?
Re: EMC2 LinuxCNC и Joystick
Добавлено: 22 июл 2013, 13:36
verser
Здесь взял:
http://wiki.linuxcnc.org/cgi-bin/wiki.p ... NC_Machine
Внес минимальные исправления под Freedom:
мертвые зоны,
назначил пины "под себя".
Максимальная скорость при управлении джойстиком у меня получается 959мм/мин и выше пока никак не поднимается.
Это при том что в LinuxCNC у меня стоит максимальная скорость при ручном управлении больше 2000мм/мин.
Сейчас постараюсь с этим моментом разобраться.
Согласен, перемещения при зажатой гашетке гораздо безопаснее, и вполне удобно.
Re: EMC2 LinuxCNC и Joystick
Добавлено: 22 июл 2013, 15:00
Nick
verser писал(а):Максимальная скорость при управлении джойстиком у меня получается 959мм/мин и выше даже при увеличении коэф mux2.6.in0 не поднимается.
Странно...
Может все дело в encoder-ах? Кстати, для чего там такая хитрая система с mux.out => sim-encoder => encoder => jog.counts ??? Есть же jog по скорости...
Re: EMC2 LinuxCNC и Joystick
Добавлено: 22 июл 2013, 15:32
verser
Nick писал(а):Кстати, для чего там такая хитрая система с mux.out => sim-encoder => encoder => jog.counts ??? Есть же jog по скорости...
Так реализована одним махом возможность при зажатой кнопке base (для моего джойстика например) вместо плавного перемещения делать 1 шаг либо на расстояние mux2.6.in0(если выбрано "быстрое" перемещение кнопкой thumb2) или на расстояние mux2.6.in1(если было выбрано "медленное" перемещение кнопкой top).
mux2.6.in0 и mux2.6.in1 лучше всего сделать = 0.1 и 0.01 соответственно - красиво шагает тогда, ровненько по метрической шкале.
Правда максимальная скорость вообще до 750 мм/мин ограничивается. Думаю пока.
Re: EMC2 LinuxCNC и Joystick
Добавлено: 22 июл 2013, 17:14
Nick
Ишь как хитро замутили
.
А если попробовать сделать через integ и mux в котором будет либо oneshot либо множитель по скорости и все это в jog-position?
Что-то нравится мне последнее время этот integ, так и хочется его везде засунуть
Re: EMC2 LinuxCNC и Joystick
Добавлено: 22 июл 2013, 18:25
verser
Подкорректировал несколько глюков
(в режиме джойстика под кодовым названием "step"
оси X и Y двигались только в одном направлении, максимальная скорость теперь деиствительно максимальная)
Но главные позиции пока не решены
verser писал(а):Работает неплохо, но хотелось бы улучшить пару моментов:-максимальная скорость перемещений задается жестко в joypad.hal, а было бы удобнее её привязать к той что выставляется слайдером во вкладке "Ручное управление [F3]";-после запуска программы LinuxCNC для корректной работы (чтобы оси самопроизвольно не стартовали при включении станка) надо перед включением станка пошевелить на джойстике оси X и Y (типа разбудить что ли) а уже после этого можно включать станок. Как то это неудобно.Думаю если это дружно подправить - получим идеальное решение для любого джойстика(только надо пины под свой джойстик переназначить)
Попробую подправить "выход из сна" джойстика при запуске LinuxCNC.
Скажу что чертовски удобно иметь джойстик рядом со станком, и с тем функционалом, который этот joypad.hal подключает, джойстик уже не "баловство" , а скорее - "must have".
Re: EMC2 LinuxCNC и Joystick
Добавлено: 22 июл 2013, 18:36
Nick
Так, но максимальная скорость решена?
Т.е. осталось решить проблему зависания?
Что-то я никак не найду, где оно может быть в hal.... такое ощущение, что то, что я выдрал вверху не может отвечать за засыпание...
ЗЫ, вот что не удобно в этом конфиге - стрелки сигналов в обратную сторону нарисованы:
вот это
net Xupconvinv3 offset.0.in => conv-s32-float.2.out
вот так понятнее выглядит:
net Xupconvinv3 offset.0.in <= conv-s32-float.2.out
или так
net Xupconvinv3 => offset.0.in <= conv-s32-float.2.out
или вообще вот так:
net Xupconvinv3 <= conv-s32-float.2.out
net Xupconvinv3 => offset.0.in
Re: EMC2 LinuxCNC и Joystick
Добавлено: 22 июл 2013, 18:51
verser
Да, подправил параметры sim.encoder , максимальная скорость теперь задается коректно, в зависимости от настроек станка, но не меняется в среде LinuxCNC.
Думаю что спящий джойстик отдает в LinuxCNC (в момент включения станка) вместо нулей что-то...
Буду копать в этом направлении.
Re: EMC2 LinuxCNC и Joystick
Добавлено: 22 июл 2013, 18:58
Nick
Можно попробовать покопать в сторону джойстика, убрать у него спящий режим, или как я раньше писал добавить триггер на нажатие гашетки, тогда наверняка и проблема с пробуждением отпадет, и не будет лишних движений.
Re: EMC2 LinuxCNC и Joystick
Добавлено: 22 июл 2013, 19:10
verser
Мне понравилась идея с гашеткой.
Понятия не имею пока как у этого джойстика под Ubuntu вырубить спящий режим
Ну и спать ребеночку всё же нада, а то не прокормишь так его никогда
Re: EMC2 LinuxCNC и Joystick
Добавлено: 22 июл 2013, 19:22
Nick
Ну тогда гашетку заводим на sim-encoder.X.enable, или что-то еще надо будет?
Re: EMC2 LinuxCNC и Joystick
Добавлено: 22 июл 2013, 21:08
verser
Происходит так:
В нормальном положении, когда станок корректно включен, джойстик имеет нулевое положение (скажем по оси X) input.0.abs-x-counts=511, заметим это не ноль, а середина между 0 и 1023.
Теперь если не выходя из LinuxCNC просто выключить станок, подождать чтобы уснул джойстик, снова включить станок - всё отлично работает не смотря на спящий джойстик, оси стоят на месте и ждут команды от джойстика, input.0.abs-x-counts=511.
А вот если выйти из программы LinuxCNC и потом опять зайти, имеем input.0.abs-x-counts=0 !!! Включаем станок, и он понимает это так что типа джойстик наклонили до упора влево и крутит соотв. ось X на уменьшение. До тех пор пока не пошевелим джойстиком ось Х. Как только шевельнули - значение 511 прописывается в input.0.abs-x-counts.
То же и с остальными осями.
Вывод - при запуске LinuxCNC (или станка из LinuxCNC) надо первым делом как-то инициализировать следующие пины
input.0.abs-x-counts=511
input.0.abs-y-counts=511
input.0.abs-rz-counts=127
input.0.abs-x-position=0,000977 (не ноль чтобы избежать деление на 0 я так думаю)
input.0.abs-y-position=0,000977
input.0.abs-rz-position=0,00392
Кто знает как?
Re: EMC2 LinuxCNC и Joystick
Добавлено: 22 июл 2013, 21:14
Nick
verser писал(а):input.0.abs-rz-counts=127
А если в самом начале написать setp input.0.abs-rz-counts? хотя наверняка не поможет. Скорее всего надо это смотреть в компоненте input....
Может наоборот надо что-то дополнительное при выходе сбрасывать?
verser писал(а):(не ноль чтобы избежать деление на 0 я так думаю)
Там вроде деления на position быть не должно... Скорее всего оно меняется согласно counts...
Re: EMC2 LinuxCNC и Joystick
Добавлено: 22 июл 2013, 21:17
verser
Nick писал(а):Там вроде деления на position быть не должно... Скорее всего оно меняется согласно counts...
Да, можно сначала только counts проинициировать.
Re: EMC2 LinuxCNC и Joystick
Добавлено: 24 июл 2013, 09:03
verser
Поставил на "гашетку" непрерывное перемещение если она зажата и step - если не зажата.
Заодно получилось что при первом запуске станок самопроизвольно не крутит оси
(но если потом не пошевелить джойстиком оси Х-У а сразу нажать гашетку то проблема "0 vs 511" проявляется,.. это уже менее опасно и можно работать, больше пока не располагаю временем копнуть глубже поэтому оставляю так. Призываю сообщество к помощи в этом вопросе)
Спасибо Nick'у за идею с гашеткой.
Re: EMC2 LinuxCNC и Joystick
Добавлено: 24 июл 2013, 09:16
Nick
По идее вот тут устанавливается значение осей abs-...
Код: Выделить всё
163 for a in self.abs_items:
164 value = self.get(a + "-counts")
165 scale = self.get(a + "-scale") or 1
166 offset = self.get(a + "-offset")
167 position = (value - offset) / scale
168 self.set(a + "-position", position)
169 # Use .01 because my Joystick isn't exactly zero at rest. maybe should be a parameter?
170 self.set(a + "-is-neg", (position < -.01) )
171 self.set(a + "-is-pos", (position > .01) )
http://git.linuxcnc.org/gitweb?p=linuxc ... 3b41a#l163
Может надо offset проинициировать в hal?
Re: EMC2 LinuxCNC и Joystick
Добавлено: 24 июл 2013, 09:21
Nick
И еще есть: в
class HalInputDevice:
def __init__(self, comp, idx, name, parts='KRAL'):
...
98 center = (absinfo.minimum + absinfo.maximum)/2.
...
104 self.set(name + "-offset", center)
Re: EMC2 LinuxCNC и Joystick
Добавлено: 24 июл 2013, 09:50
verser
Nick писал(а):Может надо offset проинициировать в hal?
Как ни странно но offset при первом старте =511, с ним все в порядке, scale тоже = 511, (имеют тип IN)
counts и position имеют тип OUT - не знаю можно ли вообще тип OUT инициализировать.
Вот эта servo-thread в строке№471 joypad.hal вызывает самопроизвольный старт осей
addf sim-encoder.update-speed servo-thread