Перейти к публикации

Best Fit Alignment алгоритм


avd

Рекомендованные сообщения

В NX7.5 появился хороший функционал - Best Fit Alignment. Господа подскажите где можно найти его алгоритм, хочется реализовать его в NX6. Исходно даны две кривые, одну из которых надо расположить наилучшим образом к другой с помощью перемещений и поворотов.

Ссылка на сообщение
Поделиться на других сайтах


Есть такой алгоритм. Я его реализовал на станке (!!), в Siemens 840D. Работает так - два массива (сколь угодно больших) точек совмещаются, результат - три перемещения и три поворота вдоль осей. Все сводится к системе уравнений 6x6.

А делалось это вот для <noindex>этого.</noindex> 

Ссылка на сообщение
Поделиться на других сайтах

Есть такой алгоритм. Я его реализовал на станке (!!), в Siemens 840D. Работает так - два массива (сколь угодно больших) точек совмещаются, результат - три перемещения и три поворота вдоль осей. Все сводится к системе уравнений 6x6.

А делалось это вот для <noindex>этого.</noindex> 

Как решить систему уравнений - не проблема, необходимо дать ссылку на метод вывода уравнений. Другими словами какую книжку читать
Ссылка на сообщение
Поделиться на других сайтах
  • 1 месяц спустя...

Как оказалось Best Fit Alignment есть и в NX6. Сейчас проблема в UGOpen не могу найти функцию, которая эту команду реализует.

С помощью журнала получаю следующую команду NXOpen.Facet.BestFitAlignBuilder bestFitAlignBuilder1, но как это реализовать в UGOpen?

Ссылка на сообщение
Поделиться на других сайтах

Как оказалось Best Fit Alignment есть и в NX6. Сейчас проблема в UGOpen не могу найти функцию, которая эту команду реализует.

С помощью журнала получаю следующую команду NXOpen.Facet.BestFitAlignBuilder bestFitAlignBuilder1, но как это реализовать в UGOpen?

Руками пиши в UGOpen

По поводу почитать о выводе уравнений - метод наименьших квадратов

Вообще задача сводится к поиску экстремума

То есть изначально Tебе надо Написать целевую вункцию минимум котоой будешь искать

F(6 переменных - три перемещения и 3 угла поворота)

Если речь идет ос совпадении точек то берется просто сумма квадратов разностей соответствующих точек

Кстати поиск минимума можешь попробовать произвести численно - есть куча простых алгоритмов но будет очень долго

Если вспомнить соответствующие теоремы из мат анализа то для нахождения экстремума можно использовать тот фокт что в точке экстремума все первые частные производные от F по каждой из 6 переменных должны быть равны 0.

И перейти к решению 6 уравнений - это будет метод наименьших квадратов

Есть альтернативная формулировка Гаусса

Если написать систему уравнений при совпадении A*x=Y - в матричном виде и число уравнений как правило больше чем число неизвестных

То МНК система будет такая

At*A*x=At*Y

где At - траспонированная матрица A - формула легко запоминается и программируется

Хотя примеительно к кривой представленной точками - задача совпадения кривых и множеств точек на них насчитанных не эквивалентны

Требуются еще дополнительные условия - например о распределении точек по кривой

И решений у этой задачи может быть неколько в том числе за счет выбора нумерации точек

Ссылка на сообщение
Поделиться на других сайтах

Руками пиши в UGOpen

По поводу почитать о выводе уравнений - метод наименьших квадратов

Вообще задача сводится к поиску экстремума

То есть изначально Tебе надо Написать целевую вункцию минимум котоой будешь искать

F(6 переменных - три перемещения и 3 угла поворота)

Если речь идет ос совпадении точек то берется просто сумма квадратов разностей соответствующих точек

Кстати поиск минимума можешь попробовать произвести численно - есть куча простых алгоритмов но будет очень долго

Если вспомнить соответствующие теоремы из мат анализа то для нахождения экстремума можно использовать тот фокт что в точке экстремума все первые частные производные от F по каждой из 6 переменных должны быть равны 0.

И перейти к решению 6 уравнений - это будет метод наименьших квадратов

Есть альтернативная формулировка Гаусса

Если написать систему уравнений при совпадении A*x=Y - в матричном виде и число уравнений как правило больше чем число неизвестных

То МНК система будет такая

At*A*x=At*Y

где At - траспонированная матрица A - формула легко запоминается и программируется

Хотя примеительно к кривой представленной точками - задача совпадения кривых и множеств точек на них насчитанных не эквивалентны

Требуются еще дополнительные условия - например о распределении точек по кривой

И решений у этой задачи может быть неколько в том числе за счет выбора нумерации точек

Вопрос с выводом целевой функций не стоит, это уже есть. Хотелось бы просто автоматизировать встроенную функцию. Как Вы правильно заметили "требуются дополнительные условия", в них, я так понимаю и проблема, потому что выравнивание по выведенным формулам и встроенным функционалом отличалось.

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

Ссылка на сообщение
Поделиться на других сайтах

Вопрос с выводом целевой функций не стоит, это уже есть. Хотелось бы просто автоматизировать встроенную функцию. Как Вы правильно заметили "требуются дополнительные условия", в них, я так понимаю и проблема, потому что выравнивание по выведенным формулам и встроенным функционалом отличалось.

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

Вот как раз целевых функций на этот случай можно кучу написать

стоит только добавить к координатам точек снятых с кривой их нормали

Анализировать в этом случае можно

1) Совпадение точек

2) Оценку величины проекции точки с одной кривой на другую кривую в окрестности ближайшей точки другой кривой

3) Совпадение направлений нормалей

А токже комбинации из этих величин

Если кривая непериодическая то с распределением скорей свего все просто

я бы просто распределил точки равномерно по длине кривой - тогда нужно проанализировать всего 2 способа нумерации

и из двух решений выбрать одно

Если решение получается другим то скорее всего и целевая функция другая

Ссылка на сообщение
Поделиться на других сайтах

Вот как раз целевых функций на этот случай можно кучу написать

стоит только добавить к координатам точек снятых с кривой их нормали

Анализировать в этом случае можно

1) Совпадение точек

2) Оценку величины проекции точки с одной кривой на другую кривую в окрестности ближайшей точки другой кривой

3) Совпадение направлений нормалей

А токже комбинации из этих величин

Если кривая непериодическая то с распределением скорей свего все просто

я бы просто распределил точки равномерно по длине кривой - тогда нужно проанализировать всего 2 способа нумерации

и из двух решений выбрать одно

Если решение получается другим то скорее всего и целевая функция другая

Спасибо за информацию :lighten:
Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...