Страница 3 из 7
Re: Программная коррекция кривизны портала
Добавлено: 31 авг 2018, 14:23
Serg
Если ты решил обидиться, то зря. Я всегда за хорошие и полезные средства и продукты и с удовольствием понатыкаю тебе плюсов за решение, которое будет настолько лучше имеющихся, чтобы ради него рисковать отступлением от официальной версии.
Но прежде чем браться за него рекомендую внимательно изучить уже имеющиеся решения и хорошенько продумать своё.
P.S. В среде UNIX и FSF есть такая рекомендация: прежде чем начинать писать удобную и полезную программу оглянись вокруг - наверняка её уже написали.

Re: Программная коррекция кривизны портала
Добавлено: 31 авг 2018, 15:47
MX_Master
По просьбе автора темы, всё-таки, продолжим. Для пробы обойдёмся пока без файлов
(чтоб меня не съели знатоки). Значения корректировки будут передаваться кинематике как параметр, в виде строки. Размера строки (1024) должно хватить для большинства вариантов.
По просьбе Сергея будем продумывать свои действия тщательнее. Способ ввода данных мне видится примерно таким:
Код: Выделить всё
loadrt \
trivkins_adjust \
y_adj_from=x \
y_adj_step=100 \
y_adj_data=0,0,0.06,0.08,0.1,0.15,0.13,0.1,0.08,0.06,0
Ну, как, Сергей, падёт?

Re: Программная коррекция кривизны портала
Добавлено: 31 авг 2018, 16:13
Serg
Самый простой способ:
в качестве параметра нужно задавать количество точек коррекции по каждой оси, например так:
loadrt ....... axis=20,20,10
т.е. по осям X и Y по 20 точек, по оси Z 10 точек. На основании этой информации компонент сформирует соотв. набор пинов, которым надо будет присвоить соотв. значения с помощью setp. Все эти присвоения можно вынести в отдельный HAL-файл, а сам HAL-файл при желании можно будет автоматически генерить из таблицы как в #36.
Плюс такого способа (набор пинов) в том, что коррекцию можно будет менять "на лету" и даже с помощью контактного датчика и эталонной линейки автоматически измерять погрешности и настраивать коррекции.
Re: Программная коррекция кривизны портала
Добавлено: 31 авг 2018, 17:36
MX_Master
Сергей, я понимаю, что надо сразу делать по-большому и с заделом на будущее. Но очередь предполагаемых пользователей, с контактными датчиками и пинами "на лету", состоит только из одного человека. Никто другой не изъявил такого желания. Все остальные зашли сюда с данными, взятыми с часовых индикаторов и линеек. И никому, в том числе и мне, этот обширный функционал модуля кинематики не интересен. Потому что каждому из нас надо просто решить вопрос. Когда соберётся достаточно много желающих плавающей кинематики, вот тогда и будем её делать. А в этой теме просьба была только одна - про статичную коррекцию.
Re: Программная коррекция кривизны портала
Добавлено: 31 авг 2018, 18:23
Serg
MX_Master писал(а):А в этой теме просьба была только одна - про статичную коррекцию.
Мой вариант её никоим образом не исключает и не ухудшает.
И не имеет ограничения на длину строки.

Моя личная практика показывает, что такая коррекция будет более востребована на больших станках, где количество точек коррекции достаточно велико.
Но дело хозяйское...
Re: Программная коррекция кривизны портала
Добавлено: 01 сен 2018, 15:40
nkp
тут вроде был уже выложен первый результат ...
Re: Программная коррекция кривизны портала
Добавлено: 02 сен 2018, 10:09
MX_Master
Так,
первый рабочий вариант кинематики готов. Все корректировки работают пока только в положительном диапазоне позиций осей (и моторов).
Пример для корректировки оси Y от позиции X.
Этот пример будет работать только для Machinekit.
Версию для LinuxCNC выложу позже (там есть свои нюансы).
- скачать и положить исходник (relkins.c) компонента кинематики в любую папку ПК с Machinekit
Код: Выделить всё
wget https://raw.githubusercontent.com/orangecnc/machinekit/trivkins_adjust/src/emc/kinematics/relkins.c
- собрать исходник в модуль и установить его в систему
Код: Выделить всё
sudo comp --install relkins.c
sudo halcompile --install relkins.c
- в HAL файле заменить стандартную кинематику на новую
Код: Выделить всё
loadrt relkins steps=0,11 step_size=0,100 rel_axis=0,X
#loadrt trivkins
loadrt tp
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES kins=relkins tp=tp
- Чуть ниже, в этом же HAL файле указать таблицу корректировки
Код: Выделить всё
setp relkins.Y.0 0.0
setp relkins.Y.1 0.0
setp relkins.Y.2 0.06
setp relkins.Y.3 0.08
setp relkins.Y.4 0.1
setp relkins.Y.5 0.15
setp relkins.Y.6 0.13
setp relkins.Y.7 0.1
setp relkins.Y.8 0.08
setp relkins.Y.9 0.06
setp relkins.Y.10 0.0
Re: Программная коррекция кривизны портала
Добавлено: 02 сен 2018, 15:31
Argon-11
Как задать Y(X) в целом понятно, но как оно внутри работает?
Я так понимаю, софт должен добавлять шаги по X в ту или другую сторону, при этом не меняя самой координаты X, верно?
Т.е. после задания характеристики Y(X в миллиметрах) софт должен пересчитать ее в характеристику Y(X в шагах с учетом направления). Так делается или как-то иначе?
Re: Программная коррекция кривизны портала
Добавлено: 02 сен 2018, 16:16
MX_Master
По результатам тестов:
- в JOG режиме - показывает отклонение
- в AUTO/MDI режиме - корректирует
На данный момент не могу придумать как лучше указывать корректировку для отрицательных значений. Второе, что ещё не придумал, как организовать корректировку одной оси в зависимости от нескольких (типа Z от XY).
Re: Программная коррекция кривизны портала
Добавлено: 02 сен 2018, 16:56
Argon-11
MX_Master писал(а):Второе, что ещё не придумал
вообще-то есть еще неясность - как сделать взаимную коррекцию двух осей. Как будет работать коррекция при диагональном перемещении в плоскости XY?
Я почему и завел разговор про пересчет дельт миллиметров в шаги с направлением. Мне кажется, либо оно так делается с коррекцией на лету, либо LinuxCNC после загрузки G-кода производит единоразовый пересчет всей траектории в трехмерном поле. Интересно было бы выяснить...
Re: Программная коррекция кривизны портала
Добавлено: 02 сен 2018, 17:30
MX_Master
Всё на лету. Компонент кинематики о шагах не знает. Лучше всего для понимания - запустить
LinuxCNC в режиме симуляции и двигать осями по всякому.
Пример взаимной корректировки
XY с шагом в 200 мм
Код: Выделить всё
loadrt relkins steps=5,5 step_size=200,200 rel_axis=Y,X
setp relkins.X.0 0.0
setp relkins.X.0 0.1
setp relkins.X.0 0.2
setp relkins.X.0 0.1
setp relkins.X.0 0.0
setp relkins.Y.0 0.0
setp relkins.Y.0 -0.1
setp relkins.Y.0 -0.1
setp relkins.Y.0 -0.1
setp relkins.Y.0 0.0
Re: Программная коррекция кривизны портала
Добавлено: 02 сен 2018, 19:08
MX_Master
Автор темы мне намекнул, что для LinuxCNC компонент не собирается из исходника. А я и сам забыл, что писать RT компоненты для LinuxCNC надо слегка по-другому. Вышеуказанные примеры будут работать только под Machinekit. Для LinuxCNC с правками выложу чуть позже.
Re: Программная коррекция кривизны портала
Добавлено: 03 сен 2018, 21:15
MX_Master
Всё-таки, под
Machinekit,
uspace и
RT-PREEMPT писать RT компоненты будет по-проще. Полно пользовательских функций. А вот в
RTAI - полный
kernel space.
Подправил исходники. Успешно собирается под
LinuxCNC (RTAI). Но `ядрёные` функции по работе со строками функциклируют явно не так как `пользовательские`. Вощем, буду разбираться. О новостях сообщу.

Re: Программная коррекция кривизны портала
Добавлено: 04 сен 2018, 19:05
MX_Master
Готов первый рабочий вариант для
LinuxCNC (RTAI). Инструкции по установке практически те же. Ну и исходник кинематики положил в другом месте.
Всё тот же пример корректировки оси Y от позиции оси X.
- скачать и положить исходник (relkins.c) компонента кинематики в любую папку ПК с LinuxCNC (RTAI)
Код: Выделить всё
wget https://raw.githubusercontent.com/MX-Master/linuxcnc/trivkins_adjust/src/emc/kinematics/relkins.c
- собрать исходник в модуль и установить его в систему
- в HAL файле заменить стандартную кинематику на новую
Код: Выделить всё
#loadrt trivkins
loadrt relkins steps=0,11 step_size=0,100 rel_axis=0,X
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
- Чуть ниже, в этом же HAL файле указать таблицу корректировки
Код: Выделить всё
setp relkins.Y.0 0.0
setp relkins.Y.1 0.0
setp relkins.Y.2 0.06
setp relkins.Y.3 0.08
setp relkins.Y.4 0.1
setp relkins.Y.5 0.15
setp relkins.Y.6 0.13
setp relkins.Y.7 0.1
setp relkins.Y.8 0.08
setp relkins.Y.9 0.06
setp relkins.Y.10 0.0
Re: Программная коррекция кривизны портала
Добавлено: 05 сен 2018, 07:33
MX_Master
И небольшое видео как это работает
https://youtu.be/cN4xvYZVYbo
Re: Программная коррекция кривизны портала
Добавлено: 05 сен 2018, 08:32
Argon-11
А сделай видео с взаимной X-Y компенсацией!
Правда как отклонения на экране смотреть, если только 3 строки?
Re: Программная коррекция кривизны портала
Добавлено: 05 сен 2018, 10:36
MX_Master
Argon-11 писал(а):А сделай видео с взаимной X-Y компенсацией!
Правда как отклонения на экране смотреть, если только 3 строки?
https://youtu.be/D94QUEStfjA
Re: Программная коррекция кривизны портала
Добавлено: 05 сен 2018, 10:57
Argon-11
Пока не въехал, но кажется странным, что в предыдущем видео в world mode на экране меняется только координата текущего перемещения, а здесь - обе.
Сделай еще, плиз, диагональное перемещение 0,0 -> 5,5...
и еще в относительных координатах бы увидеть эти же перемещения. По идее кривулины не должны быть одинаковы, т.е. смещение по координатам должно учитываться.
Re: Программная коррекция кривизны портала
Добавлено: 05 сен 2018, 11:20
MX_Master
В режиме MDI/AUTO траекторию будет рисовать ровную, как будто коррекции нет. В режиме JOG показывает траекторию с коррекцией, но стартануть руками одновременно две оси в режиме JOG это тот ещё трюк. Так что, верь на слово
Будет что-то типа этого (по шагам), и ровная линия в реальности. Но лучше самостоятельно в симуляции посидеть минут 10-20, тогда будет всё понятно.
Re: Программная коррекция кривизны портала
Добавлено: 05 сен 2018, 15:05
Chertegnik
В версии 2.7.14 все работает, но у меня обновление 2.8 и прога не запускается из-за ошибки. Подскажите, в чем дело...