LINUX.ORG.RU

[алгоритм] маппинг одной координатной системы в другую

 


0

1

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

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

Существует ли такой алгоритм, которым можно было бы транслировать координаты кривых с изображения в инструкции для поворота роторов руки? Вроде, повернуть на столько-то градусов с такой-то скоростью.


Лучше бы описал систему координат, которой лучше всего описывать положение руки.

В любом случае это 2 формулы

different_thing
()
Ответ на: комментарий от different_thing

Да, сейчас найдем крайние точки, потом будем думать как интерполировать. Тут еще есть идея про kohonen self-organizing maps, но пока неясно, как ее применить.

Still thinking...

xio
() автор топика

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

если ты думаешь, что по этому описанию что-то пониятно, то нет

Waterlaz ★★★★★
()

Если для каждой точки на плоскости существует только один набор значений параметров углов, то сложности трансляции возникнуть не должно. Нужно просто аккуратно написать формулы перевода координат.

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

mashina ★★★★★
()

Аналитическая геометрия, первый курс первый семестр.

Diecae8i
()
Ответ на: комментарий от mashina

Что-то мне сначала показалось, что их 2, а теперь и не знаю)

В общем ТС должен точно описать, что это за рука и что там должно двигаться.

different_thing
()

> рука робота, состоящая из соединенных под разными углами трех моторов, представляющих собой роторы

Реквестирую картинку.

Manhunt ★★★★★
()

Пускай у нас некое прямое преобразование координат рабочего органа W (углы поворота роторов и т.д) в координаты трехмерного пространства R (положение кончика фломастера в пространстве).

R=f(W)

Это преобразование однозначное, то есть для любого W можно получить конкретное R. Обратное скорее всего будет неверно. То есть для некоторого R может быть возможно несколько W.

Тебе подобрать численный алгоритм решения уравнения R=f(W), такой, который найдет одно, или несколько решений W, для заданного R. Я не специалист по таким методам, может какой-нибудь метод Ньютона для многомерного случая.

pathfinder ★★★★
()
Ответ на: комментарий от mashina

У нас дубовый вариант с двумя моторами + один для контроля положения фломастера чисто «писать/не писать».

xio
() автор топика
Ответ на: комментарий от xio

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

Manhunt ★★★★★
()
Ответ на: комментарий от pathfinder

Вроде, повернуть на столько-то градусов с такой-то скоростью.

ИМХО лучше сначала определить маршрут движения в пространстве координат W. А потом отдельной задачей привязать координаты ко времени и отсюда определится со скоростями и т. д.

pathfinder ★★★★
()
Ответ на: комментарий от pathfinder

Это преобразование однозначное, то есть для любого W можно получить конкретное R.

Вооще это неверно. Не для всех W существует точка на R

mashina ★★★★★
()
Ответ на: комментарий от mashina

Да, про трехмерно я, наверное, наврал. Был сначала один вариант вроде http://www.youtube.com/watch?v=gaq0JYiQnOg, сейчас же трехмерность формальная, т.е. вверх-вниз оси нет как таковой, за исключением изменения состояний «писать-не писать».

xio
() автор топика
Ответ на: комментарий от pathfinder

Ещё не известно, сколько степеней свободы у руки) По фото я только 1 шарнир заметил

Я не специалист по таким методам, может какой-нибудь метод Ньютона для многомерного случая.

Щито?

different_thing
()
Ответ на: комментарий от xio

Да, спасибо, это понятно. Мне как раз интересно про алгоритм.

Если ставится задача написать универсальное ПО, которое можно легко перестроить для разных механических рук, копай в сторону универсальных методов численного решения уравнений вида R=f(W). Так, чтобы он было пригодно для разных функций f.

Если надо только для конкретной руки, в конкретном режиме работы и не предполагается, что для написанного кода потребуется в дальнейшем расширять сферу применения, то можно попробовать все ручками посчитать и возможно получишь простой численный или аналитический алгоритм решения уравнения R=f(W)

pathfinder ★★★★
()
Ответ на: комментарий от xio

Тогда не может быть двух «угловых» моторов. Должно быть либо три, как на видео, либо один угловой и один линейный мотор - полярная система координат.

mashina ★★★★★
()
Ответ на: комментарий от different_thing

Я не специалист по таким методам, может какой-нибудь метод Ньютона для многомерного случая.

Щито?

http://ru.wikipedia.org/wiki/Метод_Ньютона см. раздел «Многомерный случай»

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

pathfinder ★★★★
()
Ответ на: комментарий от mashina

Метод Ньютона для решения уравнения вида F(x1,.., Xn) = 0. Здесь есть к чему приравнивать формулу?

f(W)-R=0

Так сойдет?

pathfinder ★★★★
()

Полярная система координат. Дальше любое движение однозначно раскладывается в поворот на угол и сдвиг вдоль радиус-вектора. Поворот на угол обеспечивается вращением вокруг «плеча» (впрямую переводим угол в угол), сдвиг вдоль радиус-вектора - разгибанием «локтя» (которое в свою очередь раскладывается на две компоненты - угол поворота вокруг «плеча» и угол поворота вокруг «локтя»). Дальше суммируем углы (по сути только вокруг «плеча», потому что вокруг локтя оно одно) и получаем движение руки. Третий мотор не нужен.

anonymous
()

Ты учишься или работаешь?

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

anonymous
()
Ответ на: комментарий от anonymous

Людей, предлагавших решать ЭТО при помощи каких-то численных методов - отчислить из университета.

anonymous
()
Ответ на: комментарий от different_thing

Тут формула просто

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

pathfinder ★★★★
()
Ответ на: комментарий от xio

Формулы для x(m1, m2) и y(m1, m2) я уже написал. А тебе нужно наоборот: по заданным x и y найти m1(x, y) и m2(x, y).

На пальцах у меня вроде бы получается так: x^2+y^2 = r1^2+r2^2+2*r1*r2*cos(m2). Если это верно, то m2(x, y) из этого находится тривиально. Зная x, y и m2 легко найти m1.

А дальше остается следить за разрывами в решении (если они будут), и вовремя поднимать-опускать перо.

Manhunt ★★★★★
()
Ответ на: комментарий от anonymous

> Ты учишься или работаешь?

Сессия же :D

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


Похоже на унылую лабу по робототехнике..

Manhunt ★★★★★
()
Ответ на: комментарий от different_thing

> Тогда задача вообще может быть не математической

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

Manhunt ★★★★★
()
Ответ на: комментарий от Manhunt

> Такая задача, как у тебя, решается с помощью школьный знаний тригонометрии.

Похоже на унылую лабу по робототехнике..

Да. Похоже. Не понятно, кто пустил туда топик-стартера, если он не знает тригонометрии

anonymous
()
Ответ на: комментарий от anonymous

> при избыточных степенях свободы эти степени свободы просто исключаются из задачи.

просто


Насчет «просто» ты солгал, анон. Посмотри на биологических существ: какая там заложена избыточность, и какой неиллюзорный профит из этого извлекается.

Manhunt ★★★★★
()
Ответ на: комментарий от anonymous

> сдвиг вдоль радиус-вектора - разгибанием «локтя» (которое в свою очередь раскладывается на две компоненты - угол поворота вокруг «плеча» и угол поворота вокруг «локтя»).

А как же рассчитать согласованный сгиб локтя и плеча? Как бы в этом-то вся и соль.

xio
() автор топика
Ответ на: комментарий от Manhunt

> Насчет «просто» ты солгал, анон. Посмотри на биологических существ: какая там заложена избыточность, и какой неиллюзорный профит из этого извлекается.

Тебе что нужно - чтобы рука рисовала, или извлекать какие-то мистические «профиты»? Если первое - выключаешь третий мотор и задача сводится к поиску углов треугольника с тремя известными сторонами (седьмой класс школы, или восьмой?).

anonymous
()
Ответ на: комментарий от xio

> А как же рассчитать согласованный сгиб локтя и плеча? Как бы в этом-то вся и соль.

Они заведомо согласованы, если ты правильно посчитал углы. В этом и вся соль.

anonymous
()
Ответ на: комментарий от note173

> приходит в голову словосочетание «обратная кинематика»

Во. Как раз то же самое хотел написать.

geekless ★★
()
Ответ на: комментарий от anonymous

> Тебе что нужно - чтобы рука рисовала, или извлекать какие-то мистические «профиты»?

Нужно, чтобы рука рисовала хорошо (высокоточно, энергоэффективно, с наименьшим кумулятивным износом механики, и тд). В зависимости от текущих задач робота.

Manhunt ★★★★★
()

Не читал, но думаю матрица поворота будет в тему.

frey ★★
()
Ответ на: комментарий от Manhunt

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

anonymous
()
Ответ на: комментарий от anonymous

при избыточных степенях свободы эти степени свободы просто исключаются из задачи.

Можно более подробно. А то мне показалось, что эта была какая-то метанация. Пускай у нас положение руки (W) описывается шестью координатами, а положение кончика фломастера в пространстве (R) имеет три координаты (x,y,z).

Налицо избыточность степеней свободы. Как они будут исключаться из решаемой задачи?

pathfinder ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.