Технический форум по робототехнике.
=DeaD= » 27 мар 2008, 10:33
Виталий писал(а):Я использую такой вариант, но без T. Непонятно зачем нужно время, ведь траектории задаются расстоянием, если у нас не танцы роботов конечно. Хотя в общем случае можно оставить.
Тоже думаю надо оставить

потому как вдруг надо как раз "танцы роботов"

Виталий писал(а):А еще было замечено, что в моем случае не играет роли параметр - начальная скорость, т.к. начальная скорость - всегда текущая скорость робота на момент выдачи команды.
Ну начальную скорость надо тоже, потому как может быть в каких-то случаях надо плавно трогаться, а в каких-то с места рвать, а то неоднозначность получается...
По крайней мере ничего недостающего тут уже не видится?
Виталий » 27 мар 2008, 11:25
Мне бы такого протокола наверняка хватило...
steel_monkey » 27 мар 2008, 12:24
Кстати, "собственное движение" в данном случае-спирать. Ну а время... надо сразу написать так, чтобы если оно равно нулю ( передали так ), вообще не участвовует. То есть им вполне можно пренебечь.
Вы (сори, привычка у меня такая) в каком компилере писать собираетесь?
Виталий » 27 мар 2008, 13:09
А вы пишете в компилере? =)
=DeaD= » 27 мар 2008, 13:15
steel_monkey писал(а):Кстати, "собственное движение" в данном случае-спирать.
Это специально непонятно написано?

"Спираль" что ли?
steel_monkey писал(а):Ну а время... надо сразу написать так, чтобы если оно равно нулю ( передали так ), вообще не участвовует. То есть им вполне можно пренебечь.
Не пренебречь, а рассчитать самим.
steel_monkey писал(а):Вы (сори, привычка у меня такая) в каком компилере писать собираетесь?
WinAVR
Добавлено спустя 1 минуту 5 секунд:Виталий писал(а):А вы пишете в компилере? =)
Вот ведь лишь бы поглумиться!

Duhas » 27 мар 2008, 18:50
кхм.. мы же управляем шасси не раз в час? и даже если так то переменная Т должна быть больше часа..
как я вижу работу шасси:
если бот стоит на месте, то первая команда приводит к разгону, пускай алгоритм разгона задан, и его параметры мы можем посчитать относительно заданных расстояния и времени... дальше если мы хотим ехать постоянно, то пока не осталось например 0.25 от заданного времени в первой команде мы кидаем шасси новую...в которой снова указано расстояние и время.. если такая команда пришла до конца выполнения первого задания шасси сглаживает скорости (например в 1 команде 10 см за 1 секунду а во второй 10 за 2 секунды) и после выполнения певого заданияпереходит ко второму...
вопщем, если за некоторое врем до конца выполнения текущей задачи не пришло новых команд, то переходим в замедлению, учитывая что остановиться надо за оставшееся время...
да траектория - окружность...в том числе и в предельном случае.. а в противоположно предельном - точка... так как зная базу колес крутиться на месте не сложно ...
=DeaD= » 27 мар 2008, 19:43
Duhas писал(а):кхм.. мы же управляем шасси не раз в час? и даже если так то переменная Т должна быть больше часа..
Не понял вообще этой фразы.
Duhas писал(а):как я вижу работу шасси:
если бот стоит на месте, то первая команда приводит к разгону, пускай алгоритм разгона задан, и его параметры мы можем посчитать относительно заданных расстояния и времени... дальше если мы хотим ехать постоянно, то пока не осталось например 0.25 от заданного времени в первой команде мы кидаем шасси новую...в которой снова указано расстояние и время.. если такая команда пришла до конца выполнения первого задания шасси сглаживает скорости (например в 1 команде 10 см за 1 секунду а во второй 10 за 2 секунды) и после выполнения певого заданияпереходит ко второму...
вопщем, если за некоторое врем до конца выполнения текущей задачи не пришло новых команд, то переходим в замедлению, учитывая что остановиться надо за оставшееся время...
да траектория - окружность...в том числе и в предельном случае.. а в противоположно предельном - точка... так как зная базу колес крутиться на месте не сложно ...
Вы не могли бы сформулировать формат команд? Тяжело обсуждать то что вы себе придумали и не изложили четко.
Правильно ли я понимаю, что вы предлагаете вводить команды типа (DL,DR,T)? (Где DL=расстояние которое должно пройти левое колесо, DR - правое, а T - желаемое время)
Duhas » 27 мар 2008, 19:48
да, абсолютно правильно... только не расстояние а угол поворота в кликах энкодера... нет можно конечно и расстоние, разницы мало где пересчитывать его в клики...
=DeaD= » 27 мар 2008, 21:01
Duhas писал(а):да, абсолютно правильно... только не расстояние а угол поворота в кликах энкодера... нет можно конечно и расстоние, разницы мало где пересчитывать его в клики...
Ок, ну хоть тут угадал. Расстояние не важно с принципиальной точки в чем мерять, я тоже считал, что в кликах энкодера меряем для простоты.
Тут ведь какое дело - как скоростью управлять будет шасси, если передаем только расстояние и время? Линейно её менять на отрезке, чтобы вписаться в манёвр или как?
Duhas » 27 мар 2008, 21:06
фишка в том что мы косвенно управлем скоростью ... ведь мы можем задавать отрезки в 1 клик и давать сколь угодномалое время..
фишка в том что мы отдаем в шасси последовательность команд...если тупо едем по прямой то и команды одинауовы.. если нужно изменитьскорость уменьшили\увеличили время выполнения.. все оооочень просто
=DeaD= » 27 мар 2008, 23:41
Я повторю свой вопрос - мы линейно меняем скорость на отрезке или нет? Если я знаю сколько прошло левое и правое колесо - я еще не знаю где я нахожусь, я лишь знаю в каком направлении я сейчас, неужели это не очевидно?
Duhas » 28 мар 2008, 01:35
если отрезок не перва и не последня команда то да... то это не мешает делать отрезки маленькими... а можно сделать и сглаживание скорости между командами ...
=DeaD= » 28 мар 2008, 07:29
Вы еще методы численного нахождения интегралов вспомните... короче вывод один - скорости нам по любому нужны и игнорировать их нельзя, иначе начнем отгребать совсем ненужную нам дополнительную погрешность...
Duhas » 28 мар 2008, 07:57
чесно сказать - забыл уже, хотя недавно были )))
лучше вспомнить физику... имеем перемещение и время - знаем скорость.. так? все равно дискретизация скорости будет... если важно в данный момент контролировать скорость, можно работать с минимальным Т и супать кучу команд .. а можно вообще найти альтернативу ... в посылке выбирать скорость задается или перемещение .. тогла алгоритм обмена будет вообще универсальным... я же расписывал уже пример посылки...
1 байт - контрольный: тут биты состояния привода...
2 байт - время
3 байт - задание для левого привода
4 байт - для правого
в 1 байте выбираем тип управления (скорость\угол), направление, и всякую всячину (например бит запроса подтверждения команды, биты для режимов полный вперед\назад.. режим сна, в котором глушить намертво всю электронику привода, чтоб совсем ничего не кушала...)
ну и 5 байт той же контрольно суммы... мне кажется вполне полная посылка к приводу ...
Виталий » 28 мар 2008, 09:25
Предлагаю новый революционный подход, управление по кликам...
Верхний уровень говорит колесу, клик-клик-клик-клик-клик-клик-клик, а оно повторяет, че быстрее оно говорит, тем больше скорость. Расстояние - количество кликов