Навигация

Автомат, адаптивный автомат ... разум

Навигация

Сообщение mandigit » 01 дек 2006, 10:42

Имеется робот:
два независимых колеса, третье подруливающее.

Начальное местоположение x0, y0, робот находится под углом u0

подаем на колеса скорость s0, s1 на время dt (база между колесами d)

Вопрос:
местоположение робота (x1, y1, u1)?
Аватара пользователя
mandigit
 
Сообщения: 583
Зарегистрирован: 28 ноя 2005, 12:05
Откуда: Москва

Сообщение Myp » 01 дек 2006, 20:34

а хз
это как повезёт=))
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Сообщение Myp » 01 дек 2006, 23:46

а вобще
бред какойто :lol:

во первых под углом к чему?? к холодильнику или дивану??
или у него это азимут такой?

во вторых
подавать скорость на колёса =)))
скорость можно измерить, а подать затруднительно, можно разве что вращающий момент приложить...
к тому же не задан диаметр колёс а это важно.

и в третьих
чё за dt ???? как можно умножать время на колёсную базу? :shock:

и в пятых
третье колесо действительно подруливающее??
тоесть оно во время движения подруливает?? тады надо добавить в формулу s2 скорость подруливания.
но я думаю тут просто ошибка и третье колесо на самом деле просто обычное опорное=)
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Сообщение =DeaD= » 02 дек 2006, 09:53

Myp писал(а):а вобще
бред какойто :lol:

Эт с чего?

Myp писал(а):во первых под углом к чему?? к холодильнику или дивану?? или у него это азимут такой?

А есть разница? Да хоть к экватору.

Myp писал(а):во вторых
подавать скорость на колёса =)))
скорость можно измерить, а подать затруднительно, можно разве что вращающий момент приложить...
к тому же не задан диаметр колёс а это важно.

Педант!  :lol:

Myp писал(а):и в третьих
чё за dt ???? как можно умножать время на колёсную базу? :shock:

Всегда вроде dt было приращением по времени, а не произведением D*T, как вам неожиданно показалось. Опять же - с чего вы тогда тут решили что t это время? может это вообще коэффициент у него такой? :)))

Myp писал(а):и в пятых
третье колесо действительно подруливающее??
тоесть оно во время движения подруливает?? тады надо добавить в формулу s2 скорость подруливания.
но я думаю тут просто ошибка и третье колесо на самом деле просто обычное опорное=)

Это что еще за фуфел - скорость подруливания? :) сами придумали? :)
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Сообщение Myp » 02 дек 2006, 11:35

ну а чё чё может быть у подруливающего колеса? =)
скорость подруливания


на время dt (база между колесами d)

но ведь так написано спецально в скобочках что d это не дельта как может показатся а именно колёсная база :lol:
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Сообщение Vovan » 02 дек 2006, 12:25

Ну задачка-то простая, только условие, мягко говоря, корявое.
Ответ:
Х1=Х0; У1=У0; U1=S1*t/d (радиан) (ответ строго в соответствии с условием задачи!)
Объяснение: если введены Х0 и У0 значит S0 тоже ноль, следовательно робот просто поворачивается на месте в точке Х0 и У0  на угол U1 который высчитывается по приведённой, выше, формуле.
Примечание:
если есть желание получить корректный ответ на заданный вопрос, рекомендую задавать корректный вопрос, причём желательно, в соответствии с общепринятыми обозначениями, такими как скорость она и в Африке V, путь он и в Азии S, радиус он на всей Земле R, углы (ну нет тут шрифта альфа, бета, гамма...) уж ладно a,b и т.д... к времени (t) претензий нет :)
Если же ответ не интересует, то вопрос лучше не задавать. :D
___________
С уважением
Vovan
Аватара пользователя
Vovan
 
Сообщения: 3340
Зарегистрирован: 05 окт 2005, 12:03
Откуда: Литва
прог. языки: asm

Re: Навигация

Сообщение GraphD » 02 дек 2006, 14:27

mandigit писал(а):Имеется робот:
два независимых колеса, третье подруливающее.

Начальное местоположение x0, y0, робот находится под углом u0

подаем на колеса скорость s0, s1 на время dt (база между колесами d)

Вопрос:
местоположение робота (x1, y1, u1)?


Если это то, что я подумал, то помоему решение такое (см. рис., радиус колеса R, омеги - угловые скорости, которые имеют колеса, фи - угол наклона системы)
Вложения
coleso.gif
Последний раз редактировалось GraphD 02 дек 2006, 21:15, всего редактировалось 1 раз.
GraphD
 
Сообщения: 157
Зарегистрирован: 01 окт 2005, 00:56
Откуда: С.-Петербург

Сообщение D-M » 02 дек 2006, 15:23

вот это тоже посмотри
Вложения
Динамика мобильных роботов.pdf
Динамика мобильных роботов
(146.65 КиБ) Скачиваний: 195
Аватара пользователя
D-M
 
Сообщения: 486
Зарегистрирован: 28 мар 2006, 17:28
Откуда: Пенза

Сообщение =DeaD= » 02 дек 2006, 19:14

Ну вот вам мой вариант приближенного ответа при малом dt :)

Если s0,s1 - скорости колеса в смысле по поверхности (то есть скорость движения точки на поверхности колеса), тогда ответ такой:

u1=u0+(s0-s1)*dt/d;
x1=x0+cos((u1+u0)/2)*dt*(s1+s2)/2
y1=y0+sin((u1+u0)/2)*dt*(s1+s2)/2
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Сообщение GraphD » 02 дек 2006, 20:43

=DeaD= писал(а):Ну вот вам мой вариант приближенного ответа при малом dt :)

Если s0,s1 - скорости колеса в смысле по поверхности (то есть скорость движения точки на поверхности колеса),


это относительно чего скорость?
Последний раз редактировалось GraphD 02 дек 2006, 21:05, всего редактировалось 1 раз.
GraphD
 
Сообщения: 157
Зарегистрирован: 01 окт 2005, 00:56
Откуда: С.-Петербург

Сообщение =DeaD= » 02 дек 2006, 20:58

GraphD писал(а):
=DeaD= писал(а):Ну вот вам мой вариант приближенного ответа при малом dt :)

Если s0,s1 - скорости колеса в смысле по поверхности (то есть скорость движения точки на поверхности колеса),


что за скорость?????????
точнее относительно чего?

Ну левое колесо катится вперед со скоростью 1м/с - вот это скорость.
Соответственно когда назад, то -1м/с.
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Сообщение GraphD » 02 дек 2006, 21:08

=DeaD= писал(а):Ну левое колесо катится вперед со скоростью 1м/с - вот это скорость.
Соответственно когда назад, то -1м/с.

а понятно. линейная, все правильно.
у меня ошибка
u1 = u0 + R(w2-w1)t/d - так должно быть в случае угловых скоростей.
а весь вывод свой можешь запостить?
GraphD
 
Сообщения: 157
Зарегистрирован: 01 окт 2005, 00:56
Откуда: С.-Петербург

Сообщение =DeaD= » 02 дек 2006, 23:42

GraphD писал(а):а понятно. линейная, все правильно.
у меня ошибка
u1 = u0 + R(w2-w1)t/d - так должно быть в случае угловых скоростей.
а весь вывод свой можешь запостить?

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

Если быть предельно точным - конечно надо интегралы расписывать, как у вас, только я бы не стал их отдельно для каждого колеса выписывать, потому как лучше для средней точки между ведущими колесами их сразу писать.
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Сообщение GraphD » 03 дек 2006, 08:50

=DeaD= писал(а):А что именно вызывает вопросы? У меня нет никакого вывода, это я сразу написал исходя из общих рассуждений, но какие нужно части могу подробно расписать.

>> u1=u0+(s0-s1)*dt/d;
ну это понятно

>> x1=x0+cos((u1+u0)/2)*dt*(s1+s2)/2
>> y1=y0+sin((u1+u0)/2)*dt*(s1+s2)/2
а тут в чем логика... как такое вывести из интуиции непонятно. я б такое сразу не вывел, а тем более как приближенное решение.
GraphD
 
Сообщения: 157
Зарегистрирован: 01 окт 2005, 00:56
Откуда: С.-Петербург

Сообщение =DeaD= » 03 дек 2006, 10:27

GraphD писал(а):>> x1=x0+cos((u1+u0)/2)*dt*(s1+s2)/2
>> y1=y0+sin((u1+u0)/2)*dt*(s1+s2)/2
а тут в чем логика... как такое вывести из интуиции непонятно. я б такое сразу не вывел, а тем более как приближенное решение.

Ну как в чем - мы аппроксимируем траекторию отрезком.
Угол его наклона - это средний угол наклона по траектории. Так как он меняется плавно, то берем среднее арифметическое между начальным и конечным углом, то есть (u1+u0).

Дальше - откуда я нарыл (s1+s2)/2:

Чуть сложнее. Будем считать что наш минимальный квант движения мы разложим на 3 микрохода:
1. Развернуться на месте на половину угла;
2. Проехаться по прямой;
3. Развернуться на оставшуюся половину угла;

То есть (s1,s2) мы раскладываем на (a,-a)+(b,b)
и делаем ходы (a/2,-a/2), (b,b), (a/2,-a/2).

Из уравнения очевидным образом вытекает, что b=(s0+s2)/2

Кстати, именно эти 3 микрохода и приведут к указанным мною выше формулам.

Это как я оценивал из интуиции.

Теперь точное решение.

Скорость средней точки отрезка есть среднее скоростей её концов, легко считается из уравнений физической связи:

d(yCenter)=d((y0+y1)/2)=(d(y0)+d(y1))/2
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

След.

Вернуться в Алгоритмы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5