Страница 4 из 7

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

Добавлено: 05 сен 2018, 15:15
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
скорее всего говорит, что модуль собран на исходниках от другой версии ядра

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

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

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

uname -a
sudo halcompile --install relkins.c

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

Добавлено: 05 сен 2018, 15:52
Chertegnik
На виртуалке заработало. В выходные попробую на железе. Благодарю!

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

Добавлено: 05 сен 2018, 18:55
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

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

Добавлено: 06 сен 2018, 01:59
Lexxa
MX_Master писал(а):И небольшое видео как это работает
А как работает если спараметрирован люфт в швп?

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

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

Компенсация люфта - это какая-то интимная операция между планировщиком и генератором шагов, без участия кинематики. Если кто-то хочет исправить оба косяка механики, придётся вместо кинематики самостоятельно написать модуль, работающий посредником между планировщиком и генератором шагов. Или исправить косяки механики :headphones:

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

Добавлено: 06 сен 2018, 09:03
Lexxa
Ну люфты есть всегда...

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

Добавлено: 08 сен 2018, 14:20
Chertegnik
Добавил модуль на реальный станок. Модуль работает, но возникла следующая проблема: станок конфигурации X1YZX2, т.е. с зависимой осью. Станок хомится нормально, при попытке сдвинуть его по оси Х (клавиатурой или пультом) перекашивается, встает и уходит в ошибку, так как работает всего один мотор, а зависимая ось А (Х2) стоит на месте. Ось Y когда доезжает до точек корректировки отличных от 0 также перекашивает портал, так как включается всего один мотор на оси Х. :thinking:

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

Добавлено: 08 сен 2018, 17:07
Chertegnik
потестил на втором станке без зависимых осей на версии 2.7.3. В отличии от версии 2.8 никакой реакции. На экране он показывает, что идет коррекция, но физически ничего не происходит. :wtf:

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

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

Чтобы не тыкать пальцем в небо, надо разобраться по порядку. Для начала давайте рассмотрим конфиг станка, на котором всё это будет работать. Конфиг в студию.

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

Добавлено: 09 сен 2018, 13:07
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

б) вариант сложный, когда заморачиваемся с трехмерной коррекцией, все оси влияют на все оси - здесь хотелось бы тоже описание, собранное в хаутушку.

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

Добавлено: 10 сен 2018, 09:03
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мм. Чтобы даже на глаз можно было оценить коррекцию по высоте. О результатах отпишусь.

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

Добавлено: 10 сен 2018, 14:33
Chertegnik
Текущая конфигурация.

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

Добавлено: 10 сен 2018, 14:35
MX_Master
Проверил коррекцию на своём станке. Нашёл пару косяков в расчётах кинематики. Исправил.
Вбил в свой конфиг вышеуказанную таблицу. Проверил всё по индикатору - коррекция работает как положено.
Версия 2.7.8.
Chertegnik писал(а):Текущая конфигурация.
Ща гляну чё там как..

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

Добавлено: 10 сен 2018, 14:58
MX_Master
Думаю, проблема начинается здесь

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

[KINS]
KINEMATICS = trivkins coordinates=XYZXU

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

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

Задача понятна и решаема. Займусь этим, скорее всего, завтра.
Сегодня я реально пересидел лишнего за компом. Даже зрение упало.

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

Добавлено: 11 сен 2018, 08:45
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

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

Добавлено: 11 сен 2018, 09:11
Chertegnik
а для 2 осей будет работать, если прописать KINEMATICS = relkins coordinates=XYZXU steps=20,20 step_size=100,100 rel_axis=Y,X ?

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

Добавлено: 11 сен 2018, 09:32
MX_Master
Для начала надо проверить вариант с одной осью. Потому что я человек и могу ошибаться. По идее, сейчас оба мотора на оси должны работать исправно. Но у меня, есть сомнения по поводу коррекции позиции второго мотора на оси. В коде уровень логики увеличился настолько, что я не сразу могу в голове представить все связи.

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

Добавлено: 11 сен 2018, 09:39
Chertegnik
пропишу таблицу коррекции и для зависимой оси, если что. Постараюсь сегодня потестить.

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

Добавлено: 12 сен 2018, 12:40
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