реклама на сайте
подробности

 
 
> Алгоритм наискорейшего обхода точек CNC/ЧПУ роутером
iiv
сообщение Apr 2 2015, 12:16
Сообщение #1


вопрошающий
*****

Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436



Добрый день,

возник вопрос, и простого решения не увидел...

Пусть есть N точек в 3-х или 4-х мерном пространстве осей ЧПУ-шного станка. Необходимо их последовательно посетить, так чтобы скорость и ускорение каждой оси не превышали заданные - фактически такие ограничения связаны с тем, что мотор не может очень быстро крутиться и очень быстро разгоняться. Задача вроде бы должна быть очень распространенная, но решение у меня получается достаточно не тривиальным.

Пусть для простоты у нас 3-х координатный станок, начальное и конечное значения скоростей равны 0. Для решения я взял неизвестную временнУю сетку t_0=0 < t_1 < t_2 < ... < t_N, на ней строю три кубических сплайна по одному на каждую ось. Коэффициенты этих сплайнов зависят от t_1, ..., t_N и от соответствующих координат точек обхода (которые даны) и их легко за 15N арифметических операций можно вычислить методом прогонки. Нам надо минимизировать t_N с учетом ограниченности первой и второй производных всех трех сплайнов. Понятно метод отжига (simulated annealing) успешно эту задачу решит, но как-то немного громоздко выходит...

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

Спасибо

ИИВ
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
blackfin
сообщение Jun 16 2015, 04:18
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(iiv @ Apr 2 2015, 15:16) *
Пусть есть N точек в 3-х или 4-х мерном пространстве осей ЧПУ-шного станка. Необходимо их последовательно посетить, так чтобы скорость и ускорение каждой оси не превышали заданные...
Задача вроде бы должна быть очень распространенная, но решение у меня получается достаточно нетривиальным.
Возможно чем-то для такого типа задачи можно пренебречь и получить более простой метод, только что в этом случае необходимо поменять в постановке?

Если пренебречь «N точек в 3-х или 4-х мерном пространстве» и ограничиться «N точек в 2-х мерном пространстве», и рассматривать частный случай равномерного движения, то получается классическая задача коммивояжёра, о которую за последние 200 лет было сломано немало копий.. wink.gif

Упс.. Пардон, уже было..
Go to the top of the page
 
+Quote Post
_pv
сообщение Jun 16 2015, 08:33
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(blackfin @ Jun 16 2015, 10:18) *
Если пренебречь «N точек в 3-х или 4-х мерном пространстве» и ограничиться «N точек в 2-х мерном пространстве», и рассматривать частный случай равномерного движения, то получается классическая задача коммивояжёра

В 3D ничем принципиально не отличается, только как уже было отмечено, линейное перемещение с постоянным (максимальным) ускорением половину пути и торможением вторую половину пути от точки к точке, с остановкой в ней - самый простой, но не самый оптимальный по общей средней скорости обхода метод.
тут наверное действительно можно назначить каждой точке некий момент времени t[i], между каждой парой точек проложить кубический сплайн, Xi(t) = Ax0 + Ax1 * t + Ax2 * t^2 + Ax3* t^3. y(t), z(t)..., с требованием непрерывности производных в точках. После нахождения коэффициентов проверить не вышли ли скорости/ускорения за заданные пределы, и
потом подвинуть в нужную сторону назначенные параметры t[i] у соответствующих точек и повторить.
Go to the top of the page
 
+Quote Post
iiv
сообщение Jun 17 2015, 06:49
Сообщение #4


вопрошающий
*****

Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436



Цитата(_pv @ Jun 16 2015, 13:33) *
тут наверное действительно можно назначить каждой точке некий момент времени t[i], между каждой парой точек проложить кубический сплайн, Xi(t) = Ax0 + Ax1 * t + Ax2 * t^2 + Ax3* t^3. y(t), z(t)..., с требованием непрерывности производных в точках. После нахождения коэффициентов проверить не вышли ли скорости/ускорения за заданные пределы, и
потом подвинуть в нужную сторону назначенные параметры t[i] у соответствующих точек и повторить.

да, именно это решение я сейчас и использую, и именно с ним я открыл 2 апреля этот топик.
Go to the top of the page
 
+Quote Post
_pv
сообщение Jun 17 2015, 07:29
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(iiv @ Jun 17 2015, 12:49) *
да, именно это решение я сейчас и использую, и именно с ним я открыл 2 апреля этот топик.

чукча - писатель.
Go to the top of the page
 
+Quote Post
iiv
сообщение Jun 17 2015, 08:05
Сообщение #6


вопрошающий
*****

Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436



Цитата(_pv @ Jun 17 2015, 12:29) *
чукча - писатель.

да не, не в обиду! Мне это решение как раз и не понравилось, так как я применил для его решения достаточно продвинутый математический аппарат (методы БФГС, Бройдена, Бауэра-Штрассена), то есть мне это конечно не сложно, и я могу гарантировать как вычислительный математик достигаемую точность и однозначность решения.

Кстати, для тех, кому интересно для чего все это, есть пример на пальцах в 2Д случае: на столе лежат детальки, надо их перетасовать, порядок перетасовки уже вычислен, фактически сверху над столом летает присоска, которая пролетая над деталькой ее присасывает, летит в нужное место, и там бросает, и так далее. Если каждый раз полностью останавливаться перед присасыванием/отсасыванием, то время работы на реальной задаче получалось в полтора раза больше, чем если пролетать не останавливаясь, а на качество работы аппарата это не влияло, так как присос/отсос идет в вертикальной оси.

В моем случае исходная задача похожа, но формулируется на вогнутой поверхности, и присоска может быть еще правильно направлена (еще две оси), поэтому я и искал решение на >2D, и, не такое крокодилистое, как у меня получилось... С другой стороны, работает, ну и ладно, по крайней мере время вычисления коэффициентов таких оптимальных сплайнов мною полученным алгоритмом даже на арме существенно меньше время полета присоски, но ведь всегда хочется элегантности, а не элефантности, решения!
Go to the top of the page
 
+Quote Post
_pv
сообщение Jun 17 2015, 11:40
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(iiv @ Jun 17 2015, 14:05) *
(методы БФГС, Бройдена, Бауэра-Штрассена)

даже как-то лень смотреть кто все эти люди.
а нельзя после того как нашли коэффициенты сплайнов и увидели что максимальная скорость на участке между двумя любыми точками отличается на dV заданной максимальной, просто подвинуть моменты времени посещения всех последующих точек на dt = Si / dV.
за несколько проходов оно в результате сойдётся к траектории с нужной максимальной скоростью, ну и с ускорением также.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- iiv   Алгоритм наискорейшего обхода точек CNC/ЧПУ роутером   Apr 2 2015, 12:16
- - mcheb   Читаем любой учебник по численным методам - поиск ...   Apr 2 2015, 15:24
|- - iiv   Цитата(mcheb @ Apr 2 2015, 21:24) Читаем ...   Apr 2 2015, 16:42
- - fider   Здесь наверное ведь цель (целевая функция) как чащ...   Apr 2 2015, 17:05
|- - iiv   Цитата(fider @ Apr 2 2015, 22:05) И тогда...   Apr 2 2015, 17:38
- - SSerge   Даже без учёта динамики двигателей, учитывая тольк...   Apr 2 2015, 17:11
- - Fat Robot   Ant Colonies   Apr 2 2015, 20:03
|- - iiv   Цитата(Fat Robot @ Apr 3 2015, 02:03) Ска...   Apr 2 2015, 20:27
- - halfdoom   Вообще то, тут три задачи: 1. посетить точки в оп...   Apr 3 2015, 06:25
|- - dpss   Цитата(halfdoom @ Apr 3 2015, 09:25) Вооб...   Apr 8 2015, 16:55
- - TSerg   Вопрос уже устаревший, но задача имеет вполне техн...   May 5 2015, 19:46
|- - MiklPolikov   А мне думается, что задачу нужно решать не чисто м...   May 11 2015, 22:21
- - Ydaloj   стандартная общеизвестная информация: управляющее ...   May 12 2015, 16:49
|- - iiv   Цитата(Ydaloj @ May 12 2015, 21:49) почем...   May 27 2015, 18:27
- - TSerg   Ну, а если надо фрезеровать все же квадрат, а не о...   May 27 2015, 22:06
|- - iiv   Вот я Вас большинство тут не понимаю... Написано: ...   May 28 2015, 15:35
- - TSerg   Для того и надо "ля-ля", чтобы в общей м...   May 29 2015, 05:00
- - RCray   У меня вопрос к постановке, a не к решению. Mожно ...   Jun 10 2015, 00:14
- - TSerg   ТС, похоже, сам не понимает, что же он хочет. Сдел...   Jun 10 2015, 17:53
|- - iiv   Цитата(TSerg @ Jun 10 2015, 23:53) ТС, по...   Jun 15 2015, 16:52
- - TSerg   Еще раз. Если стоит задача формального математичес...   Jun 15 2015, 19:10
- - RCray   В споре может рождаться и постановка задачи, и ист...   Jun 16 2015, 03:14
|- - TSerg   Цитата(iiv @ Jun 17 2015, 11:05) ..методы...   Jun 17 2015, 10:46
||- - iiv   Цитата(TSerg @ Jun 17 2015, 15:46) Звучит...   Jun 17 2015, 14:23
- - TSerg   Да ладно.. в инженерной постановке все решается за...   Jun 16 2015, 20:01
- - TSerg   То, что я изложил, относится к упрощенному инженер...   Jun 17 2015, 15:38
|- - iiv   Цитата(TSerg @ Jun 17 2015, 20:38) То, чт...   Jun 17 2015, 17:33
- - TSerg   Вы все же попробуйте проверить - радиус циркуляции...   Jun 17 2015, 20:14
- - RCray   del   Sep 3 2015, 04:57


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 12:56
Рейтинг@Mail.ru


Страница сгенерированна за 0.01407 секунд с 7
ELECTRONIX ©2004-2016