roboforum.ru

Технический форум по робототехнике.

Смысл инверсивной кинематики

Смысл инверсивной кинематики

Longer » 19 мар 2018, 12:08

Всем привет!
Собрал гексапода на 18 сервах, мозг - arduino mega. Написал хождение вперёд просто командами "сдвинуть эту серву на этот угол, другую на другой и т.д."
В гугле попадаются статьи, где ребята пишут для своих роботов шагоходов инверсивную кинематику. Так как первый раз сталкиваюсь с этим понятием, то возникли вопросы:
1. Нога двигается 3 сервами, самый простой способ её сдвинуть - задействовать всего 2 сервы, одна поднимется прям на небольшой угол, а вторая сдвинет ногу вперёд и т.д., то есть совершится минимальное движение. Но ведь лучше задействовать все 3 сервы и сдвигать на большие углы, чтобы шаги были более эффектными на вид. Как разные способы достижения одного и того же положения учитываются в инверсивной кинематике?
2. Какой вообще смысл в решении задачи инверсивной кинематики, если можно тупо заранее вбить углы в память контроллера, вместо того, чтоб контроллер мучился ещё и считал эти углы?
3. В серьёзных разработках были (есть?) применения, для программирования движений робота, команд с заранее заданными углами?

Re: Смысл инверсивной кинематики

loox » 19 мар 2018, 20:32

1.Прежде всего, правильно писать: ИНВЕРСНАЯ КИНЕМАТИКА
2. На 2 и 3 Ваш вопрос, вы можете получить, прочитав это определение (википедия):
Инверсная кинематика (инверсная кинематическая анимация, англ. inverse kinematics, IK) — процесс определения параметров связанных гибких объектов (например, кинематическая пара или кинематическая цепь) для достижения необходимой позиции, ориентации и расположения этих объектов. Инверсная кинематика является типом планирования движения (англ.). Инверсная кинематика активно используется в робототехнике, трёхмерной компьютерной анимации и в разработке компьютерных игр. Она используется в основном в тех ситуациях, когда необходимо точное позиционирование гибких сочленений одного объекта относительно других объектов окружающей среды. Алгоритм инверсной кинематики противоположен алгоритму прямой кинематики.
3. Хотите задать вопрос, спрашивайте по существу
Спасибо loox

Re: Смысл инверсивной кинематики

Longer » 19 мар 2018, 22:09

Всё равно не могу понять нужно ли моему роботу использовать инверсную кинематику или нет? У меня гексапод, 18 серв, движения пока что по заранее заданным углам. Некоторые ребята делают для своих гексаподов алгоритм с инверсной кинематикой, и я не пойму почему. Разве контроллер не загружается вычислениями? Тем более нога у робота всегда ставится на пол, поэтому для чего постоянно рассчитывать одни и те же углы вместо того, чтобы использовать заранее готовые? Меня прежде всего интересует преимущество инверсной кинематики в алгоритме гексапода.

Re: Смысл инверсивной кинематики

Romeo » 20 мар 2018, 12:53

Если хотите просто гексапода с базовым набором движений, то не используйте инверсную механику.
Мой гексапод например, может наклониться на 20 градусов влево, а потом в таком положении пойти вправо под углом 45 градусов.
Ваши "скриптованные" действия такого позволить не смогут.
Вложения
P1080241.JPG

Re: Смысл инверсивной кинематики

Longer » 20 мар 2018, 15:25

Romeo писал(а):Если хотите просто гексапода с базовым набором движений, то не используйте инверсную механику.
Мой гексапод например, может наклониться на 20 градусов влево, а потом в таком положении пойти вправо под углом 45 градусов.
Ваши "скриптованные" действия такого позволить не смогут.

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

Re: Смысл инверсивной кинематики

Romeo » 21 мар 2018, 00:04

Есть всего 2 решения уравнений инверсной кинематики.
Необходимо учесть, что если нельзя построить треугольник из звеньев, то решений нет.
1-е условие отсутствия решений: расстояние до точки (в плоскости XZ) < суммы длины 2-го и 3-го звеньев.
2-е условие: длина звена 2 > расст_до_точки + звено2 + звено3) / 2
3-е условие: длина звена 3 > расст_до_точки + звено2 + звено3) / 2

Верное решение выбирается исходя из полученных углов поворота звеньев.
Я например, отсеивал по знаку.
Сначала решал уравнения инверсной кинематики по проекции в плоскости ХZ (вид сбоку), находил углы поворота 2-х последних звеньев, а затем по проекции в плоскости XY (вид сверху) определял поворот первого звена. Причём, каждая нога имела свою независимую систему координат.
Я бы скинул исходник на VB6, но там столько неверчено, что разобраться в коде будет сложно.
Вложения
11.jpg

Re: Смысл инверсивной кинематики

Longer » 21 мар 2018, 11:41

Romeo писал(а):Есть всего 2 решения уравнений инверсной кинематики.

Верное решение выбирается исходя из полученных углов поворота звеньев.

Получается для каждого положения ноги нужно решать уравнения? Например в движении вперёд робот сначала поднимает ногу, потом сдвигает вперёд, потом опускает, потом сдвигает назад, и вот для каждого положения нужно решать уравнения?
И ещё координаты для того, чтобы задать движение через инверсную кинематику, откуда взять? Их заранее в память вбить?

Re: Смысл инверсивной кинематики

TedBeer » 21 мар 2018, 13:47

Подход должен быть комбинированный.
Робот оценил свободное пространство впереди и бежит скачками используя зашитые эффективные программы передвижения. Углы все заданы, считать не надо, только знай перебирай ногами.
Робот увидел препятствие. Тут уже нужна инверсная кинематика. Оценил высоту препятствия - понял на какую высоту надо будет задрать лапы, чтобы преодолеть препятствие, посчитал на какое расстояние надо подойти, чтобы задача имела решение. Пересчитал требуемые углы и последовательность движений.
Или увидел щель - оценил, что надо сделать очень длинный шаг. Промежуточной опоры нет.
Эти специальные движения не являются энергоэффективными, а нужны для решения локальных проблем.
Возможно потребуется задействовать специальные механизмы.

Re: Смысл инверсивной кинематики

Romeo » 21 мар 2018, 14:48

Я считал каждое движение, поскольку у меня на концах лап были концевики + был акселлерометр.
Робот мог бегать по пересечённой местности, если можно было пройти.


Rambler\'s Top100 Mail.ru counter