roboforum.ru

Технический форум по робототехнике.
Текущее время: 24 апр 2025, 01:28

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Автоуровень кровати: алгоритм с компенсацией кривизны
СообщениеДобавлено: 14 июл 2015, 19:20 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10990
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
я вчера до 3 ночи черепил по этому вопросу, пилил прошивку марлина.
тут есть над чем подумать и посоветоваться.
сейчас не проблема получить матрицу параметров контрольных точек стола.
не проблема построить усредненную плоскость которая будет пересекать всю поверхность стола, и привести к ней виртуальное "скомпенсированное" пространство.
вот только усредненная плоскость в некоторых местах отходит от стола на значительное расстояние, а в некоторых перекрывает сопло, так что пластик не выдавить.

можно поднять расстояние немного от стола, тогда не будет перекрытия, но и удаленные точки станут еще дальше.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоуровень кровати: ёмкостной датчик расстояния
СообщениеДобавлено: 14 июл 2015, 20:06 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
Цитата:
можно попытаться сделать кривую поверхность которая точно прилегает к столу, но беда в том что у нее в каждой точке своя нормаль и вертикальные и параллельные стенки модели перестанут быть таковыми.

...если только ты не напечатаешь плоскость на кривом столе до того, как печатать модель

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоуровень кровати: ёмкостной датчик расстояния
СообщениеДобавлено: 15 июл 2015, 00:22 
Не в сети
Аватара пользователя

Зарегистрирован: 08 авг 2012, 00:38
Сообщения: 1129
Откуда: Нидерланды, Алмере
Skype: edwbes
ФИО: Эдуард
setar писал(а):
можно попытаться сделать кривую поверхность которая точно прилегает к столу, но беда в том что у нее в каждой точке своя нормаль и вертикальные и параллельные стенки модели перестанут быть таковыми

dccharacter писал(а):
...если только ты не напечатаешь плоскость на кривом столе до того, как печатать модель

Мне видится следующий вариант - постепенная компенсация кривизны. Скажем толщина слоя 0.25мм Тогда за один слой мы можем компенсировать, скажем, 0.1мм
Т.е. мы печатаем по кривой поверхности, но там где она выпирает, мы хотендом размазываем на 0.1мм ниже и тем самым после первого слоя перепад уменьшится. И т.д. - за 10 слоев мы можем компенсировать целый мм.
Представьте себе геодезические линии. Это вот наша кривая поверхность.
Вложение:
topomap.jpg
topomap.jpg [ 374.36 КиБ | Просмотров: 2755 ]
Мы как бы на каждом слое вдавливаем вершины нашей поверхности и постепенно выводим её в ноль.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоуровень кровати: ёмкостной датчик расстояния
СообщениеДобавлено: 15 июл 2015, 10:31 
Не в сети

Зарегистрирован: 13 мар 2013, 14:31
Сообщения: 207
Откуда: Химки
Для Cartesian принтеров добавляется еще одна точка кривизны - прогиб направляющих. И в центре каждой оси прогиб направляющих может быть интерпретирован датчиком автоуровня как кривизна стола. По хорошему, прогибы тоже нужно как-то измерять и учитывать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоуровень кровати: алгоритм с компенсацией кривизны
СообщениеДобавлено: 15 июл 2015, 13:25 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10990
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
Давайте о терминах договоримся - удобнее будет обсуждать.

реальные координаты XYZ - базовые без использования математики автоуровня, доступны для вычисления через число шагов * коэфициент мм/шаг

результаты замера стола в прошивке хранятся так:
eqnBVector[probePointCounter] = measured_z;
eqnAMatrix[probePointCounter + 0 * abl2] = xProbe;
eqnAMatrix[probePointCounter + 1 * abl2] = yProbe;
eqnAMatrix[probePointCounter + 2 * abl2] = 1;
где:
probePointCounter - порядковый номер точки замера. Нумеруется от 0,0 слева направо, затем линия выше на один шаг тоже слева направо и т.д.
abl2 - количество точек замера (квадрат числа точек по одной стороне)

базовая плоскость (plan_bed_level_matrix) - плоскость построенная как средняя проходящая по массиву точек снятых с реальной поверхности стола. Может содержать как отрицательные значения относительно реальной поверхности так и положительные (может "углублять" сопло в стол и печатать в воздухе)

нулевая плоскость - плоскость идеально ровного стола, все точки Z стола в реальных координатах равны нулю

скомпенсированная плоскость - плоскость находящаяся выше базовой на расстоянии достаточном для постепенной компенсации неровностей кровати. выше ее расстояния реальны (1мм=1мм), а ниже расстояния скомпенсированны таким образом чтобы сопло дошло до реального стола. Например скомпенсированная плоскость находится на высоте 1мм от базовой, и в этой точке до стола 1.2 мм, значит для линейных перемещений будет применяться коэфициент 1.2 и перемещение на 0.1мм будет преобразовано в 0.12 реального перемещения.

повернутые координаты X'Y'Z' - координаты получаемые для точки модели XYZ приложением матрицы поворота относительно базовой плоскости apply_rotation_xyz(plan_bed_level_matrix, x, y, z); показывают в какой точке реальных координат будет находиться модель стоящая на базовой плоскости

я тоже думал про постепенную компенсацию на первых слоях миллиметрах (прошивка про слои ничего не знает)
для анализа минимальной необходимой высоты для первого плоского уровня есть информация о кривизне кровати,
но нету информации о диаметре сопла, чтобы вычислить какой может быть слой.
А вот нужно ли знать диаметр сопла чтобы рассчитать компенсацию ?
Ведь по идее можно компенсировать линейное расстояние на какой то процент , например 10 или 20.
Тогда при неровности кровати в 1мм (расстояние между максимальной и минимальной точкой относительно базовой плоскости)
для 10% на скомпенсированную плоскость можно выйти через 10мм а при 20% через 5 мм.
И соответственно для слоя 0.2
10% ,будет давать разброс в реальных координатах от 0.18 до 0.22, и выход на линейные размеры через 50 слоев (10мм)
20% ,даст разброс от 0.16 до 0.24 и выход на линейные размеры через 25 слоев (5мм)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоуровень кровати: алгоритм с компенсацией кривизны
СообщениеДобавлено: 15 июл 2015, 21:58 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
А слабо замерить кривизну реального стола и выложить поверхность тут?

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоуровень кровати: алгоритм с компенсацией кривизны
СообщениеДобавлено: 15 июл 2015, 22:13 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10990
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
минуту назад этим занимался:
Код:
G29 Auto Bed Leveling
Measured zPosition=-0.14861
Measured zPosition=-0.15181
Bed X: 5.000 Y: 5.000 Z: 0.100 FSR: 990
Measured zPosition=0.17705
Measured zPosition=0.18552
Bed X: 187.000 Y: 5.000 Z: 0.431 FSR: 986
Measured zPosition=-0.56068
Measured zPosition=-0.55761
Bed X: 369.000 Y: 5.000 Z: -0.309 FSR: 991
Measured zPosition=-0.33449
Measured zPosition=-0.32541
Bed X: 5.000 Y: 145.000 Z: -0.080 FSR: 995
Measured zPosition=-0.16159
Measured zPosition=-0.12650
Bed X: 187.000 Y: 145.000 Z: 0.106 FSR: 991
Measured zPosition=-0.54780
Measured zPosition=-0.52345
Bed X: 369.000 Y: 145.000 Z: -0.286 FSR: 993
Measured zPosition=-1.03071
Measured zPosition=-1.01365
Bed X: 5.000 Y: 285.000 Z: -0.772 FSR: 994
Measured zPosition=-0.40510
Measured zPosition=-0.39202
Bed X: 187.000 Y: 285.000 Z: -0.149 FSR: 991
Measured zPosition=-0.83164
Measured zPosition=-0.82368
Bed X: 369.000 Y: 285.000 Z: -0.578 FSR: 993
Eqn coefficients: a: -0.00038470 b: -0.00204801 d: 0.19822214
Mean of sampled points: -0.17067751

Bed Height Topography:
+-----------+
|...Back....|
|Left..Right|
|...Front...|
+-----------+
-0.60150 +0.02212 -0.40698
+0.09073 +0.27663 -0.11495
+0.27047 +0.60196 -0.13847

Corrected Bed Height vs. Bed Topology:
-0.17068 +0.45294 +0.02384
+0.52155 +0.70746 +0.31588
+0.70129 +1.03278 +0.29236
planeNormal x: 0.000385 y: 0.002048 z: 1.000000

Bed Level Correction Matrix:
+1.000000 +0.000000 -0.000385
-0.000001 +0.999998 -0.002048
+0.000385 +0.002048 +0.999998


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоуровень кровати: алгоритм с компенсацией кривизны
СообщениеДобавлено: 15 июл 2015, 23:11 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
То есть у тебя разница в 3-4 слоя по всей площади стола?

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоуровень кровати: алгоритм с компенсацией кривизны
СообщениеДобавлено: 15 июл 2015, 23:17 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10990
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
да,
учитывая что стол большой (400x300) и совсем нерегулируемый, это обычный факт.
потому автоуровень и пилю


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоуровень кровати: алгоритм с компенсацией кривизны
СообщениеДобавлено: 15 июл 2015, 23:52 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
Ничего мне в голову не приходит, кроме как постепенного зажатия слоя в местах выпуклостей.
Т.е. инструмент идет над волнистой поверхностью - в ямах на обычной высоте, на выпуклостях почти впритир, размазывая филамент по столу.

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоуровень кровати: алгоритм с компенсацией кривизны
СообщениеДобавлено: 16 июл 2015, 01:30 
Не в сети
Аватара пользователя

Зарегистрирован: 30 апр 2012, 20:03
Сообщения: 2044
Откуда: Архангельск
Skype: om2804
прог. языки: С/С++/C#
Без движения 3х осей одновременно ничего не выйдет хорошего. Так как, грубо говоря, нам нужно огибать все неровности поверхности.
Зависание по XY и поднимание/опускание головы займёт. А это подтёки и обрывы нити


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоуровень кровати: алгоритм с компенсацией кривизны
СообщениеДобавлено: 16 июл 2015, 01:40 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10990
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
никаких подтеков и обрывов, движение по Z очень мелкое и работает уже сейчас

Добавлено спустя 25 секунд:
допилю - сниму видео


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоуровень кровати: алгоритм с компенсацией кривизны
СообщениеДобавлено: 16 июл 2015, 10:45 
Не в сети
Аватара пользователя

Зарегистрирован: 23 янв 2014, 01:13
Сообщения: 603
Откуда: Украина. Киев.
Skype: kiev_3dprinter
ФИО: Печать трехмерная
немного отсебятины...
Для начала алгоритм должен отталкиватся от верхней точки, не допуская знакомства сопла с поверхностью стола.
Раз прошивка не знает о слоях, значит нужно отталкиваться от максимальной разницы между верхней и нижней точкой платформы.
замеряем эту разницу, добавляем 100 микрон и получаем ту высоту в пределах которой стоит делать корректировку
Данную высоту считаем шагами оси зет. После достижения нужно количество шагов корректировку стоит отключать дабы не искажать изделие.
Сама корректировка - это алгоритм увеличения/уменьшения подачи пластика. То есть вводим коэффициент на количество шагов экструдера. Играем в пределах 30-170%. В местах впадин опускаем зет на стандартный зазор (например 200 микрон или процент от чего-то) от нуля умноженный на 2 и давим 170% пластика. В местах холмов наоборот. Уменьшаем стандартный зазор на 50% и давим 30% пластика.
Как дошли до верхней точки + 100 микрон прекращаем вносить поправки в G-code

--------------------------------------------------------------
Альтернативный вариант - ровнять поверхность под объектом. Строим ровный фундамент под деталью. Для этого циклично повторяем первый слой пока не выравняем поверхность. При каждом повторении давим больше во впадинах, меньше в выемках и так пока ось зет не поднимется до верхней точки. Первым слоем считаем G-code пока ось Z не сместится вниз. Как только в коде видим команду на смещение вниз идем на второй круг. Когда произведем выравнивание поверхности запускаем код заново уже без поправок считая нулем верхнюю точку платформы. В итоге объект строится красиво и без искажений.

Все это ИМХО конечно.

_________________
http://3DPrinter.ua - купить 3D принтер, в Украине. Заказать 3D печать. ABS, PLA пластик.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоуровень кровати: алгоритм с компенсацией кривизны
СообщениеДобавлено: 16 июл 2015, 13:28 
Не в сети

Зарегистрирован: 27 авг 2014, 02:11
Сообщения: 267
Откуда: Тольятти
ФИО: Михаил
А кривизна стола всегда постоянная или меняется со временем? Наиболее точный вариант, имхо ессно, это как то передавать кривизну стола в слайсер, что бы он компенсировал кривизну.

_________________
ZAV MAX Pro V1. ZAV mini.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоуровень кровати: алгоритм с компенсацией кривизны
СообщениеДобавлено: 16 июл 2015, 13:29 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10990
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
она немного плавает со временем и температурой


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO