2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему
 
 Движение двухколёсной тележки
Сообщение14.04.2020, 01:50 
Аватара пользователя


28/05/15
74
Помогите, пожалуйста, разобраться с задачей.

Я не уверен, в какой раздел её следует отнести, я бы это отнёс к классической механике.

Есть двухколёсная тележка, колёса жёстко посажены на общую ось, но вращаться могут незасимо. Известны функции $\theta_1(t), \theta_2(t)$ - углы поворота каждого из колёс (относительно некого абсолютного значения), нужно найти зависимость координат каждого из колёс на плоскости.

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

Что я пока сумел понять. Пусть координаты колёс (точки соприкосновения колеса с плоскостью) это векторы $u(t), v(t)$, тогда имеются следующие связи:

1. $\|u - v\| = c$ - ширина тележки (известная величина), это условие того, что колёса жёстко посажены на тележку

2. $\dot{u} \times \dot{v} = 0$ - это условие того, что векторы скоростей тележек коллинеарны (смешанное произведение равно нулю, детерминант составленной из векторов матрицы равен нулю, одно скалярное уравнение), это получается, потому что колёсам нельзя поворачиваться

3. $\|\dot{u}\| = R\dot{\theta_1}$, $\|\dot{v}\| = R\dot{\theta_2}$, а это условие непроскальзывания, вектор скорости точки касания равен вектору скорости точки на колесе, здесь R - радиус колеса (одинаковый у обоих, и тоже известен)

Итого, мы имеем 4 уравнения связи (1, 2 и два из пункта 3). Уравнения 2 и 3 по сути идут от непроскальзывания.

Что, получается, нам дано. Нам известна зависимость длины векторов скорости кривых $u$ и $v$, также известно, что в каждый момент времени точки отстоят друг от друга на расстояние $c$ и векторы скорости параллельны друг другу.

Как теперь правильно найти зависимость $u$ и $v$ от $t$?

Задача в изначальном варианте численная, поэтому если она не имеет аналитического решения, это не страшно.

Я помучил гугл, и удалось найти ссылки на статью "Буданов В.М., Девянин Е.А. О движении колёсных роботов // ПММ. 2003, Т. 67. Вып. 2. С. 244255." , но найти текст статьи удалось только на английском, где можно добыть русский текст? Думаю, эта статья очень многое прояснила бы.

 Профиль  
                  
 
 Re: Движение двухколёсной тележки
Сообщение14.04.2020, 09:07 
Аватара пользователя


26/05/12
1694
приходит весна?
Во-первых, там где модули, надо возвести модули в квадрат и избавится от них, перейдя к координатам. Во-вторых, после этого надо первое уравнение продифференцировать. В результате вы получите полную систему на координаты векторов скоростей: четыре неизвестных, четыре скалярных уравнения. Недостаток — уравнения квадратные (кроме первого). Разрешаете эту систему относительно скоростей и приходите к стандартному дифференциальному уравнению первого порядка: $$\dot{\overrightarrow{R}}=F\left(\overrightarrow{R}\right)$$ После чего интегрируете его. Последние два шага можно делать численно.

А ещё я бы подумал о том, как бы уменьшить число неизвестных. Например можно ввести координату центра тележки и угол её азимутального направления, поскольку расстояние между колёсам жёстко задано. Это, например, решит проблему с накоплением ошибок в координатах колёс при численном интегрировании и отклонении этого жёстко заданного расстояния от изначальной константы. Да и вообще, чем меньше неизвестных — тем лучше.

 Профиль  
                  
 
 Re: Движение двухколёсной тележки
Сообщение14.04.2020, 11:43 
Аватара пользователя


28/05/15
74
Расписал в $r=(x, y)$ - координаты центра оси и $\alpha$ - азимут:

$$
\left(\dot{x} - \frac{1}{2}b\dot{\alpha}\cos{\alpha}\right)^2 + \left(\dot{x} - \frac{1}{2}b\dot{\alpha}\sin{\alpha}\right)^2 = R^2\dot{\theta_1}^2
$$

$$
\left(\dot{x} + \frac{1}{2}b\dot{\alpha}\cos{\alpha}\right)^2 + \left(\dot{x} + \frac{1}{2}b\dot{\alpha}\sin{\alpha}\right)^2 = R^2\dot{\theta_2}^2
$$

В этой параметризации уравнение (1) выполнено автоматически. Уравнение (2) принимает вид:

$$
\left(\dot{x} - \frac{1}{2}b\dot{\alpha}\cos{\alpha}\right)\left(\dot{y} + \frac{1}{2}b\dot{\alpha}\sin{\alpha}\right) - \left(\dot{x} - \frac{1}{2}b\dot{\alpha}\sin{\alpha}\right)\left(\dot{y} + \frac{1}{2}b\dot{\alpha}\cos{\alpha}\right) = 0
$$

Что-то пугает меня эта система :) . Теоретически её решить вполне реально. У меня следующие входные данные - последовательность измерений значений $\theta_1$ и $\theta_2$, и нужно определить положение тележки (например $r$ и $\alpha$). Самый простой вариант - считать, что на отрезках между измерениями $\theta_{1, 2}$ менялись линейно (соответствует случаю, когда скорости вращения колёс меняются скачком, ускорение - дельта-функция). При таком допущении траектории легко описать явно (участки окружностей). Я хотел сделать более аккуратно - кубическими сплайнами (считая, что скорее всего колесами управляет что-то типа сервопривода, тяга должна меняться гладко, тяга это ускорение - вторая производная). В этом случае $\theta_{1, 2}$ были бы полиномами 3 степени. Но в этом случае скорее всего, даже если вручную решить систему, в правой части получится достаточно хитрая функция, которая я почти уверен не интегрируется в элементарных функциях.

Теперь думаю, стоит ли это всё того, чтобы брать модель со сплайнами...

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

 Профиль  
                  
 
 Re: Движение двухколёсной тележки
Сообщение14.04.2020, 12:09 
Заслуженный участник
Аватара пользователя


23/08/07
5494
Нов-ск
Линейная скорость колеса известна (определена его угловой скоростью)
Направление движения колеса известно (определено разностью колёсных углов)

Так что всё известно, никаких уравнений решать не надо.

 Профиль  
                  
 
 Re: Движение двухколёсной тележки
Сообщение14.04.2020, 12:27 
Аватара пользователя


28/05/15
74
TOTAL в сообщении #1454448 писал(а):
Линейная скорость колеса известна (определена его угловой скоростью)
Направление движения колеса известно (определено разностью колёсных углов)

Так что всё известно, никаких уравнений решать не надо.


Немогли бы вы про направление объяснить поподробнее? Мне это совсем не очевидно.

 Профиль  
                  
 
 Re: Движение двухколёсной тележки
Сообщение14.04.2020, 12:35 
Заслуженный участник
Аватара пользователя


23/08/07
5494
Нов-ск
zcorvid в сообщении #1454451 писал(а):
Немогли бы вы про направление объяснить поподробнее? Мне это совсем не очевидно.

$(\theta_1(t) - \theta_2(t))*R/L$
Ось (длины $L$) меняет направление на такой угол потому, что колёса (радиуса $R$), провернулись на разные углы

 Профиль  
                  
 
 Re: Движение двухколёсной тележки
Сообщение14.04.2020, 12:56 
Аватара пользователя


28/05/15
74
TOTAL в сообщении #1454453 писал(а):
$(\theta_1(t) - \theta_2(t))\cdot R/L$
Ось (длины $L$) меняет направление на такой угол потому, что колёса (радиуса $R$), провернулись на разные углы


Навскидку формула выглядит очень сомнительной. Рассмотрим некоторый отрезок времени $[t_1, t_2]$. Согласно вашему утверждению положение тележки в момент $t_2$ определяется лишь значениями углов в момент времени $t_2$ (и, конечно, начальным положением тележки), но мне кажется легко привести контрпример.

Пусть отрезок времени $[0, 1]$, в момент $0$ зададим положение обоих углов нулями, в момент $1$ зададим, скажем, по $\pi$. Тогда если углы менялись линейно на заданном промежутке, то тележка двигалась по прямой и попала в крайний конец отрезка этой прямой, если же ои менялись чуть хитрее: на отрезке $[0, 0.25]$ линейно одинаково, затем на $[0.25, 0.5]$ линейно но с противоположными угловыми коэффициентами (тележка просто развернётся на $180$ градусов), затем на $[0.5, 0.75]$ опять линейно одинаково (тележка едет в обратную сторону - вернулась в прежнее положение, но повёрнута на $180$ градусов), теперь на $[0.75, 1]$ опять разворот. Нетрудно подобрать коэффициенты линейных зависимостей так, чтобы конечные положения колёс были такими же, как в случае первого движения, но в отличие от первого, положение тележки не изменилось.

 Профиль  
                  
 
 Re: Движение двухколёсной тележки
Сообщение14.04.2020, 13:05 
Заслуженный участник
Аватара пользователя


23/08/07
5494
Нов-ск
zcorvid в сообщении #1454461 писал(а):
Нетрудно подобрать коэффициенты линейных зависимостей так, чтобы конечные положения колёс были такими же, как в случае первого движения, но в отличие от первого, положение тележки не изменилось.
Конечная ориентация тележки одинакова в обоих случаях. Эта формула задает ориентацию.

 Профиль  
                  
 
 Re: Движение двухколёсной тележки
Сообщение14.04.2020, 13:25 
Аватара пользователя


28/05/15
74
TOTAL в сообщении #1454468 писал(а):
Конечная ориентация тележки одинакова в обоих случаях. Эта формула задает ориентацию.


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

Или, может быть, кто-нибудь сможет построить контрпример? Или обосновать утверждение? :)

 Профиль  
                  
 
 Re: Движение двухколёсной тележки
Сообщение14.04.2020, 13:47 
Аватара пользователя


26/05/12
1694
приходит весна?
zcorvid, любое движение абсолютно твёрдого тела есть композиция смещения центра масс и вращения вокруг него. Причём, эти два движения коммутируют, поэтому любую композицию движений (в том числе интеграл) можно разбить на две независимые части: смещение центра масс и вращение. Другими словами, ваша задача распадается на две независимые задачи.

 Профиль  
                  
 
 Re: Движение двухколёсной тележки
Сообщение14.04.2020, 14:24 
Аватара пользователя


28/05/15
74
B@R5uk в сообщении #1454476 писал(а):
zcorvid, любое движение абсолютно твёрдого тела есть композиция смещения центра масс и вращения вокруг него. Причём, эти два движения коммутируют, поэтому любую композицию движений (в том числе интеграл) можно разбить на две независимые части: смещение центра масс и вращение. Другими словами, ваша задача распадается на две независимые задачи.


Кажется я начинаю это понимать... А можно как-то это же получить из уравнений, которые я привёл выше? Они по идее должны развалиться в пару система 2 уравнений с 2 неизвестными и 1 уравнение с 1 неизвестной, или что-то в таком духе...

 Профиль  
                  
 
 Re: Движение двухколёсной тележки
Сообщение14.04.2020, 16:35 
Заслуженный участник


26/05/14
981
zcorvid, кажется три исходные уравнения позволяют тележке скользить вдоль оси соединяющей колёса. Надо добавить пару уравнений которые это запретят. Заодно они покроют первое уравнение.

-- 14.04.2020, 16:43 --

Как насчёт $\dot{u} = R\dot{\theta_1}\left(u - v\right) \times z$ ?

 Профиль  
                  
 
 Re: Движение двухколёсной тележки
Сообщение14.04.2020, 17:48 
Аватара пользователя


28/05/15
74
Спасибо за все советы, всё как следует обдумав, я нашёл решение. Изначально я взял ложный след и излишне усложнил систему, всё гораздо проще. Если записать условия непроскальзывания в виде проекций, получится несложная система:

$$
\dot{x} - c \dot{\alpha}\cos{\alpha} = R\dot{\theta_1}\cos{\alpha}
$$
$$
\dot{y} - c \dot{\alpha}\sin{\alpha} = R\dot{\theta_1}\sin{\alpha}
$$
$$
\dot{x} + c \dot{\alpha}\cos{\alpha} = R\dot{\theta_2}\cos{\alpha}
$$
$$
\dot{y} + c \dot{\alpha}\sin{\alpha} = R\dot{\theta_2}\sin{\alpha}
$$
Её довольно легко решить, и получатся следующие решения (формула для вычисления азимута также получилась такой, как сказали выше):

$$
\alpha(t) = \alpha(0) + \frac{R}{c} \left( \Delta(t) - \Delta(0) \right), \Delta = \theta_2 - \theta_1
$$
$$
x(t) = R\int\limits_{\tau = 0}^{\tau = t} \cos{\alpha}d(\theta_1 + \theta_2)
$$
$$
y(t) = R\int\limits_{\tau = 0}^{\tau = t} \sin{\alpha}d(\theta_1 + \theta_2)
$$

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

Модераторы: Модераторы Математики, Супермодераторы



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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group