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

G-POST, много вопросов. Хочется понять логику работы.


DJ Astro

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

Bastion, немного непонятен вопрос - где выводится угол А? В последующих кадрах перемещений или после обработки КАМЕРЫ в цикле PLANE SPATIAL ? Вопрос в том, зачем выводится А0, если поворот только по B-90, так?

 

DJ Astro, после обработки КАМЕРЫ. Обрабатываю деталь с циклом PLANE SPATIAL (в Sinumerik - CYCLE800). Наклоняю деталь на -90 по оси B и потом по оси А на 23 градуса - выводит в цикле только B-90, А0, наклоняю по В на -90, по А на 45, выводит только В-90 и так далее. 

Может какой-то предельный случай с 90 градусами? Потому что ради эксперимента поставил -89,9 градуса - вывел и А23 и В-89,9. Вопрос - как усовершенствовать алгоритм, чтобы обойти это ограничение? 

 

Да, все верно - cos90 равен нулю и поэтому atan2f(YK,ZK) не считается и значение обнуляется ((( Есть идеи как это победить? 

 

П.С. Всех с Днем Победы!!! 

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


Bastion, еще раз перепроверил, сделал обработку на кубике на всех гранях - все углы выводит, всё правильно рассчитывает.

Пробовал 2 варианта:

1. СК всей операции в центре верхней грани (плоскости XY, YZ, ZX системы координат параллельны ребрам кубика), локальные СК на вертикальных ребрах ниже верхней грани. В этом случае все повороты кратны 90.

2. СК всей операции в центре верхней грани (СК дополнительно повернута относительно Z на некоторый угол), локальные СК на вертикальных ребрах ниже верхней грани. В этом случае в выводимых углах появляется этот небольшой угол.


вот модель, правда в Creo 3.0. Не знаю, сможете открыть или нет.

camera.ZIP

Изменено пользователем DJ Astro
Ссылка на сообщение
Поделиться на других сайтах

Можете посмотреть мою обработку (тоже в Крео 3)? part1.rar А вашей модели почему-то не видно, может вы её не загрузили? 

 

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

Да, в моём варианте обработки для проверки правильности работы кода таких вариантов не встретилось (когда B=+-90). А проверка правильности расчетов в экселе оказалась не совсем правильной. Для проверки я задавал углы, по ним вычислял матрицу поворота и затем обратно по матрице вычислял углы. Раз значения совпадали значит всё ОК!  Только теперь, когда начал разбираться понял, что при вычислении матрицы, там где должны были быть нули получались очень маленькие числа типа 0,11Е-17, (но не ноль!). И поэтому при обратных вычислениях исходные углы вычислялись правильно, а не обнулялись. А я сразу не придал значения этому... :(

 

Bastion, добавил в код для CAMERA такие условия для проверки предельных случаев:

теперь ваша обработка работает правильно

....

.....

AVAL=ATAN2F(YK,ZK) $$ plane spatial A
BVAL=ASINF(-XK) $$ plane spatial B
CVAL=ATAN2F(XJ,XI) $$ plane spatial C
IF (XK.EQ.-1) THEN $$ if B=90
 CVAL=ASINF(YI)
ELSE
  IF (XK.EQ.1) THEN $$ if B=-90
    CVAL=ASINF(-YI)
  ENDIF

ENDIF 

AVAL=TEXT/CONVF,AVAL,10,5,1,0,5 $$ convert to text
BVAL=TEXT/CONVF,BVAL,10,5,1,0,5
CVAL=TEXT/CONVF,CVAL,10,5,1,0,5

.....

...

В этих случаях А будет всегда =0, а С будет вычисляться правильно.

Или, если хотите, то можно поменять наоборот - А -вычисляется, С=0. Результат работы цикла PLANE SPATIAL будет одинаковый.

 

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

Спасибо.

Я сам тоже начал разбираться с матрицами поворотов и вот что вычитал здесь http://www.gamedev.ru/code/articles/faq_matrix_quat?page=4

"Что такое фиксация оси?

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

  Из-за чего станет невозможно повернуть объект в нужной оси.

  К примеру, если вращать объект в порядке Z,Y,X и повернуть 
  по оси Y на 90 градусов. 
  
  В этом случае, вращение по оси Z будет произведено первым, 
  а значит, будет проведено, верно. По оси Y также корректно. 
  Однако после вращения по Y, ось X будет вращаться по оси Z. 

  Так что любое вращение по X на самом деле будет вращать по Z."

Также можно посмотреть здесь - http://habrahabr.ru/post/183116/

Где-то читал (не могу найти где), что эта проблема решается сменой последовательности поворотов и, следовательно, сменой порядка перемножения матриц. В связи с этим вопрос: почему у вас именно такая последовательность - сначала вокруг Z, потом вокруг Y, и потом вокруг Х?  

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

Где-то читал (не могу найти где), что эта проблема решается сменой последовательности поворотов и, следовательно, сменой порядка перемножения матриц. В связи с этим вопрос: почему у вас именно такая последовательность - сначала вокруг Z, потом вокруг Y, и потом вокруг Х?  

Именно в такой последовательности ProE рассчитывает матрицу для команды CAMERA. 

 

Про кватернионы читал ещё в самом начале, как только занялся этими матрицами. Но так и не понял, как и куда их тут применить. 

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

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

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

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

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

Мне по термеху в универе было 3 балла :blush:  :biggrin: 

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

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

Bastion, будем развивать тему кватернионов? Или вариант с рассмотрением предельных углов решает задачу полностью? А то я тут уже закопался в формулах перевода матриц в кватернионы и обратно :biggrin:

Ссылка на сообщение
Поделиться на других сайтах
DJ Astro, т.е. мы должны сначала перевести матрицу в кватернион, а затем из кватерниона вычислить углы Эйлера, так? Или не углы Эйлера, а  сферические углы (для начала бы понять какая между ними разница)? 

Попробовать можно, хуже от этого не будет, но результат не гарантирован (т.е. может ничего не получиться :smile: ).

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

Компоненты матрицы поворота, выраженные через кватернион:

fcbc131b2d84e50262f2709afbc155fa.png

Преобразование в углы Эйлера:

a2925987257bc7469187cfc3c18da853.png

Конечный код:

heading = atan2(2*qy*qw-2*qx*qz , 1 - 2*qy2 - 2*qz2)
attitude = asin(2*qx*qy + 2*qz*qw) 
bank = atan2(2*qx*qw-2*qy*qz , 1 - 2*qx2 - 2*qz2)

except when qx*qy + qz*qw = 0.5 (north pole)
which gives:
heading = 2 * atan2(x,w)
bank = 0
and when qx*qy + qz*qw = -0.5 (south pole)
which gives:
heading = -2 * atan2(x,w)
bank = 0

Теперь остается все это перевести в FIL и увидеть, что по сути вы и раньше все в кватернионах делали, только без лишнего преобразования, так? Или я что-то не понял? 

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

Да не, это с википедии английской ))) А так - на бумажке пишу, ибо маткадом не владею  :sad:

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

Слегка собрал мысли в кучу  :doh: ..

 



DJ Astro, т.е. мы должны сначала перевести матрицу в кватернион, а затем из кватерниона вычислить углы Эйлера, так? Или не углы Эйлера, а  сферические углы (для начала бы понять какая между ними разница)? 

Попробовать можно, хуже от этого не будет, но результат не гарантирован (т.е. может ничего не получиться :smile: ).

 

Мы ищем пространственные углы, т.е. последовательные повороты относительно всех осей СК: сначала повернули относительно оси Z, потом повернули относительно нового положения оси Y, потом повернули относительно нового положения оси X.

В углах Эйлера поворот 2 раза через Z - сначала повернули относительно оси Z, потом повернули относительно нового положения оси X, потом повернули относительно нового положения Z.

 

Я в маткаде тоже не умею, на бумажке пробовал - неудобно, пилил в ворде  :biggrin:

Расписал оба варианта.

1. Формулы матрицы поворота, в которой есть нужные углы, перевел в кватернион. 

2. Формулы каждой матрицы поворота вокруг каждой оси перевел в кватернионы, их перемножил, получил конечный кватернион.

 

Оба варианта вычисляют одинаково (ну оно как-бы и логично :rolleyes:). 

Как теперь из этих выражений найти углы? :doh:  :doh: Знатоки маткада, help!!!

 

 

 

 

 

Теперь остается все это перевести в FIL и увидеть, что по сути вы и раньше все в кватернионах делали, только без лишнего преобразования, так? Или я что-то не понял?

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

matrix.doc

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

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


Самому хочется знать, но похоже решение полное... 

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

не факт...

обработка всякая бывает

я сталкивался что ПроЕ при выводе начинал путать октанты, и пост приходилось корректировать

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

Такой вопрос. Можно ли как-то сделать, чтобы в программе, при коррекции, в шаге подхода вставлялась функция G44 (вместо g41/g42), а в начале следующего кадра G41/G42.

%
T18
M06
S1000 M03
G00 X-9 Y8.5
Z-19.2
G01 G44 Y-.5 F100
G41 X2.231
G03 X3.76 Y-.382 R10
G01 X5.471 Y-.118
G02 X7 Y0 R10
G01 X8.3
G02 X10.3 Y-2 R2
G01 Y-4
G02 X8.3 Y-6 R2
G01 X7
G02 X5.471 Y-5.882 R10
G01 X3.76 Y-5.618
G03 X2.231 Y-5.5 R10
G01 X0
Y8.5
G40 X-9
G00 Z10
M30
N9999 %
Изменено пользователем moovi
Ссылка на сообщение
Поделиться на других сайтах

moovi, можно попробовать таким способом:

(предварительно в настройках поста Machine Codes - Cutter Compensation назначить коррекциям слева-справа одинаковый код G44)

 

ARG=0

LOOP=1

 

CIMFIL/ON,CUTCOM
ARG=POSTF(7,4)
IF (ARG.NE.ICODEF(OFF)) THEN
LOOP=1
ELSE
LOOP=3
ENDIF
DMY=POSTF(13)
CIMFIL/OFF

CIMFIL/ON,GOTO
DMY=POSTF(20)
IF (LOOP.EQ.2) THEN
IF (ARG.EQ.ICODEF(LEFT)) THEN
PREFUN/41,NEXT
DMY=POSTF(21)
DMY=POSTF(13)
ENDIF
IF (ARG.EQ.ICODEF(RIGHT)) THEN
PREFUN/42,NEXT
DMY=POSTF(21)
DMY=POSTF(13)
ENDIF
ELSE
DMY=POSTF(13)
ENDIF
LOOP=LOOP+1
CIMFIL/OFF

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

Или чуть попроще: оставляете G41/G42 как и было на левом и правом корректорах, а в FIL пишете:

FLG44=0

CIMFIL/AT,CUTCOM,LEFT

 FLG44=1

CIMFIL/OFF

 

CIMFIL/AT,CUTCOM,RIGHT

 FLG44=2

CIMFIL/OFF

 

CIMFIL/ON,GOTO

 DMY=POSTF(20)

 IF (FLG44.NE.0) PREFUN/44,NEXT

 DMY=POSTF(21)

 DMY=POSTF(13)

 IF (FLG44.EQ.1) CUTCOM/LEFT

 IF (FLG44.EQ.2) CUTCOM/RIGHT

 FLG44=0

CIMFIL/OFF

 

 

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • Gorich
    • Нанософт разработка
      Одним из эффективных способов осуществления строительного надзора является использование результатов лазерного сканирования с построением 3D-моделей, что дает наиболее полную информацию о строительных объектах с привязкой к пространственным, инфраструктурным и центральным инженерным коммуникациям. Институт «Сибгипробум», активно работающий над совершенствованием мониторинга и созданием цифровых двойников, использует комбинацию технологий «Платформа nanoCAD + ReClouds» как бесшовную инженерную среду для проектирования и для работы с облаками точек. Комплексную поддержку при внедрении программных решений предоставила компания «Бюро САПР» – премьер- и фокус-партнер компании «Нанософт» по направлениям «Конструкции», «Инженерия» и «Землеустройство».   О компании АО «Сибгипробум» – институт, на протяжении 65 лет специализирующийся в области проектирования предприятий лесной и целлюлозно-бумажной промышленности, объектов глубокой химико-механической переработки древесины, а также разрабатывающий проекты экологических и энергетических объектов. В проектной деятельности институт активно использует технологии лазерного сканирования и информационного моделирования. Исходная ситуация ·        Отсутствие возможности оперативного повсеместного контроля строительства на промплощадке. ·        Отсутствие актуальной трехмерной модели объекта, которую в дальнейшем можно было бы сопоставить с облаком точек. ·        Сжатые сроки, которые не позволяли создать трехмерную модель. Задачи цифрового мониторинга ·        Поиск изменений между отчетными периодами. ·        Подсчет объемов монтажа. ·        Поиск пространственно-временных коллизий. Сравнение облака точек в двух отчетных периодах на графике строительства – S-кривой. Красным подсвечено то, что изменено (это было сделано на другой платформе)   Оптимальное технологическое решение можно выбрать в зависимости от степени сложности точечной задачи в рамках цифрового мониторинга. Продемонстрируем это на конкретных примерах. Прикладная задача 1: проверка проектного положения монтируемого оборудования и конструкций. Выбранная технология: Платформа nanoCAD для совмещения 2D-чертежей с облаком точек. Алгоритм работы технологии: загрузка исходного облака точек формата LAS в nanoCAD импортом NPC → создание удобной ПСК для сравнения облака точек в нужном ракурсе → копирование чертежа и совмещение по «точкам доверия» (например, по колоннам здания) → создание сечения → поиск отклонений. Полученный прикладной результат: разрез на определенной отметке показал отклонение по колоннам здания, из-за чего стена построена «криво». Благодаря этим данным авторский надзор перепроверил расчетные значения и скорректировал решения. В результате эту стену пришлось укреплять дополнительными металлоконструкциями. Плюсы и минусы технологии Плюсы: Минусы: ·        не требуется трехмерная модель; ·        простая технология, которую может освоить каждый; ·        низкие требования к аппаратному обеспечению; ·        низкая стоимость контроля проектных решений без выезда на площадку. ·        трудозатратно, если требуется проверить несколько разных разделов в одной точке; ·        проверка происходит в рамках одного сечения; ·        каждый раз в новом месте проверки требуется совмещение чертежа и облака точек.     Поиск отклонений в конструкциях путем совмещения 2D-чертежей с облаком точек в Платформе nanoCAD   Прикладная задача 2: анализ деформации оборудования – цилиндрической печи. Выбранная технология: ReClouds для сравнения облака точек печи с ее 3D-моделью. Алгоритм: загрузка исходного облака точек (в формате LAS) и цилиндра, выполненного в виде 3D-солида, равного диаметру печи → совмещение 3D-моделей → использование команды ReClouds Сравнение → побор опытным путем радиуса отклонения (вылет точки от нормативного положения) → создание градиентного графика отклонений → поиск отклонений. Полученный прикладной результат: выявлены отклонения трубы от нормативного положения: вмятина и провисание. Наглядный способ проинформировать проектировщиков и строителей, на какие участки следует обратить внимание, чтобы принять решения о ремонте, частичной или полной замене. Эффективность использования ReClouds ·        Автоматизация обработки данных 3D-сканирования. ·        Работа в знакомой инженерной среде с интуитивно понятным интерфейсом. ·        Высокая скорость работы. ·        Минимум финансовых и аппаратных ресурсов. ·        Интеграция со специализированными решениями. ·        Гибридность используемых технологий: Платформа nanoCAD и ReClouds позволяют одновременно работать с 3D-моделью, 2D-чертежом и облаком.                                         Анализ деформации цилиндрической печи с помощью ReClouds. Справа красным и зеленым цветом подсвечена сама труба   Отклонения трубы от эталонного 3D-солида: слева видна вмятина, справа – провисание трубы Мнение пользователя Павел Владимирович Коротких, главный специалист – руководитель группы отдела по цифровизации инженерных процессов и данных, АО «Сибгипробум»   «Когда геополитическая ситуация обострилась и были введены санкции, перед нашим институтом, как и перед предприятиями многих других отраслей, встала задача импортозамещения.   Много где возникали сложности, но было очень отрадно знать, что базовое инженерное ПО нам есть чем заменить. Этим ПО стала Платформа nanoCAD, которая оказалась намного большим, чем просто скопированный зарубежный продукт.   Из стандартного функционала хотелось бы отметить, во-первых, Диспетчер чертежа, который позволяет удобно осуществлять менеджмент чертежей; а, во-вторых, базовые операции при работе с облаками точек: импорт/экспорт, настройки визуализации, подрезку, сечения и т.д.   Использование ReClouds – вертикального приложения к Платформе nanoCAD – дало нам расширенные возможности взаимодействовать с облаками точек, при этом оставаясь в единой инженерной среде.   Обнадеживает активное развитие продуктов со стороны разработчика и неуклонно растущее комьюнити пользователей».   О компании «Нанософт» «Нанософт» – российский разработчик инженерного ПО: технологий автоматизированного проектирования (CAD/САПР), информационного моделирования (BIM/ТИМ) и сопровождения объектов промышленного и гражданского строительства (ПГС) на всех этапах жизненного цикла, а также сквозной цифровизации всех процессов в производстве. Миссия компании – формирование условий для массового оснащения российского рынка лицензионными, качественными и доступными отечественными программными продуктами. «Нанософт» помогает своим заказчикам достичь импортонезависимости в области инженерного ПО и нацелена на развитие собственных технологий в фокусе реальных потребностей. Это позволяет гарантированно защитить критически важную ИТ-инфраструктуру, что особенно актуально сейчас, когда западные вендоры уходят с рынка, замораживают поставки ПО и техническую поддержку. Все программные продукты компании включены в Единый реестр российских программ для электронных вычислительных машин и баз данных. Официальный сайт: nanocad.ru.  
    • Raven
      Спасибо всем кто, ответил Проблема была в том что в БД свойство было строковое не массив, хотя в бизнес-моделере свойство с таким же именем было массивом типизированых ссылок.
    • Raven
      Привет. Подскажите почему может не отображаться пункт меню Вид - Применяемость
    • Gorich
      Я вот не совсем понял где и что смотреть...а руководство по эксплуатации от станка ну так сказать такое себе...там какие то совсем основы... нашел там типо какой то общий сброс...это не сможет помочь?)
    • Viktor2004
      а как проверить шпиндель, хорошо ли он держит инструмент? Не снимая шпиндель и не разбирая его
    • gudstartup
    • gudstartup
      почитайте руководство по эксплуатации я думаю или в сервисе или в пусконаладке нажмите кнопку plc  вы сигнал определили?
    • Gorich
    • Павлуха
      Самое неудобное - модель на одном экране, а панель инструментов на другом. Остальное уже мелочи.
×
×
  • Создать...