roboforum.ru

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

Двухколесный вращающийся робот

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

Двухколесный вращающийся робот

Сообщение Radist » 19 сен 2010, 21:02

Читая робофорум, наткнулся на интересную ссылку
forum31/topic5401.html#p87852
Появилась идея сделать нечто подобное (не прямо сейчас, пока я занят другим проектом). Тем более что для колесно-моторной части у меня есть наработки. Для чего нужен такой робот? Для меня это просто интересная конструкторская задача - сделать девайс, у которого центр масс находится в геометрическом центре. Конечно нужно предусмотреть регулировку центра масс по двум осям. Что должен делать такой робот? Думаю пусть делает то же, что и прототип - волчок медленно ездит по линии. Теперь вопросы, которые я выношу на обсуждение.

Я так полагаю, как происходит движение. Если скорости обоих колес равны (диаметры колес тоже равны) - то робот крутится на месте. Если скорости не равны - то после одного оборота робот сдвинется по дуге (ее радиус равен бесконечности при равных скоростях, и равен расстоянию между колес при максимально различных скоростях). Робот будет ехать отрезками дуг, надо лишь вовремя менять быстрые и медленные колеса. Как узнать в какой момент нужно поменять скорости? Я пока думаю так: спереди и сзади стоит по датчику линии. После одного оборота вокруг оси меняем скорость. Это ограничивает требования к габаритам робота и минимальному радиусу поворота - трасса должна быть такой, чтоб ее можно было апроксимировать кусочно-линейно отрезками, равными расстоянию между датчиками. Это все простой подход к решению задачи. Датчиков может быть больше, есть возможность на оба колеса поставить энкодеры. Надо ли это? Я понимаю, что против скорости будет амплитуда "виляний робота", есть ли смысл гнаться за скоростью?

Робота я представляю круглым, два колеса находятся на диаметре, центр масс в центре. Вращение всегда в одну сторону. Для красоты можно сверху по окружности поставить светодиодов, датчики линии будут кадровыми синхроимпульсами, можно красивую цветовую установку сделать, в полутьме думаю будет красиво.

У прототипа есть ссылка на форум, говорят что там все просто, я посмотрел - просто для тех, кто собаку съел в пололу. Да и не люблю я чужое копировать, беру максимум идею. Напомню основные вопросы по теме:
- правильно ли я все прикинул
- нет ли лучшего алгоритма
- сколько лучше датчиков поставить по минимуму
- ну и попутные вопросы, о которых я не вспомнил.
Аватара пользователя
Radist
 
Сообщения: 2253
Зарегистрирован: 01 июл 2009, 08:59
Откуда: Екатеринбург
прог. языки: асемблер AVR

Re: Двухколесный вращающийся робот

Сообщение Radist » 20 сен 2010, 06:03

Сегодня я что-то засомневался, что робот будет ездить по дуге, если скорость колес просто будет разной. У него нет понятия "перед" и "зад", а движение по дуге подразумевает направление. Мне не хватает воображения представить, как он будет двигаться. Смоделировать бы в чем-нибудь, но не знаю в чем.
Аватара пользователя
Radist
 
Сообщения: 2253
Зарегистрирован: 01 июл 2009, 08:59
Откуда: Екатеринбург
прог. языки: асемблер AVR

Re: Двухколесный вращающийся робот

Сообщение Duhas » 20 сен 2010, 06:26

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

Re: Двухколесный вращающийся робот

Сообщение AnyWay » 20 сен 2010, 09:20

Чтоб у него было понятие "перед" и "зад" нужен датчик и линия. Ну или в "уме" считать положение.
AnyWay
 
Сообщения: 96
Зарегистрирован: 16 мар 2010, 17:42
Откуда: Калуга

Re: Двухколесный вращающийся робот

Сообщение Radist » 20 сен 2010, 20:20

Появились новые мысли. В своем первом посте я ошибся насчет траектории движения. Вращение на месте - это не движение по бесконечно большой дуге, все проще. При вращении на месте центр масс остается неподвижным (пока рассматриваем сферического коня в вакууме). Если одно колесо крутится на полную, а другое стоит на месте, то центр масс движется по окружности радиусом равным расстоянию между колесами. В любом случае после полного оборота робот окажется в той же точке, откуда начал движение. Ну а мы хотим двигаться вперед (пока вперед, а там посмотрим). Для определенности пусть робот вращается против часовой. Максимальное отклонение центра масс от начального положения будет через 90 градусов. Если после этого выровнять скорости колес, то центр масс тут и остановится. Когда робот станет передом в ту сторону, куда мы едем - снова делаем разные скорости колес, но теперь уже наоборот. Теперь мы максимально сдвинемся вперед через 270 градусов. Снова делаем скорости одинаковые, доворачиваем передок и все повторяем. Робот дугами в 90 градусов поедет вперед, при этом вращаясь все время в одну сторону.
Теперь возвращаемся на линию. Понятно, что нужен датчик спереди, чтоб робот знал где у него перед :D . И нужны два датчика по бокам, прямо рядом с колесами. Задний датчик не нужен. Ну и постоянно нужно знать какую фазу движения делает робот, пересекает он линию в нужный или не нужный раз.
Но ехать такими дугами не очень эстетично, да и датчики у колес несколько мешаются. Можно поставить их ближе к переду, например под углами 60 и 300 градусов (а не 90 и 270). Дуги будут меньше, скорость упадет, плавность возрастет. Также на плавность будет влиять рассогласование скоростей колес - больше рассогласование - больше дуга.
Ну а если линия начала поворачивать - не беда. Передний датчик ее найдет. Поступательная скорость мала (и ее можно еще уменьшить, уменьшив рассогласование скоростей), ее можно подобрать такую, что робот просто не сможет потерять линию. И никакого ПИД регулятора не надо :) . Как вы заметили, в моих рассуждениях ничего нет про энкодеры - тут они не нужны. Таким образом робота можно собрать на тиниавр. Цветомузыкой конечно придется пожертвовать, но пару светодиодов подключить к каналам моторов можно. Красный и зеленый, и чтоб при вращении они накладывались. Думаю эфект будет красивым. Вот только выключать такого робота будет трудновато.

Ну а напоследок вопрос: как по простому вычисляют центр масс? Приведу пример. На деревянной доске лежит кирпич. Известны габариты и того и другого, известны координаты их центров масс, а вот вес не известен - нет у меня маленьких весов. Плотность тоже не известна - вес не рассчитать. В общем известна только геометрия. Могу я узнать центр масс? Логика говорит что нет, но может я чего-то не знаю? А если вес я все-таки узнаю - как считают общий центр масс?
Аватара пользователя
Radist
 
Сообщения: 2253
Зарегистрирован: 01 июл 2009, 08:59
Откуда: Екатеринбург
прог. языки: асемблер AVR

Re: Двухколесный вращающийся робот

Сообщение Michael_K » 20 сен 2010, 20:52

привязать две нитки за разные углы.
Подвесить на одной - провести (мысленно) линию - продолжение нитки внутри конструкции.
Подвесить на второй - то же самое.
Найти точку, где эти линии пересекаются.

Текст "ниасилил - многабукф"...
Но, по-моему, вы что-то усложнили все - один датчик ему на морде.
Пересек линию один раз - тормозим одно колесо, второе разгоняем, пересек еще раз - тормозим второе, первое разгоняем...
Положение датчика и/или скорость вращения, - подобрать (в зависимости от динамики разгона колес).
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Двухколесный вращающийся робот

Сообщение Radist » 21 сен 2010, 06:23

Насчет центра масс - отличная идея! А вот с одним датчиком на морде что-то не получается представить. Но идея понятна, буду думать, может и представлю к вечеру :)
Аватара пользователя
Radist
 
Сообщения: 2253
Зарегистрирован: 01 июл 2009, 08:59
Откуда: Екатеринбург
прог. языки: асемблер AVR

Re: Двухколесный вращающийся робот

Сообщение AnyWay » 21 сен 2010, 11:11

С одним датчиком алгоритм должен быть сложным, иначе на поворотах линию потеряет. С тремя датчиками гораздо проще - можно схему вообще без процессора, на транзисторах и логике сделать.
AnyWay
 
Сообщения: 96
Зарегистрирован: 16 мар 2010, 17:42
Откуда: Калуга

Re: Двухколесный вращающийся робот

Сообщение Michael_K » 21 сен 2010, 15:21

А по-моему, все как раз просто как лапти...

Собственно, как и код в приведенном примере
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Двухколесный вращающийся робот

Сообщение Radist » 21 сен 2010, 20:34

Я допетрил как с одним датчиком. Действительно все просто. Поясню, чтобы и остальные поняли. Моя проблема была в том, что я рассматривал идеальные объекты, точки и линии без ширины.
Итак, робот вращается против часовой, спереди один датчик. Первый постулат: после полуоборота вокруг себя робот трансформируется сам в себя (то колесо, что ехало вперед поедет назад и наоборот). Датчик на линии спереди - правое колесо быстрее левого. Центр масс уехал с линии влево. Датчик на линии сзади - робот трансформировался и новое правое колесо (бывшее левое) делаем быстрее нового левого колеса (бывшего правого). Теперь ключевое определение - раньше центр масс был на линии, теперь он сбоку от линии, а датчик на линии - следовательно робот стит под углом к линии. Скорости колес переключены - центр масс переедет через линию. Робот сделал один оборот, центр масс дважды пересек линию, робот сместился по линии. Дальность отклонения центра масс от линии влияет на скорость, но есть опасность потерять линию. Если разбаланс скоростей будет очень маленьким, то робот может вообще не покидать линию, а немного осциллировать около ее середины. Но тогда скорость будет меньше чем у улитки. Тут главное, что нужно понять - это два момента. Первый: центр масс робота смещается перпендикулятно положению робота, когда скорости колес стали разными. Второе - после начального положения робот должен находиться под углом к линии всегда, когда датчик линии говорит "Линия".
Аватара пользователя
Radist
 
Сообщения: 2253
Зарегистрирован: 01 июл 2009, 08:59
Откуда: Екатеринбург
прог. языки: асемблер AVR

Re: Двухколесный вращающийся робот

Сообщение Michael_K » 21 сен 2010, 21:09

ну, я думаю, что реально все еще проще...
Когда мы снижаем шим, скорость же не меняется мгновенно - просто колесо _НАЧИНАЕТ_ _ПЛАВНО_ подтормаживать. Так что реальная картинка будет зависеть от динамики механики...

Уверен, что можно будет просто подобрать скорость вращения и разбаланс скоростей (скорость движения по линии), даже поставив датчик прямо на морде, а не смещая нос в сторону.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб


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

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

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