Программная коррекция кривизны портала

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Программная коррекция кривизны портала

Сообщение Serg »

Если ты решил обидиться, то зря. Я всегда за хорошие и полезные средства и продукты и с удовольствием понатыкаю тебе плюсов за решение, которое будет настолько лучше имеющихся, чтобы ради него рисковать отступлением от официальной версии.
Но прежде чем браться за него рекомендую внимательно изучить уже имеющиеся решения и хорошенько продумать своё.

P.S. В среде UNIX и FSF есть такая рекомендация: прежде чем начинать писать удобную и полезную программу оглянись вокруг - наверняка её уже написали. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Программная коррекция кривизны портала

Сообщение 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
Ну, как, Сергей, падёт? :hottabych:
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Программная коррекция кривизны портала

Сообщение Serg »

Самый простой способ:
в качестве параметра нужно задавать количество точек коррекции по каждой оси, например так:
loadrt ....... axis=20,20,10
т.е. по осям X и Y по 20 точек, по оси Z 10 точек. На основании этой информации компонент сформирует соотв. набор пинов, которым надо будет присвоить соотв. значения с помощью setp. Все эти присвоения можно вынести в отдельный HAL-файл, а сам HAL-файл при желании можно будет автоматически генерить из таблицы как в #36.
Плюс такого способа (набор пинов) в том, что коррекцию можно будет менять "на лету" и даже с помощью контактного датчика и эталонной линейки автоматически измерять погрешности и настраивать коррекции.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Программная коррекция кривизны портала

Сообщение MX_Master »

Сергей, я понимаю, что надо сразу делать по-большому и с заделом на будущее. Но очередь предполагаемых пользователей, с контактными датчиками и пинами "на лету", состоит только из одного человека. Никто другой не изъявил такого желания. Все остальные зашли сюда с данными, взятыми с часовых индикаторов и линеек. И никому, в том числе и мне, этот обширный функционал модуля кинематики не интересен. Потому что каждому из нас надо просто решить вопрос. Когда соберётся достаточно много желающих плавающей кинематики, вот тогда и будем её делать. А в этой теме просьба была только одна - про статичную коррекцию.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Программная коррекция кривизны портала

Сообщение Serg »

MX_Master писал(а):А в этой теме просьба была только одна - про статичную коррекцию.
Мой вариант её никоим образом не исключает и не ухудшает.
И не имеет ограничения на длину строки. :) Моя личная практика показывает, что такая коррекция будет более востребована на больших станках, где количество точек коррекции достаточно велико.
Но дело хозяйское...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Программная коррекция кривизны портала

Сообщение nkp »

тут вроде был уже выложен первый результат ...
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Программная коррекция кривизны портала

Сообщение 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
Последний раз редактировалось MX_Master 02 сен 2018, 19:02, всего редактировалось 2 раза.
Аватара пользователя
Argon-11
Мастер
Сообщения: 2064
Зарегистрирован: 07 июн 2017, 17:48
Репутация: 461
Контактная информация:

Re: Программная коррекция кривизны портала

Сообщение Argon-11 »

Как задать Y(X) в целом понятно, но как оно внутри работает?
Я так понимаю, софт должен добавлять шаги по X в ту или другую сторону, при этом не меняя самой координаты X, верно?
Т.е. после задания характеристики Y(X в миллиметрах) софт должен пересчитать ее в характеристику Y(X в шагах с учетом направления). Так делается или как-то иначе?
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Программная коррекция кривизны портала

Сообщение MX_Master »

По результатам тестов:
  • в JOG режиме - показывает отклонение
  • в AUTO/MDI режиме - корректирует
На данный момент не могу придумать как лучше указывать корректировку для отрицательных значений. Второе, что ещё не придумал, как организовать корректировку одной оси в зависимости от нескольких (типа Z от XY).
Аватара пользователя
Argon-11
Мастер
Сообщения: 2064
Зарегистрирован: 07 июн 2017, 17:48
Репутация: 461
Контактная информация:

Re: Программная коррекция кривизны портала

Сообщение Argon-11 »

MX_Master писал(а):Второе, что ещё не придумал
вообще-то есть еще неясность - как сделать взаимную коррекцию двух осей. Как будет работать коррекция при диагональном перемещении в плоскости XY?
Я почему и завел разговор про пересчет дельт миллиметров в шаги с направлением. Мне кажется, либо оно так делается с коррекцией на лету, либо LinuxCNC после загрузки G-кода производит единоразовый пересчет всей траектории в трехмерном поле. Интересно было бы выяснить...
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Программная коррекция кривизны портала

Сообщение 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
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Программная коррекция кривизны портала

Сообщение MX_Master »

Автор темы мне намекнул, что для LinuxCNC компонент не собирается из исходника. А я и сам забыл, что писать RT компоненты для LinuxCNC надо слегка по-другому. Вышеуказанные примеры будут работать только под Machinekit. Для LinuxCNC с правками выложу чуть позже.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Программная коррекция кривизны портала

Сообщение MX_Master »

Всё-таки, под Machinekit, uspace и RT-PREEMPT писать RT компоненты будет по-проще. Полно пользовательских функций. А вот в RTAI - полный kernel space.

Подправил исходники. Успешно собирается под LinuxCNC (RTAI). Но `ядрёные` функции по работе со строками функциклируют явно не так как `пользовательские`. Вощем, буду разбираться. О новостях сообщу.

:hottabych:
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Программная коррекция кривизны портала

Сообщение 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
  • собрать исходник в модуль и установить его в систему

    Код: Выделить всё

    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
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Программная коррекция кривизны портала

Сообщение MX_Master »

И небольшое видео как это работает

https://youtu.be/cN4xvYZVYbo
Аватара пользователя
Argon-11
Мастер
Сообщения: 2064
Зарегистрирован: 07 июн 2017, 17:48
Репутация: 461
Контактная информация:

Re: Программная коррекция кривизны портала

Сообщение Argon-11 »

А сделай видео с взаимной X-Y компенсацией!
Правда как отклонения на экране смотреть, если только 3 строки?
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Программная коррекция кривизны портала

Сообщение MX_Master »

Argon-11 писал(а):А сделай видео с взаимной X-Y компенсацией!
Правда как отклонения на экране смотреть, если только 3 строки?
https://youtu.be/D94QUEStfjA
Аватара пользователя
Argon-11
Мастер
Сообщения: 2064
Зарегистрирован: 07 июн 2017, 17:48
Репутация: 461
Контактная информация:

Re: Программная коррекция кривизны портала

Сообщение Argon-11 »

Пока не въехал, но кажется странным, что в предыдущем видео в world mode на экране меняется только координата текущего перемещения, а здесь - обе.

Сделай еще, плиз, диагональное перемещение 0,0 -> 5,5...
и еще в относительных координатах бы увидеть эти же перемещения. По идее кривулины не должны быть одинаковы, т.е. смещение по координатам должно учитываться.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Программная коррекция кривизны портала

Сообщение MX_Master »

В режиме MDI/AUTO траекторию будет рисовать ровную, как будто коррекции нет. В режиме JOG показывает траекторию с коррекцией, но стартануть руками одновременно две оси в режиме JOG это тот ещё трюк. Так что, верь на слово :hottabych:

Будет что-то типа этого (по шагам), и ровная линия в реальности. Но лучше самостоятельно в симуляции посидеть минут 10-20, тогда будет всё понятно.
Вложения
relkins1.png
relkins1.png (2.97 КБ) 2859 просмотров
Аватара пользователя
Chertegnik
Кандидат
Сообщения: 50
Зарегистрирован: 07 авг 2016, 03:59
Репутация: 3
Настоящее имя: Максим
Откуда: Новосибирск
Контактная информация:

Re: Программная коррекция кривизны портала

Сообщение Chertegnik »

В версии 2.7.14 все работает, но у меня обновление 2.8 и прога не запускается из-за ошибки. Подскажите, в чем дело...
Вложения
test.hal
(3.77 КБ) 641 скачивание
test.ini
(2.28 КБ) 657 скачиваний
error.txt
(32.5 КБ) 678 скачиваний
«Точно знают, только когда мало знают. Вместе со знанием растет сомнение». Иоганн Вольфганг Гете
Ответить

Вернуться в «LinuxCNC»