Универсальный протокол для управления шасси робота - вар. 1

Обсуждаем рождающиеся мысли и результаты экспериментов.

Универсальный протокол для управления шасси робота - вар. 1

Сообщение =DeaD= » 25 мар 2008, 09:55

Предлагаю обсудить такой вариант управления шасси:

1. Создаём очередь из команд вида (Ls,Rs,Lf,Rf,T), где *s,*f - начальные и конечные скорости вращения соответственно левого и правого колёс, T - желаемое время выполнения команды.
2. Разрешено докладывать команды в очередь, обнулять очередь, узнавать размер очереди и расчетный % выполнения текущей команды.
3. Если по обратной связи видим, что не вписываемся в заданную траекторию, тогда снижаем скорости, увеличивая время манёвра и всё равно выполняем маневр по заданной траектории.
4. При включении специального режима - можно автоматически сглаживать переходы между командами, типа если с места подали команду поехать на полном ходу вперед и больше команд нету - можем её преобразовать в 3 команды - разогнаться по прямой, проехать, аккуратно замедлиться.

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

Кто что может сказать по поводу недостатков такого подхода и или еще что-то дельное?

По итогам думаю сделать реализацию такого протокола в рамках своего модуля GATE-A8D8M2 и выложить исходники.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Универсальный протокол для управления шасси робота - вар. 1

Сообщение EdGull » 25 мар 2008, 10:16

мне нравится.
а для бота надо функцию написать, ваще класс будет!
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Re: Универсальный протокол для управления шасси робота - вар. 1

Сообщение SkyStorm » 25 мар 2008, 10:48

Небольшое замечание. Колеса у нас крутятся не только вперед но и назад.
  • 1. Вариант (Ls,Rs,Lf,Rf,T)
    где *s,*f - начальные и конечные скорости вращения соответственно левого и правого колёс,
    отрицательные *s,*f значения реверс,
    T - желаемое время выполнения команды.
  • 2. Вариант (Ls,Rs,Lf,Rf,Ld,Rd,T)
    где *d направление вращения 0 или 1.
Никто кроме нас!!!
4Robots.ru - Все для роботов!
Аватара пользователя
SkyStorm
 
Сообщения: 2687
Зарегистрирован: 05 фев 2008, 15:33
Откуда: St. Petersburg - Moscow
Skype: SkyStorm77
ФИО: Костюк Константин Вячеславович

Re: Универсальный протокол для управления шасси робота - вар. 1

Сообщение Myp » 25 мар 2008, 10:49

может так?

Код: Выделить всё
/**
    * \example commands_list
    * command regexp:
    * \code
    * ( ((M|R|L)( ((F|S|B)[0-9A-F]{2}) | (C[0-9A-F]{4}) | (G[01]) )) | (D[0-9A-F]{2}) )
    * \endcode
    * Commands list:
    * \code
    * MFxx    < оба мотора вперед с xx скоростью
    * MSxx    < оба мотора тормозят с xx мощностью
    * MBxx    < оба мотора назад с xx скоростью
    * MCxxxx   < оба мотора пройдут xxxx расстояние
    * MGx     < разрешение выполнить комманды для обоих моторов
    * RFxx    < левый мотор вперед с xx скоростью
    * RSxx    < левый мотор тормозит с xx мощностью
    * RFxx    < левый мотор назад с xx скоростью
    * RCxxxx   < левый мотор пройдет xxxx расстояние
    * RGx     < разрешение выполнить комманды для правого мотора
    * LFxx    < левый мотор вперед с xx скоростью
    * LSxx    < левый мотор тормозит с xx мощностью
    * LBxx    < левый мотор назад с xx скоростью
    * LCxxxx   < левый мотор пройдет xxxx расстояние
    * LGx     < разрешение выполнить комманды для левого мотора
    * Dxx     < опросить датчик xx
    * \endcode
    */


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

Re: Универсальный протокол для управления шасси робота - вар. 1

Сообщение =DeaD= » 25 мар 2008, 16:41

2SkyStorm: разумеется, отрицательные значения для скоростей допустимы :)

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

Re: Универсальный протокол для управления шасси робота - вар. 1

Сообщение avr123.nm.ru » 25 мар 2008, 17:16

DeaD, а твой протокол как то согласуется с тем что применяют производители модулей для роботов ? Девантеч и прочие ?
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Re: Универсальный протокол для управления шасси робота - вар. 1

Сообщение =DeaD= » 25 мар 2008, 17:35

avr123.nm.ru писал(а):DeaD, а твой протокол как то согласуется с тем что применяют производители модулей для роботов ? Девантеч и прочие ?

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

Re: Универсальный протокол для управления шасси робота - вар. 1

Сообщение avr123.nm.ru » 25 мар 2008, 18:26

У робоклуб-овского контроллера аналогичный ВРОДЕ протокол. А импортные я не изучал так как они мне не нужны, но у них же они есть и дока есть наверняка. Иначе как бы они модули в "кучку" собирали ?!
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Re: Универсальный протокол для управления шасси робота - вар. 1

Сообщение Duhas » 25 мар 2008, 19:00

а почму мы рулим скоростью ? по идее же регулировать то мы должны перемещение... может задавать угол поворота, и время выполнения задания? зная радиус колеса мы посчитаем перемещение в основном "моске".. а контроллер шасси проедет сколько нужно, рассчитет ШИМ, замедления при пуске\останове.... если уж лезти в управление верхнего уровня ...
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: Универсальный протокол для управления шасси робота - вар. 1

Сообщение =DeaD= » 25 мар 2008, 19:19

avr123.nm.ru писал(а):У робоклуб-овского контроллера аналогичный ВРОДЕ протокол. А импортные я не изучал так как они мне не нужны, но у них же они есть и дока есть наверняка. Иначе как бы они модули в "кучку" собирали ?!

Да нету у него аналогичного протокола, я участвовал в обсуждении протокола, который они делали, они забили на моё предложение со словами "нам нафиг это не надо, нам пока попроще бы чего".

Я же говорю таких финтов ни у кого не видел, поэтому если видели - укажите где :)

Добавлено спустя 2 минуты 50 секунд:
Duhas писал(а):а почму мы рулим скоростью ? по идее же регулировать то мы должны перемещение... может задавать угол поворота, и время выполнения задания? зная радиус колеса мы посчитаем перемещение в основном "моске".. а контроллер шасси проедет сколько нужно, рассчитет ШИМ, замедления при пуске\останове.... если уж лезти в управление верхнего уровня ...

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

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

Re: Универсальный протокол для управления шасси робота - вар. 1

Сообщение Duhas » 25 мар 2008, 19:43

кхм... я бы не сказал.. вот например мы задали скорость 10 об\мин... а колесо нагружено чем нибудь, оно не могет крутиться быстрее 7 оборотов.. а мы наверху посчитали что крутили колесом 1 секунду с такой скоростью... чтобы исправить ситуацию нужно чтобы привод шасси выругалс вверх что мол нимагу твое задание выполнить... получается только 7 оборотов.. верх принял посчитал что нужно делать отправил... дак зачем нагружать передачами? посчитать скорость из поворота и времени на поворот пара тактов... и обратна связь по положению тут есть.. иначе нада будет в верхние мозги еще и данные с энкодеров слать чтобы они у себя обр связть по положения организовали... да и что нагружать то контроллер? ШИМ аппаратный скорее всего, кроме почты и записи регистров таймеров, да обработки данных энкодеров нечего делать больше контроллеру.. пускай чуток арифметики на себе гоняет ... я кстати накидал тут драйвер.. два Н моста.. на полевиках... + логика.. на вход ШИМ и направление.. забирает 2 вывода на 1 движок... ща в электронике выкину ...
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: Универсальный протокол для управления шасси робота - вар. 1

Сообщение =DeaD= » 25 мар 2008, 19:48

Duhas писал(а):кхм... я бы не сказал.. вот например мы задали скорость 10 об\мин... а колесо нагружено чем нибудь, оно не могет крутиться быстрее 7 оборотов.. а мы наверху посчитали что крутили колесом 1 секунду с такой скоростью... чтобы исправить ситуацию нужно чтобы привод шасси выругалс вверх что мол нимагу твое задание выполнить... получается только 7 оборотов.. верх принял посчитал что нужно делать отправил... дак зачем нагружать передачами?

А если прочитать что я предлагаю, тогда будет ясно, что я предлагаю автоматически править эти ошибки и тупо репортить наверх что и как, если спросили, а пока не спросили - не репортить.

Duhas писал(а):посчитать скорость из поворота и времени на поворот пара тактов... и обратна связь по положению тут есть.. иначе нада будет в верхние мозги еще и данные с энкодеров слать чтобы они у себя обр связть по положения организовали... да и что нагружать то контроллер? ШИМ аппаратный скорее всего, кроме почты и записи регистров таймеров, да обработки данных энкодеров нечего делать больше контроллеру.. пускай чуток арифметики на себе гоняет ... я кстати накидал тут драйвер.. два Н моста.. на полевиках... + логика.. на вход ШИМ и направление.. забирает 2 вывода на 1 движок... ща в электронике выкину ...

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

Re: Универсальный протокол для управления шасси робота - вар. 1

Сообщение Duhas » 25 мар 2008, 20:02

ладно .. каждому свое ... просто эсли посмотреть с точки зрения дисциплин ТАУ и приводов роботов ваш подход не правилен)
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: Универсальный протокол для управления шасси робота - вар. 1

Сообщение Виталий » 25 мар 2008, 20:57

просто эсли посмотреть с точки зрения дисциплин ТАУ и приводов роботов ваш подход не правилен)

А какой правилен?
Все новости о моих проектах http://savethebest.ru
Аватара пользователя
Виталий
 
Сообщения: 2114
Зарегистрирован: 08 окт 2004, 16:43
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий

Re: Универсальный протокол для управления шасси робота - вар. 1

Сообщение =DeaD= » 25 мар 2008, 21:20

Duhas писал(а):ладно .. каждому свое ... просто эсли посмотреть с точки зрения дисциплин ТАУ и приводов роботов ваш подход не правилен)

1. Обоснуйте :) честно не понял;
2. Вы предлагаете существенно сузить количество разных доступных маневров, существенно усложнив протокол (введя разные команды для разных движений), но при этом перенести вычисление кликов и скоростей вниз, так что ли?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

След.

Вернуться в Идеи

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

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