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

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

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

Сообщение MX_Master »

Chertegnik писал(а):В версии 2.7.14 все работает, но у меня обновление 2.8 и прога не запускается из-за ошибки. Подскажите, в чем дело...
Ну, во-первых, надо сделать так

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

#loadrt [KINS]KINEMATICS
loadrt relkins steps=11 step_size=100 rel_axis=Y
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
Об этом говорит

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

[ 1476.583637] relkins: exports duplicate symbol kinematicsForward (owned by trivkins)
Вторая ошибка

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

Debug file information:
Error: could not insert module /usr/realtime-3.4-9-rtai-686-pae/modules/linuxcnc/relkins.ko: Invalid module format
./test.hal:6: exit value: 1
./test.hal:6: insmod for relkins failed, returned -1
скорее всего говорит, что модуль собран на исходниках от другой версии ядра
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

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

Сообщение MX_Master »

Chertegnik писал(а):В версии 2.7.14 все работает, но у меня обновление 2.8 и прога не запускается из-за ошибки. Подскажите, в чем дело...
А покажи вывод команд:

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

uname -a
sudo halcompile --install relkins.c
Аватара пользователя
Chertegnik
Кандидат
Сообщения: 50
Зарегистрирован: 07 авг 2016, 03:59
Репутация: 3
Настоящее имя: Максим
Откуда: Новосибирск
Контактная информация:

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

Сообщение Chertegnik »

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

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

Сообщение MX_Master »

А у меня все ещё есть несколько задач, которые хотелось бы воплотить:
  1. Более понятные названия для HAL пинов.
  2. Возможность указать начало диапазона коррекции.
  3. Коррекция в отрицательном диапазоне чисел.
  4. Коррекция оси от положения двух других осей (коррекция плоскости).
Ниже будет пример конфигурации, которая включает в себя все эти хотелки.

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

loadrt relkins steps=7,5,5 step_size=100,50,10 start=-300,500,0 dep=Y,X,XY

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

setp    relkins.adjX.whenY-300  0.01
setp    relkins.adjX.whenY-200  0.05
setp    relkins.adjX.whenY-100  0.07
setp    relkins.adjX.whenY0     0.09
setp    relkins.adjX.whenY100   0.07
setp    relkins.adjX.whenY200   0.05
setp    relkins.adjX.whenY300   0.01

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

setp    relkins.adjY.whenX500   0.01
setp    relkins.adjY.whenX550   -0.01
setp    relkins.adjY.whenX600   -0.02
setp    relkins.adjY.whenX650   -0.01
setp    relkins.adjY.whenX700   0.01

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

setp    relkins.adjZ.whenX0Y0     0.0
setp    relkins.adjZ.whenX0Y10    0.0
setp    relkins.adjZ.whenX0Y20    0.0
setp    relkins.adjZ.whenX0Y30    0.0
setp    relkins.adjZ.whenX0Y40    0.0

setp    relkins.adjZ.whenX10Y0    0.0
setp    relkins.adjZ.whenX10Y10   0.0
setp    relkins.adjZ.whenX10Y20   0.0
setp    relkins.adjZ.whenX10Y30   0.0
setp    relkins.adjZ.whenX10Y40   0.0

setp    relkins.adjZ.whenX20Y0    0.0
setp    relkins.adjZ.whenX20Y10   0.0
setp    relkins.adjZ.whenX20Y20   0.0
setp    relkins.adjZ.whenX20Y30   0.0
setp    relkins.adjZ.whenX20Y40   0.0

setp    relkins.adjZ.whenX30Y0    0.0
setp    relkins.adjZ.whenX30Y10   0.0
setp    relkins.adjZ.whenX30Y20   0.0
setp    relkins.adjZ.whenX30Y30   0.0
setp    relkins.adjZ.whenX30Y40   0.0

setp    relkins.adjZ.whenX40Y0    0.0
setp    relkins.adjZ.whenX40Y10   0.0
setp    relkins.adjZ.whenX40Y20   0.0
setp    relkins.adjZ.whenX40Y30   0.0
setp    relkins.adjZ.whenX40Y40   0.0
Последний раз редактировалось MX_Master 07 сен 2018, 06:18, всего редактировалось 1 раз.
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

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

Сообщение Lexxa »

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

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

Сообщение MX_Master »

Lexxa писал(а):А как работает если спараметрирован люфт в швп?
Ну, во-первых, если на станке есть кривые оси и люфты в приводах - должно быть немного стыдно :)
А, во-вторых, я проверил - компенсация люфта и коррекция линейности в паре не работают.

Компенсация люфта - это какая-то интимная операция между планировщиком и генератором шагов, без участия кинематики. Если кто-то хочет исправить оба косяка механики, придётся вместо кинематики самостоятельно написать модуль, работающий посредником между планировщиком и генератором шагов. Или исправить косяки механики :headphones:
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

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

Сообщение Lexxa »

Ну люфты есть всегда...
:bender:
Аватара пользователя
Chertegnik
Кандидат
Сообщения: 50
Зарегистрирован: 07 авг 2016, 03:59
Репутация: 3
Настоящее имя: Максим
Откуда: Новосибирск
Контактная информация:

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

Сообщение Chertegnik »

Добавил модуль на реальный станок. Модуль работает, но возникла следующая проблема: станок конфигурации X1YZX2, т.е. с зависимой осью. Станок хомится нормально, при попытке сдвинуть его по оси Х (клавиатурой или пультом) перекашивается, встает и уходит в ошибку, так как работает всего один мотор, а зависимая ось А (Х2) стоит на месте. Ось Y когда доезжает до точек корректировки отличных от 0 также перекашивает портал, так как включается всего один мотор на оси Х. :thinking:
«Точно знают, только когда мало знают. Вместе со знанием растет сомнение». Иоганн Вольфганг Гете
Аватара пользователя
Chertegnik
Кандидат
Сообщения: 50
Зарегистрирован: 07 авг 2016, 03:59
Репутация: 3
Настоящее имя: Максим
Откуда: Новосибирск
Контактная информация:

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

Сообщение Chertegnik »

потестил на втором станке без зависимых осей на версии 2.7.3. В отличии от версии 2.8 никакой реакции. На экране он показывает, что идет коррекция, но физически ничего не происходит. :wtf:
«Точно знают, только когда мало знают. Вместе со знанием растет сомнение». Иоганн Вольфганг Гете
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

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

Сообщение MX_Master »

Если от ведомой оси X2 (A) корректировка тоже зависит, то для неё надо сделать такие же настройки коррекции как для X1. Я сам на конфиге с ведомой осью (тем более под 2.8) не тестировал. На конфиге с пультом тоже не пробовал. В зависимости от настроек может быть всякое.

Чтобы не тыкать пальцем в небо, надо разобраться по порядку. Для начала давайте рассмотрим конфиг станка, на котором всё это будет работать. Конфиг в студию.
a321
Мастер
Сообщения: 563
Зарегистрирован: 03 дек 2016, 00:30
Репутация: 65
Контактная информация:

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

Сообщение a321 »

Я в итоге так и не понял, вот такое решение, предложенное на второй странице топика -
MX_Master писал(а):[AXIS_0]
ADJUST_TABLE=X200:Y0.06,X300:Y0.08,X400:Y0.1,X500:Y0.15,X600:Y0.13,Y0.1:X700,X800:Y0.08,X900:Y0.06
оно не работает или чем плохо? Или варианты такие -

а) варант простой, читай почти одномерной коррекции (коррекция координаты У в зависимости от координаты Х) и числом точек коррекции не более (?) 20 = правим конфиг станка, добавляя в настройку выбранной оси строку вида
[AXIS_0]
ADJUST_TABLE=X200:Y0.06,X300:Y0.08,X400:Y0.1,X500:Y0.15,X600:Y0.13,Y0.1:X700,X800:Y0.08,X900:Y0.06

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

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

Сообщение MX_Master »

Сегодня буду пробовать коррекцию Z на своём станке по дереву. Замерил вчера (индикатором) отклонения по высоте с шагом 100мм. На 1500мм получилась вот такая таблица:

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

0	1	4	11	11	12	10	3	3	0	2	4	2	3	6	-4
Значения указаны в сотках (0.01мм). По деревяхам такая точность за глаза. Но мне нужно шлифануть на этом станке пару стальных посадочных поверхностей шириной 40мм под рельс 20мм. Готовлю стальную замену фанерным деталям. И коррекция тут как раз пригодится.

Проверять будут на версии 2.7.8. Для начала вобью в корректировку таблицу с разбросом до 5мм. Чтобы даже на глаз можно было оценить коррекцию по высоте. О результатах отпишусь.
Аватара пользователя
Chertegnik
Кандидат
Сообщения: 50
Зарегистрирован: 07 авг 2016, 03:59
Репутация: 3
Настоящее имя: Максим
Откуда: Новосибирск
Контактная информация:

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

Сообщение Chertegnik »

Текущая конфигурация.
Вложения
config.tar.gz
(4.54 КБ) 702 скачивания
«Точно знают, только когда мало знают. Вместе со знанием растет сомнение». Иоганн Вольфганг Гете
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

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

Сообщение MX_Master »

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

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

Сообщение MX_Master »

Думаю, проблема начинается здесь

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

[KINS]
KINEMATICS = trivkins coordinates=XYZXU

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

loadrt [KINS]KINEMATICS
coordinates=XYZXU меняет соответствие осей (axis) и моторов (joint). Этот функционал был добавлен в стандартный модуль с версии 2.8. У меня в модуле такого функционала нет, т.к. я брал за основу стандартный модуль от 2.7.

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

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

Сообщение MX_Master »

Добавил в модуль новый функционал для соответствия версии 2.8+ (RTAI).
Теперь модуль должен работать и в 2.7, и в 2.8.

в INI файле указываем что-то типа

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

[KINS]
#KINEMATICS = trivkins coordinates=XYZXU
KINEMATICS = relkins coordinates=XYZXU steps=20 step_size=100 rel_axis=Y
в HAL файле

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

loadrt [KINS]KINEMATICS

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

setp relkins.X.0 0.0
setp relkins.X.1 0.0
setp relkins.X.2 0.06
setp relkins.X.3 0.08
setp relkins.X.4 0.1
setp relkins.X.5 0.15
setp relkins.X.6 0.13
setp relkins.X.7 0.1
setp relkins.X.8 0.08
setp relkins.X.9 0.06
setp relkins.X.10 0.0
Аватара пользователя
Chertegnik
Кандидат
Сообщения: 50
Зарегистрирован: 07 авг 2016, 03:59
Репутация: 3
Настоящее имя: Максим
Откуда: Новосибирск
Контактная информация:

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

Сообщение Chertegnik »

а для 2 осей будет работать, если прописать KINEMATICS = relkins coordinates=XYZXU steps=20,20 step_size=100,100 rel_axis=Y,X ?
«Точно знают, только когда мало знают. Вместе со знанием растет сомнение». Иоганн Вольфганг Гете
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

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

Сообщение MX_Master »

Для начала надо проверить вариант с одной осью. Потому что я человек и могу ошибаться. По идее, сейчас оба мотора на оси должны работать исправно. Но у меня, есть сомнения по поводу коррекции позиции второго мотора на оси. В коде уровень логики увеличился настолько, что я не сразу могу в голове представить все связи.
Аватара пользователя
Chertegnik
Кандидат
Сообщения: 50
Зарегистрирован: 07 авг 2016, 03:59
Репутация: 3
Настоящее имя: Максим
Откуда: Новосибирск
Контактная информация:

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

Сообщение Chertegnik »

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

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

Сообщение MX_Master »

Пример коррекции для двух моторов по оси X в зависимости от позиции Y:

в INI файле

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

[KINS]
#KINEMATICS = trivkins coordinates=XYZXU
KINEMATICS = relkins coordinates=XYZXU steps=11,0,0,11 step_size=100,0,0,100 rel_axis=Y,0,0,Y
в HAL файле

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

loadrt [KINS]KINEMATICS

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

setp relkins.X.0 0.0
setp relkins.X.1 0.0
setp relkins.X.2 0.06
setp relkins.X.3 0.08
setp relkins.X.4 0.1
setp relkins.X.5 0.15
setp relkins.X.6 0.13
setp relkins.X.7 0.1
setp relkins.X.8 0.08
setp relkins.X.9 0.06
setp relkins.X.10 0.0

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

setp relkins.A.0 0.0
setp relkins.A.1 0.0
setp relkins.A.2 0.06
setp relkins.A.3 0.08
setp relkins.A.4 0.1
setp relkins.A.5 0.15
setp relkins.A.6 0.13
setp relkins.A.7 0.1
setp relkins.A.8 0.08
setp relkins.A.9 0.06
setp relkins.A.10 0.0
Ответить

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