Mikhail_015 0 1 июня, 2020 Опубликовано 1 июня, 2020 · Жалоба Да, именно так и есть. Надо все время держать плоскость 4-й (внешней) рамки в перпендикуляре ко второй рамке - и задача решена. Но я с этим вопросом и пришел сюда - какой математикой преобразовывать необходимые (требуемые) углы поворота тела (=внутренней рамки) в четыре угла поворота всех четырех осей рамок, и при этом держать в перпендикуляре эти 4-ю и 2-ю рамки. Как я понимаю, стандартных функций для такого преобразования нет - 3 угла в 4 угла поворота, два из которых "связаны"... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 1 июня, 2020 Опубликовано 1 июня, 2020 · Жалоба 1 hour ago, Mikhail_015 said: какой математикой преобразовывать необходимые (требуемые) углы поворота тела (=внутренней рамки) в четыре угла поворота всех четырех осей рамок, и при этом держать в перпендикуляре эти 4-ю и 2-ю рамки. Как я понимаю, стандартных функций для такого преобразования нет - 3 угла в 4 угла поворота, два из которых "связаны"... Еще раз. У Вас есть 4 энкодера. Углы a1, a2, a3, a4. a4 - это угол самой внешней рамки. Мотором вы удерживаете эту рамку, чтобы A2 был равен 90 градусов. Потом преобразуете углы a1, a2, a3 в обычную матрицу поворота - https://ru.wikipedia.org/wiki/Матрица_поворота#Выражение_матрицы_поворота_через_углы_Эйлера И затем поворачиваете ее вокруг последней оси, на угол a4 (именно поэтому там тоже нужен энкодер). a2 можно не измерять, а заменить на 90 градусов, если Вы уверены в точности удержания. Но лучше измерить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
I_N_P 0 2 июня, 2020 Опубликовано 2 июня, 2020 · Жалоба Добрый день. Попробую уточнить задачу. У нас есть некое тело, пусть будет пластиковая кредиткарта. Закрашенный прямоугольник в рисунке Михаила. Эта карта свободно падает куда то откуда то, произвольно вращаясь. Поступательное движение забываем, не интересно. Остается вращение по трем осям. Дальше, условно, моделируем движение этой карты. Мы знаем в каждый момент времени угловые скорости по трем осям связанной системы координат карты (ССК). Т.е. через матрицу поворота, кватернионы мы можем вычислить пространственное положение карты в земной системе координат. Теперь мы эту карту помещаем в карданов подвес. И вот этим карданом и надо воспроизвести произвольное положение карты и произвольные вращения в пространстве. Что мы имеем . По рисунку. Продольная ось карты, она же ось вращения по углу наклона. В начальном состоянии (по рисунку) угол наклона карты мы можем реализовать двумя способами. 1. Повернуть карту внутри второй рамки. 2. Повернуть всю конструкцию внутри четвертой рамки. В начальном состоянии (по рисунку) в принципе отсутствует ось вращения карты по азимуту. Об этом позже. И так же можем реализовать вращение вокруг поперечной оси карты (в начальном положении) т.е. изменять угол места через вращение второй рамки внутри, либо через вращение всей конструкции на оси четвертой(внешней) рамки. Если мы реализуем вращение карты вокруг продольной оси ССК первым способом, то поперечная ось ССК отклоняется от осей вращения второй и четвертой рамок и мы теряем степень свободы. Второй способ (вращение третьей рамки) сохранит соосность поперечной оси ССК карты с осью вращения второй рамки. Теперь нам нужна третья ось вращения. ОК. Поворачиваем внешнюю рамку (и связанную с ней третью рамку) на 90 градусов. В начальном состоянии ось вращения третьей рамки совпадет с нормальной осью ССК карты, обеспечивая вращение по азимуту. Но. Любое отклонение карты по продольной и поперечной осям уводит нормальную ось ССК от оси вращения, т.е. мы теряем возможность чистого вращения вокруг нормальной оси карты, остается возможность вращения вокруг земной нормальной оси, но это не соответствует модели движения/падения карты. А задача по прежнему - обеспечить вращение и положение, в следствии вращения, в любой момент времени в любом направлении ССК. Ко всему прочему еще постоянно добавляется механический gimble lock по какой-нибудь из осей вращения. В ориентации на рисунке только вращение вокруг продольной оси карты реализуется абсолютно и не требует каких либо ухищрений, поскольку ось карты жестко связана с осью вращения. Остальные оси карты ССК постоянно отклоняются от осей вращения. А реализовывать вращение необходимо относительно именно ССК. Т.е. нужен алгоритм пересчета поворота всех рамок кардана для обеспечения вращения карты в ССК. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 2 июня, 2020 Опубликовано 2 июня, 2020 · Жалоба 31 minutes ago, I_N_P said: Добрый день. Попробую уточнить задачу. Ребят вы напишите конечную цель всего действа. Так, ей-богу, будет проще понять вашу проблему. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 2 июня, 2020 Опубликовано 2 июня, 2020 · Жалоба 37 minutes ago, I_N_P said: Попробую уточнить задачу. Ладно, я так понял, у Вас там не гироскоп внутри, а наоборот Вы сами хотите вращать произвольно внутреннее тело. Тогда все с точностью до наоборот. Из нужной Вам DCM, определяющей положение тела в пространстве относительно Земли, вы получаете угол a2. Мотор a4 устанавливаете a4=a2+pi/2. Затем DCM поворачиваете на угол pi/2-a2. Потом достаете из повернутой DCM углы a1 и a3, они и будут нужными углами соответствующих моторов. А мотор a2 устанавливаете в pi/2. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mikhail_015 0 2 июня, 2020 Опубликовано 2 июня, 2020 · Жалоба 36 минут назад, Rst7 сказал: Ладно, я так понял, у Вас там не гироскоп внутри, а наоборот Вы сами хотите вращать произвольно внутреннее тело. Тогда все с точностью до наоборот. Из нужной Вам DCM, определяющей положение тела в пространстве относительно Земли, вы получаете угол a2. Мотор a4 устанавливаете a4=a2+pi/2. Затем DCM поворачиваете на угол pi/2-a2. Потом достаете из повернутой DCM углы a1 и a3, они и будут нужными углами соответствующих моторов. А мотор a2 устанавливаете в pi/2. Добрый день. Спасибо. Извините, вынужден был немного отсутствовать... Да, Вы правильно поняли задачу - нам надо вращать тело четырьмя осями, и не иметь НИКАКИХ ограничений по направлению его движения, вращения. С самого начала я написал про Гироскоп, ибо у большинства людей возникают вопросы о необходимости 4-й оси, а про гироскоп и необходимость 4-й рамки для того, чтобы избежать gimbal lock, много где написано. Попробуем смоделировать, что Вы написали. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
I_N_P 0 2 июня, 2020 Опубликовано 2 июня, 2020 · Жалоба Гироскопа нет.Конечная цель - в кардане воспроизвести движение/положение объекта, управление которым задается независимо через угловые скорости по осям ССК. DCM - это direction cosine matrix? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
I_N_P 0 2 июня, 2020 Опубликовано 2 июня, 2020 · Жалоба pi/2 появляется только потому что начальное условие - все рамки в одной плоскости (как на картинке)? Т.е. если изначально плоскость a4-a3 сделать вертикальной, то pi/2 не нужен? Т.е. мы реализуем угол тангажа (угол места) 4ой рамкой? Вот этот момент будут нужными углами соответствующих моторов. А мотор a2 устанавливаете в pi/2. Здесь pi/2 для a2 относительно чего? Плоскость a1-a2 должна стать вертикальной? Или это лишнее, если рамки разведены изначально на pi/2? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 2 июня, 2020 Опубликовано 2 июня, 2020 · Жалоба 2 hours ago, I_N_P said: DCM - это direction cosine matrix? Да. Но что-то у меня теперь вообще сомнения в том, что четвертая рамка Вам нужна. Дело в том, что состояние gimbal lock - оно актуально только тогда, когда вращающие моменты приложены к внутреннему телу. Если Вы сами вращаете рамки, то вы можете установить их в любое положение, никакой блокировки не произойдет. Вопрос только в том, что при приближении к вырожденным точкам (там где ориентация одной из рамок может быть произвольной) непонятно, куда крутить эту самую рамку. Ну так ответ простой - не крутить ее никуда, когда оба аргумента функции atan2 при вычислении угла становятся очень близки к 0 - просто в этом месте прекращаете управлять этим мотором. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
I_N_P 0 2 июня, 2020 Опубликовано 2 июня, 2020 · Жалоба gimbal lock - оно актуально только тогда, когда вращающие моменты приложены к внутреннему телу. я повернул внутреннюю рамку/карту на 90 по тангажу и потерял ось вращения в кардане для вращения вокруг нормальной оси тела (ССК). Да собственно при любом повороте по любой оси на 90 я теряю одну свободу. Чисто теоретически эту точку можно проскакивать и не делать никаких эволюций при любом угле =90. А если задача такая? Выдерживать 90 и совершать эволюции по другим осям? И с pi/2 вопрос (пусть пока будет нужна 4 рамка), это только для случая, когда все рамки в одной плоскости в начальном варианте? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 2 июня, 2020 Опубликовано 2 июня, 2020 · Жалоба 1 hour ago, I_N_P said: Да собственно при любом повороте по любой оси на 90 я теряю одну свободу. Да ничего Вы не теряете. Просто в этом случае положение одной рамки не оказывает влияния на положение тела. Как только Вы выходите из этой вырожденной точки, то положение этой рамки опять определяет положение тела. Все. Если Вы попадете в вырожденную точку, покрутите рамку, которая не влияет на тело, а потом уйдете из точки, то Вам придется быстро вернуть эту рамку в нужное положение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mikhail_015 0 2 июня, 2020 Опубликовано 2 июня, 2020 · Жалоба Так вот как раз и проблема в том, что мы должны в любой точке НЕ ИМЕТЬ вырождения, и иметь возможность не просто выйти из точки вырождения КУДА-ТО, куда позволяет ситуация, и потом ехать дальше, а иметь возможность В ЛЮБОЙ ТОЧКЕ иметь возможность двигаться в ЛЮБОМ направлении... То есть, НЕ ИМЕТЬ нигде вырождения... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 2 июня, 2020 Опубликовано 2 июня, 2020 · Жалоба 43 minutes ago, Mikhail_015 said: а иметь возможность В ЛЮБОЙ ТОЧКЕ иметь возможность двигаться в ЛЮБОМ направлении... У Вас и с тремя рамками есть возможность двигаться в любом направлении. Три угла Эйлера (суть положения трех рамок) однозначно определяют положение тела в пространстве. Еще раз, не путайте проблему блокировки гироскопа с проблемой позиционирования рамок. Блокировка гироскопа из-за того, что моменты вращения он сам создает, и на наружные рамки они передаются через внутренние, а значит в вырожденных точках там просто момент не может передаться. А у Вас - собственное позиционирование, каждую рамку Вы крутите отдельно. Можно крутить из любого положения в любое без проблем и без всяких четвертых рамок. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mikhail_015 0 2 июня, 2020 Опубликовано 2 июня, 2020 · Жалоба Увы, это не так. Вот , например, если бы были 3 рамки (на рисунке), и центральной рамке захочется повернуться (сориентироваться) на Восток, и быть при этом в горизонте - тогда оси 1 и 3 совпадают. И если из этого положения ей надо будет горизонтально развернуться на Юг или Север? И не важно, как в этот момент внутренняя рамка 1 сориентирована - или горизонтально, или повернута по оси 1 на какой-либо угол - она НЕ МОЖЕТ повернуться вокруг вертикальной оси (в сторону Юга или Севера) - её нет... А если бы внешняя (3-я) рамка стояла бы "на ребре", то тогда внутренняя рамка НЕ МОГЛА бы двигаться вертикально верх (ось 2 стояла бы вертикально). А если бы она была повернута на любой другой угол, например, 17 градусов, то рамка 1 не могла бы двигаться по наклонной траектории в 17 градусов... То есть, когда внутренней рамке "захочется" сориентироваться на Восток и быть при этом "в горизонте", (то есть когда СОВПАДАЮТ оси 1 и 3), то возникает проблема, о которой мы и говорим. И мы не можем в момент, когда рамке 1 захочется двинуться в "мертвую зону", сначала развернуть внешнюю рамку, и только потом дать возможность рамке 1 туда двигаться. Она (рамка 1) должна иметь возможность двигаться в любой момент куда угодно... А ведь рамка у нас такая вредная, ей наверняка "захочется" когда-нибудь занять это положение ;-) Для этого и нужна 4-я ось. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 2 июня, 2020 Опубликовано 2 июня, 2020 · Жалоба 2 hours ago, Mikhail_015 said: Для этого и нужна 4-я ось. Что-то чем дальше в лес, тем вообще какой-то туман с этой четвертой осью. А можете вообще ссылку на какое-нибудь описание предоставить (именно про четырехосвевые дела с удержанием в перпендикуляре к рамке 2)? А то я что-то совсем разучился в гугл, ничего не могу найти. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться