roboforum.ru

Технический форум по робототехнике.

Управление двигателями. Парой.

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

Управление двигателями. Парой.

Сообщение Виталий » 20 ноя 2007, 19:48

Привет товарищи!
Вобщем сделал я тут такую задачку, интересную как я думаю всем.
У всех есть (?) робот на котором установлена пара двигателей и энкодеры.
Озаботился я созданием модуля управления всем этим и накидал ТЗ.
Теперь собственно ТЗ:
- модуль предназначен для управления дифференциальным приводом.
- на вход модулю передается значение скорости которую необходимо развить.
- на вход модулю передается значение отставания левого колеса от правого (+5 - отстает на 5 попугаев. -5 - перегоняет на 5 попугаев).
- модуль должен поддерживать заданную скорость движения.
- при невозможности достижения скорости сверху или снизу рапортовать "слишком медленно" и "не догнать" соответственно.
- рассогласование имеет приоритет над скоростью (т.е. если, например, один двигатель может разогнаться до заданной скорости, а второй нет, то первый должен понизить обороты так, чтобы установить заданное рассогласование). Это позволит выполнять маневры с большей точностью жертвуя скоростью.
- в случае невозможности достичь рассогласования сообщить об этом.

Ну а теперь все это вместе одной строкой: модуль должен поддерживать скорость максимально приближенную к заданной при заданном рассогласовании.

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

Re: Управление двигателями. Парой.

Сообщение avr123.nm.ru » 20 ноя 2007, 21:29

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

Re: Управление двигателями. Парой.

Сообщение Виталий » 20 ноя 2007, 22:56

Тут еще нужно указать связь оборотов с пройденым расстоянием.

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

Re: Управление двигателями. Парой.

Сообщение avr123.nm.ru » 20 ноя 2007, 23:56

тогда попугаи это скорость или путь ?

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

Re: Управление двигателями. Парой.

Сообщение Виталий » 21 ноя 2007, 02:30

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

Re: Управление двигателями. Парой.

Сообщение avr123.nm.ru » 21 ноя 2007, 10:01

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

Re: Управление двигателями. Парой.

Сообщение Виталий » 21 ноя 2007, 12:39

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

Re: Управление двигателями. Парой.

Сообщение avr123.nm.ru » 21 ноя 2007, 12:48

Наверно 7 ? это 10 - рассогласование.

Я бы считал скоростью среднее. Т.е. 10 и рассоглас 3 - значит одно 11.5 а второе 8.5
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: Управление двигателями. Парой.

Сообщение Виталий » 21 ноя 2007, 13:44

Наверно 7 ? это 10 - рассогласование.

В моем варианте: желаемая скорость 10, желаемое рассогласование 3.
В идеале на выходе: скорость одного колеса 10, другого 7.


Я бы считал скоростью среднее. Т.е. 10 и рассоглас 3 - значит одно 11.5 а второе 8.5

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

Re: Управление двигателями. Парой.

Сообщение =DeaD= » 27 ноя 2007, 23:42

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

Для одного двигателя - ПИД-регулятор :):
ШИМ=А*ЦелеваяСкорость+Б*(ЦелеваяСкорость-ТекущаяСкорость)+Е
Или вообще матрицу загнать ШИМ=Х(ТекущаяСкорость,ЦелеваяСкорость)

А для расстояний соотвенно:
ШИМ=А*ЦелеваяСкорость+Б*(ЦелеваяСкорость-ТекущаяСкорость)+В*(ЦелевойСчетчик-(ТекущийСчетчик+ЦелеваяСкорость))+Е
Ну или опять же матрица ШИМ=Х(ТекущаяСкорость,ЦелеваяСкорость,ПрогнозноеОтклонениеОтЦелевогоСчетчика)

Е - потому что движение начинается совсем не с нулевого шага ШИМ.

Вариант с расчетом ШИМ для расстояний без матрицы я примерял с моторедукторами робоклуба и их энкодерами в 120 вроде кликов и получал итоговую точность в 2-3 клика на произвольных расстояниях, правда без нагрузки, но с другой стороны я и баловался примерно 3 вечера.

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

PS: Вы как обычно уже все сделали и просто спросить или как? :)

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

Re: Управление двигателями. Парой.

Сообщение Виталий » 28 ноя 2007, 02:02

Почти сделал. =)
Да вот просто интересно как там обстоят дела у народа чтоб мозгами поработать. Оказалось как обычно, т.е. никак. =)

Ну так а вот ваш подход я не понял. Где учет скорости соседнего двигателя? Или это небыло описано? Или это решение для одного двигателя? =)

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

Re: Управление двигателями. Парой.

Сообщение =DeaD= » 28 ноя 2007, 12:44

Виталий писал(а):Ну так а вот ваш подход я не понял. Где учет скорости соседнего двигателя? Или это небыло описано? Или это решение для одного двигателя? =)

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

Re: Управление двигателями. Парой.

Сообщение Myp » 30 ноя 2007, 11:48

=DeaD= писал(а):хотя на мой взгляд там всё очевидно.

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

Re: Управление двигателями. Парой.

Сообщение Виталий » 30 ноя 2007, 12:03

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

Re: Управление двигателями. Парой.

Сообщение Strijar » 30 ноя 2007, 13:46

А вот нефиг сразу 80! ;) Плавно надо...
Блин на работе засада, я ведь энкодеры уже сделал - как раз эту задачу надо решать. А на сервах так лениво, когда RA-27 в столе лежат ;)

Я лично собираюсь делать с задачей скорости временем между импульсами энкодера - как-то уже обсуждали эту тему в Миниботе.
Аватара пользователя
Strijar
 
Сообщения: 664
Зарегистрирован: 28 авг 2006, 17:09
Откуда: Всеволожск (СПб)
прог. языки: С, C++, Python, Lua, VHDL, Verilog, Forth
ФИО: Олег Белоусов

След.

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

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

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