Началось все с того, что я наткнулся в интернете на описание проекта Arduino. Сам я программист и мне частенько хотелось запрограммировать что-нибудь осязаемое — что-то, что работало бы автономно, без компьютера. Arduino — это как раз оно и есть!
Заказав ардуину, стал продумывать функционал робота. Направление я выбрал практически сразу — автономная навигация. Мне очень интересна эта тема и она кажется мне значительно более занимательной, чем всякие «object avoidance» и тем более «безмозглые» RC-роботы.
Итак, задача: робот должен двигаться в заданную координатами точку, строя карту местности, вычисляя кратчайшие пути и объезжая препятствия.
Нужно еще придумать, как передавать координаты роботу. Наверно это будет что-то типа приложения для мобильника, через которое можно будет отдавать команды роботу. Так же в этом приложении можно будет просматривать карту местности, нарисованную роботом. В общем-то тут много вариантов, решу по ходу дела. Закончить проект надо успеть до окончания конкурса, те до 30.04.2012. Ну что ж, приступим!
Этап первый. Теория
Гугление по теме об автономной навигации чаще всего приводило к роботам с веб-камерами и обработкой сигнала на компе. Однако этот вариант не для меня, мой робот должен быть автономным. Значит будем разбираться сами.
1) Шасси
Чтобы не отвлекаться на мелочи, я решил взять готовое шасси от дешевого радиоуправляемого танка. Вынув все ненужные внутренности, я получил в свое распоряжение гусеничную платформу, пару моторчиков с редуктором и аккум на 4.8 вольт для питания моторчиков.
2) Глаза
Для определения расстояния до препятствий пока что буду использовать ультразвуковой сонар. По случаю я прикупил еще дальномер Sharp GP2Y0A02YK0F, однако диапазон 20-150см не очень мне подходит, хочется видеть препятствия ближе)
3) Мозги
Самое сложное для меня на данном этапе — определение местоположения. Робот должен в каждый момент времени четко понимать — где именно он находится и куда ему предстоит двигаться. Для этого надо точно определять пройденное расстояние и направление движения. Вот тут я еще не пришел к окончательному решению, пока что буду экспериментировать с электронным компасом и акселерометром. В дальнейшем может быть поставлю энкодеры на гусеницы — для этой цели я уже распотрошил две старые мышки =)
Этап второй. Учимся просто ездить
Разглядываем фотографию, видим следующие штуки:
1) Сонар, закрепленный на серве. Серва типа HXT900, только без опозновательных знаков. Серва ужасная — заедают пластиковые шестеренки, наводится плохо, разваливается в буквальном смысле. Заменю при первой возможности.
2) Ардуина с моторшилдом. Ну тут все просто.
Итого: робот ездит по прямой, крутит башкой по сторонам. Если встречает препятствие — поворачивает и едет в другую сторону.
Хотя на самом деле «по прямой» — это конечно не совсем правда 🙂 Левая гусеница сильно отстает от правой — из-за этого робот ездит по дуге. Частично это компенсируется уменьшением скорости правого моторчика, но решение конечно так себе — надо придумать что с этим сделать.
Следующий этап — установка акселерометра и компаса, они прибудут ко мне завтра. Вот тогда-то и начнется самое веселье. Ждите продолжения 🙂
0 комментариев на «“И я туда же… Начало”»
Где датчики взял?
УЗ-датчиков у нас пока нет, но появилисьSHARP-овские дальномеры 🙂
25$? нет спасибо
fixled.ru
megachip.ru
Трололошенько этот fixled.ru 😀
I2C хаб для Ардуино(!) за 200р (!)
fixled.ru/microcontrollers/modules/i2c-hub.html
Модуль светодиода для Ардуино за 150)))
fixled.ru/microcontrollers/modules/sled.html
Т.е. они продают обычный сигнальный светодиод за 150р… ппц.
На месте любителей ардуино я бы зубы подточил. В этом магазине вас за полных идиотов держут. ))
Не путай ценовую политику производителя и магазина. I2C хаб и модуль светодиода производит некто seeedstudio.com. И это их личная инициатива делать такие полезные вещи. В оригинале конечно же ценник у них пониже, но на то он и оригинал)
Да какая разница, где политика и чья ценовая))
До светодиода за 150 рублей даже чипдипу далеко 😀
я купил там сонар за 600р
нигде не нашел дешевле
Это я так, смеюсь над тем что продают))
600р за сонар в России — это совсем не дорого. Хотя такой-же из Китая обошелся бы в 200р с доставкой, только ждать больше месяца пришлось бы.
Ну так нафиг покупать у них, если напрямую у братьев-китайцев ощутимо дешевле?
Даже у SeeedStudio ценники завышены, но кое-что пришлось брать там, т.к. еще не нашел, где взять дешевле. УЗ-сонары брал на BuyInCoins. Из Китая в Казахстан доставка 3 недели в среднем. Платил через PayPal.
УЗ-сонары я покупалздесь .
Вот кто бы сказал, где счётчик Гейгера взять?
Похоже, после Фукусимы они в срочном порядке закончились везде :)))
Отличная работа, спасибо!
А по проекту — проблема «разного» поведения двигателей/колёс/гусениц решается использованиемэнкодеров (и корректировки с помощью ПИД-а) — вам ведь всё равно потребуется одометрия .
А вообще, ваша задача — это, фактически,SLAM . Пока распространённые алгоритмы работают именно на одометрии и лазерных дальномерах (думаю, пойдёт и УЗ-сенсор ).Bluetooth ) передаёт данные на ПК, на котором уже крутится программа обсчёта. На ПК можно, например, использовать тот же ROS , так как там уже есть готовые реализации (GMapping ).
Вариантов реализации множество:
* мобильный робот с датчиками, который по беспроводному каналу (например, тот же
* попробовать сделать всё на МК.
Да, с этими маленькими сервами не угадаешь — поэтому лучше использовать стандартные сервы (типаSG-5010 ).
Разумеется, ждём продолжения 🙂
Про SLAM я конечно же тоже читал, именно на их принципы и буду опираться. Но компьютер не буду использовать принципиально. Все расчеты — только на МК.
Не хочу пока использовать энкодеры — гусеницы нехило проскальзывают при разворотах и, например, когда едут по разным поверхностям. Одометрию попытаюсь сделать на акселерометре с компасом + сближение с препятствиями.
здорово — будет очень интересно 🙂
Одометрия на акселерометре? и вообще акселерометр на танке? по-мойму, ни к чему.
А одометрию, может быть, попробовать на сенсоре из оптической мышки сделать?
А компас, наверное, придется на мачту поднимать, от движков подальше?
компас на корме стоит — никто никому пока не мешает
Для того, что бы уменьшить минимальное расстояние обнаружения препятствий датчиком, его ставят на «корму»(на зад=) — 20 см корпуса танка какраз съедят его слепую зону 😉
а это, кстати, хорошая мысль))
Кажется я нашел брата своегоробота)
гусеницы такие же)