Программная коррекция кривизны портала
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Программная коррекция кривизны портала
Если ты решил обидиться, то зря. Я всегда за хорошие и полезные средства и продукты и с удовольствием понатыкаю тебе плюсов за решение, которое будет настолько лучше имеющихся, чтобы ради него рисковать отступлением от официальной версии.
Но прежде чем браться за него рекомендую внимательно изучить уже имеющиеся решения и хорошенько продумать своё.
P.S. В среде UNIX и FSF есть такая рекомендация: прежде чем начинать писать удобную и полезную программу оглянись вокруг - наверняка её уже написали.
Но прежде чем браться за него рекомендую внимательно изучить уже имеющиеся решения и хорошенько продумать своё.
P.S. В среде UNIX и FSF есть такая рекомендация: прежде чем начинать писать удобную и полезную программу оглянись вокруг - наверняка её уже написали.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- MX_Master
- Мастер
- Сообщения: 7476
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Программная коррекция кривизны портала
По просьбе автора темы, всё-таки, продолжим. Для пробы обойдёмся пока без файлов (чтоб меня не съели знатоки). Значения корректировки будут передаваться кинематике как параметр, в виде строки. Размера строки (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
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Программная коррекция кривизны портала
Самый простой способ:
в качестве параметра нужно задавать количество точек коррекции по каждой оси, например так:
loadrt ....... axis=20,20,10
т.е. по осям X и Y по 20 точек, по оси Z 10 точек. На основании этой информации компонент сформирует соотв. набор пинов, которым надо будет присвоить соотв. значения с помощью setp. Все эти присвоения можно вынести в отдельный HAL-файл, а сам HAL-файл при желании можно будет автоматически генерить из таблицы как в #36.
Плюс такого способа (набор пинов) в том, что коррекцию можно будет менять "на лету" и даже с помощью контактного датчика и эталонной линейки автоматически измерять погрешности и настраивать коррекции.
в качестве параметра нужно задавать количество точек коррекции по каждой оси, например так:
loadrt ....... axis=20,20,10
т.е. по осям X и Y по 20 точек, по оси Z 10 точек. На основании этой информации компонент сформирует соотв. набор пинов, которым надо будет присвоить соотв. значения с помощью setp. Все эти присвоения можно вынести в отдельный HAL-файл, а сам HAL-файл при желании можно будет автоматически генерить из таблицы как в #36.
Плюс такого способа (набор пинов) в том, что коррекцию можно будет менять "на лету" и даже с помощью контактного датчика и эталонной линейки автоматически измерять погрешности и настраивать коррекции.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- MX_Master
- Мастер
- Сообщения: 7476
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Программная коррекция кривизны портала
Сергей, я понимаю, что надо сразу делать по-большому и с заделом на будущее. Но очередь предполагаемых пользователей, с контактными датчиками и пинами "на лету", состоит только из одного человека. Никто другой не изъявил такого желания. Все остальные зашли сюда с данными, взятыми с часовых индикаторов и линеек. И никому, в том числе и мне, этот обширный функционал модуля кинематики не интересен. Потому что каждому из нас надо просто решить вопрос. Когда соберётся достаточно много желающих плавающей кинематики, вот тогда и будем её делать. А в этой теме просьба была только одна - про статичную коррекцию.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Программная коррекция кривизны портала
Мой вариант её никоим образом не исключает и не ухудшает.MX_Master писал(а):А в этой теме просьба была только одна - про статичную коррекцию.
И не имеет ограничения на длину строки. Моя личная практика показывает, что такая коррекция будет более востребована на больших станках, где количество точек коррекции достаточно велико.
Но дело хозяйское...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Программная коррекция кривизны портала
тут вроде был уже выложен первый результат ...
- MX_Master
- Мастер
- Сообщения: 7476
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Программная коррекция кривизны портала
Так, первый рабочий вариант кинематики готов. Все корректировки работают пока только в положительном диапазоне позиций осей (и моторов).
Пример для корректировки оси Y от позиции X.
Пример для корректировки оси Y от позиции X.
Этот пример будет работать только для Machinekit.
Версию для LinuxCNC выложу позже (там есть свои нюансы).
Версию для 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
Последний раз редактировалось MX_Master 02 сен 2018, 19:02, всего редактировалось 2 раза.
- Argon-11
- Мастер
- Сообщения: 2067
- Зарегистрирован: 07 июн 2017, 17:48
- Репутация: 461
- Контактная информация:
Re: Программная коррекция кривизны портала
Как задать Y(X) в целом понятно, но как оно внутри работает?
Я так понимаю, софт должен добавлять шаги по X в ту или другую сторону, при этом не меняя самой координаты X, верно?
Т.е. после задания характеристики Y(X в миллиметрах) софт должен пересчитать ее в характеристику Y(X в шагах с учетом направления). Так делается или как-то иначе?
Я так понимаю, софт должен добавлять шаги по X в ту или другую сторону, при этом не меняя самой координаты X, верно?
Т.е. после задания характеристики Y(X в миллиметрах) софт должен пересчитать ее в характеристику Y(X в шагах с учетом направления). Так делается или как-то иначе?
- MX_Master
- Мастер
- Сообщения: 7476
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Программная коррекция кривизны портала
По результатам тестов:
- в JOG режиме - показывает отклонение
- в AUTO/MDI режиме - корректирует
- Argon-11
- Мастер
- Сообщения: 2067
- Зарегистрирован: 07 июн 2017, 17:48
- Репутация: 461
- Контактная информация:
Re: Программная коррекция кривизны портала
вообще-то есть еще неясность - как сделать взаимную коррекцию двух осей. Как будет работать коррекция при диагональном перемещении в плоскости XY?MX_Master писал(а):Второе, что ещё не придумал
Я почему и завел разговор про пересчет дельт миллиметров в шаги с направлением. Мне кажется, либо оно так делается с коррекцией на лету, либо LinuxCNC после загрузки G-кода производит единоразовый пересчет всей траектории в трехмерном поле. Интересно было бы выяснить...
- MX_Master
- Мастер
- Сообщения: 7476
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Программная коррекция кривизны портала
Всё на лету. Компонент кинематики о шагах не знает. Лучше всего для понимания - запустить LinuxCNC в режиме симуляции и двигать осями по всякому.
Пример взаимной корректировки XY с шагом в 200 мм
Пример взаимной корректировки 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
- MX_Master
- Мастер
- Сообщения: 7476
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Программная коррекция кривизны портала
Автор темы мне намекнул, что для LinuxCNC компонент не собирается из исходника. А я и сам забыл, что писать RT компоненты для LinuxCNC надо слегка по-другому. Вышеуказанные примеры будут работать только под Machinekit. Для LinuxCNC с правками выложу чуть позже.
- MX_Master
- Мастер
- Сообщения: 7476
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Программная коррекция кривизны портала
Всё-таки, под Machinekit, uspace и RT-PREEMPT писать RT компоненты будет по-проще. Полно пользовательских функций. А вот в RTAI - полный kernel space.
Подправил исходники. Успешно собирается под LinuxCNC (RTAI). Но `ядрёные` функции по работе со строками функциклируют явно не так как `пользовательские`. Вощем, буду разбираться. О новостях сообщу.
Подправил исходники. Успешно собирается под LinuxCNC (RTAI). Но `ядрёные` функции по работе со строками функциклируют явно не так как `пользовательские`. Вощем, буду разбираться. О новостях сообщу.
- MX_Master
- Мастер
- Сообщения: 7476
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Программная коррекция кривизны портала
Готов первый рабочий вариант для LinuxCNC (RTAI). Инструкции по установке практически те же. Ну и исходник кинематики положил в другом месте.
Всё тот же пример корректировки оси Y от позиции оси X.
Всё тот же пример корректировки оси Y от позиции оси X.
- скачать и положить исходник (relkins.c) компонента кинематики в любую папку ПК с LinuxCNC (RTAI)
Код: Выделить всё
wget https://raw.githubusercontent.com/MX-Master/linuxcnc/trivkins_adjust/src/emc/kinematics/relkins.c
- собрать исходник в модуль и установить его в систему
Код: Выделить всё
sudo halcompile --install 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
- Argon-11
- Мастер
- Сообщения: 2067
- Зарегистрирован: 07 июн 2017, 17:48
- Репутация: 461
- Контактная информация:
Re: Программная коррекция кривизны портала
А сделай видео с взаимной X-Y компенсацией!
Правда как отклонения на экране смотреть, если только 3 строки?
Правда как отклонения на экране смотреть, если только 3 строки?
- MX_Master
- Мастер
- Сообщения: 7476
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Программная коррекция кривизны портала
https://youtu.be/D94QUEStfjAArgon-11 писал(а):А сделай видео с взаимной X-Y компенсацией!
Правда как отклонения на экране смотреть, если только 3 строки?
- Argon-11
- Мастер
- Сообщения: 2067
- Зарегистрирован: 07 июн 2017, 17:48
- Репутация: 461
- Контактная информация:
Re: Программная коррекция кривизны портала
Пока не въехал, но кажется странным, что в предыдущем видео в world mode на экране меняется только координата текущего перемещения, а здесь - обе.
Сделай еще, плиз, диагональное перемещение 0,0 -> 5,5...
и еще в относительных координатах бы увидеть эти же перемещения. По идее кривулины не должны быть одинаковы, т.е. смещение по координатам должно учитываться.
Сделай еще, плиз, диагональное перемещение 0,0 -> 5,5...
и еще в относительных координатах бы увидеть эти же перемещения. По идее кривулины не должны быть одинаковы, т.е. смещение по координатам должно учитываться.
- MX_Master
- Мастер
- Сообщения: 7476
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Программная коррекция кривизны портала
В режиме MDI/AUTO траекторию будет рисовать ровную, как будто коррекции нет. В режиме JOG показывает траекторию с коррекцией, но стартануть руками одновременно две оси в режиме JOG это тот ещё трюк. Так что, верь на слово
Будет что-то типа этого (по шагам), и ровная линия в реальности. Но лучше самостоятельно в симуляции посидеть минут 10-20, тогда будет всё понятно.
Будет что-то типа этого (по шагам), и ровная линия в реальности. Но лучше самостоятельно в симуляции посидеть минут 10-20, тогда будет всё понятно.
- Вложения
-
- relkins1.png (2.97 КБ) 2948 просмотров
- Chertegnik
- Кандидат
- Сообщения: 50
- Зарегистрирован: 07 авг 2016, 03:59
- Репутация: 3
- Настоящее имя: Максим
- Откуда: Новосибирск
- Контактная информация:
Re: Программная коррекция кривизны портала
В версии 2.7.14 все работает, но у меня обновление 2.8 и прога не запускается из-за ошибки. Подскажите, в чем дело...
- Вложения
-
- test.hal
- (3.77 КБ) 642 скачивания
-
- test.ini
- (2.28 КБ) 658 скачиваний
-
- error.txt
- (32.5 КБ) 679 скачиваний
«Точно знают, только когда мало знают. Вместе со знанием растет сомнение». Иоганн Вольфганг Гете