roboforum.ru

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

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

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

Radist » 19 сен 2010, 21:02

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

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

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

У прототипа есть ссылка на форум, говорят что там все просто, я посмотрел - просто для тех, кто собаку съел в пололу. Да и не люблю я чужое копировать, беру максимум идею. Напомню основные вопросы по теме:
- правильно ли я все прикинул
- нет ли лучшего алгоритма
- сколько лучше датчиков поставить по минимуму
- ну и попутные вопросы, о которых я не вспомнил.

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

Radist » 20 сен 2010, 06:03

Сегодня я что-то засомневался, что робот будет ездить по дуге, если скорость колес просто будет разной. У него нет понятия "перед" и "зад", а движение по дуге подразумевает направление. Мне не хватает воображения представить, как он будет двигаться. Смоделировать бы в чем-нибудь, но не знаю в чем.

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

Duhas » 20 сен 2010, 06:26

будет ) если сиильно охота помоделировать - у меня где-та лаба должна валяться на ету тему в матлабе

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

AnyWay » 20 сен 2010, 09:20

Чтоб у него было понятие "перед" и "зад" нужен датчик и линия. Ну или в "уме" считать положение.

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

Radist » 20 сен 2010, 20:20

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

Ну а напоследок вопрос: как по простому вычисляют центр масс? Приведу пример. На деревянной доске лежит кирпич. Известны габариты и того и другого, известны координаты их центров масс, а вот вес не известен - нет у меня маленьких весов. Плотность тоже не известна - вес не рассчитать. В общем известна только геометрия. Могу я узнать центр масс? Логика говорит что нет, но может я чего-то не знаю? А если вес я все-таки узнаю - как считают общий центр масс?

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

Michael_K » 20 сен 2010, 20:52

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

Текст "ниасилил - многабукф"...
Но, по-моему, вы что-то усложнили все - один датчик ему на морде.
Пересек линию один раз - тормозим одно колесо, второе разгоняем, пересек еще раз - тормозим второе, первое разгоняем...
Положение датчика и/или скорость вращения, - подобрать (в зависимости от динамики разгона колес).

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

Radist » 21 сен 2010, 06:23

Насчет центра масс - отличная идея! А вот с одним датчиком на морде что-то не получается представить. Но идея понятна, буду думать, может и представлю к вечеру :)

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

AnyWay » 21 сен 2010, 11:11

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

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

Michael_K » 21 сен 2010, 15:21

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

Собственно, как и код в приведенном примере

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

Radist » 21 сен 2010, 20:34

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

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

Michael_K » 21 сен 2010, 21:09

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

Уверен, что можно будет просто подобрать скорость вращения и разбаланс скоростей (скорость движения по линии), даже поставив датчик прямо на морде, а не смещая нос в сторону.


cron
Rambler\'s Top100 Mail.ru counter