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

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 пользователей

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




  • Сообщения

    • Kelny
      В последних версиях Solidworks эта функция не заблокирована для обычных видеокарт (редактирование реестра не требуется), в том числе встроенных, и об этом написано выше:  
    • Fedor
      Насколько помню, надо в уравнениями Лагранжа-Максвелла разбираться в электромеханических  системах   https://elib.spbstu.ru/dl/059/CHAPTER1/Chapter1.html   
    • Foksmen
      Так вот и хотелось бы посмотреть методики, которые используются для пересчёта с использованием эмпирических формул. Пересчитать то смогу конечно, не проблема )
    • Катугин
      Практически ушел от подетальной разработки, если только не нужно с определенного чертежа повторить деталь. И дальше зачастую её использую для вставки в многотел. Многотел сохраняю сборкой. После чего открываю сборку из неё открываю каждую деталь, и убиваю внешние связи. 
    • maxx2000
      ничего умножать и делить не надо. достаточно в параметрах операции задать глубины нужного размера  
    • Orchestra2603
      Ну, предлагаю такой подход... Не знаю, может это все слишком очевидно, ну хотя бы это по полочкам разложить - тоже полезно.   Вот допустим, есть у вас электродинамический вибровозбудитель. Он как устроен? Есть генератор переменного тока. Он встроен в электрическую цепь, и там есть свои электрические элементы. Но главное, там есть катушка индутивности намонтанная на трубу, а внутри нее подвижная масса. На подвижной массе еще одна катушка, и у той по обмотке течет еще какой-то свой постоянный ток. Когда ток проходит по обмотке трубы, то внутри возникает магнитное поле, а оно действует на ток внутри трубы протекающий по подвижной катушке, и возникает сила Ампера, котоая приводит в движение массу. Сила эта пропорциональна магнитной индукция, а та в свою очередь силе тока (как в подвижной, таки неподвижной катушке, но нас интересует ток в конутре, который переменный). Т.е. ток в контуре, где стоит катушка, выступает в роли внешней возбуждающей силы для подвижной массы. Возможны конечно нюансы и некоторые вариации, но суть вроде как такая.   Если электрическая цепь сложная с кучей контуров, и там натыкано много конденсаторов, резисторов и инудктивностей в каждом контуре, то распределение токов по контурам находится через решение системы линенынх дифференциальных уравнений второго порядка.  Ну, т.е. там по сути тоже куча собственных частот, каждая из которых описывает свой электрический резонансов. Можно также решать задачу на СЗ, и будут собственные вектора, которые описывают соотношения амплитуд и фаз токов в раных контурах, и собственные значения, которые соотвтетсвуют каким-то резонансам. Тогда ЭДС на генераторе выступает в роли внешней силы. В зависимости от распределения элементов и контуров в цепи коэффициент усиления между ЭДС на генераторе и перемещением подвижной массы в трубе в определенном контуре будет меняться. Типа как АЧХ получается, только чисто "электрическая". Это АЧХ чистемы ЭМС, если в вашей терминологии. В параметры этой АЧХ будут входить только параметры электрических элементов схемы.   Можно дальше представить себе, что в каждом контуре цепи воткнут свой генератор, и у каждого своя амплитуда тока и фазовый сдвиг, но всех у всех одна частота. И пускай в каждом контуре есть своя подвижная масса внутри какой-то своей неподвижной катушки. Получается, что есть некоторый вектор правых частей, собранный из ЭДС генераторов в разных контурах, а перемещения подвижных масс в разных контурах - это вектор отклика. Т.е. будет уже матрица частотных харкатеристик (системы ЭМС, если в вашей терминологии), а отклик подвижных масс и внешние возбуждения, будет описываться соотвтетсвующими векторами. В зависимости от того, как распределены амплитуды и фазы ЭДС генераторов по контурам, и какая выбрана частота возбуждения, могут проявляться или не проявляться какие-то резонансы (точно также будет какой-то коэффициент участия, коэффициент динамичности и т.д.). Если в каком-то контуре проявляется резонанс, то в этом контуре на этой частоте будет большой коффициент динамичности по амплитуде тока в этом контуре, и будет пропорционально увеличиваться амплитуда отклика по перемещениям соотвтетсвующей подвижной массы.   Теперь представим, что каждая i-я из этих подвижных масс соединяется с контрукцией - системой МС. Тогда получается так, что да, ток в i-м контуре зависит от электрической АЧХ системы ЭМС, и это влияет на механическую силу, действующую на пожвижную массу в i-м контуре, но вместе с этим свойства механической системы МС могут быть такими, что на этой частоте даже такая увеличенная амплитуда силы в не возбуждает большого механичского оклика (перемещения) в этой конкртеной i-й точке крепления с конструкцией. Т.е. в данном случае, получается, что вы задаете вектор ЭДС генераторво на входе, это все дело умножается на электрическую АЧХ системы ЭМС, и получается вектор механических сил Ампера, действующих на каждую из точек крепления. А дальше этот вектор сил умножается на АЧХ системы МС, чтобы получить вектор отклика конструкции.   Т.е. получается так, что две системы вообще соединяются последвательно: выход из первой служит входом для второй, и их АЧХ разделяются спокойно. В итоге, выходит, что АЧХ можно просто переменожить, чтобы получить итоговую АЧХ суммарной системы ЭМС+МС. Так получается из-за того, что электромагнитное взаимодействие создает механическую силу и влияет на механическое движение, но механическое движение не влиет на электромагнитные взаимодействия в цепи. Так ведь?   Такие, вот, мысли. Сам вообше не спец ни разу по электромагнитизму, так что поправьте, если где-то ошибаюсь.
    • zedowl
      все, разобрался сам, просто поставил глубокое сверление, а не простое, поменял цикл, вместо 81 стал 83, и там Q добавилось, я так понял с размеров диаметра сверла(но это не точно), и в 83 цикле cld17 умножил на 1000
    • gudstartup
      @Malsev прежде чем куда то что то ставить сравнивайте даташит или maininf.txt чтобы понять насколько перед вами аналогичная система.
    • zedowl
      разобрался какой параметр должен поменяться, у меня 81 цикл, но мне нужен другой, как выбрать другой цикл? мне подсказали, что нужно его выбрать в настройках операции, но я не знаю где это  
    • zedowl
      нет, не новость я даже не знаю какой параметр в коде должен меняться, у меня задание, либо из мм в микроны, либо наоборот   как понять какой цикл у меня выводится в программе? я найду этот цикл в EXTCYCLE и добавлю умножение или деление на 1000
×
×
  • Создать...