И я туда же... Начало

Началось все с того, что я наткнулся в интернете на описание проекта Arduino. Сам я программист и мне частенько хотелось запрограммировать что-нибудь осязаемое — что-то, что работало бы автономно, без компьютера. Arduino — это как раз оно и есть!
Заказав ардуину, стал продумывать функционал робота. Направление я выбрал практически сразу — автономная навигация. Мне очень интересна эта тема и она кажется мне значительно более занимательной, чем всякие «object avoidance» и тем более «безмозглые» RC-роботы.
Итак, задача: робот должен двигаться в заданную координатами точку, строя карту местности, вычисляя кратчайшие пути и объезжая препятствия.
Нужно еще придумать, как передавать координаты роботу. Наверно это будет что-то типа приложения для мобильника, через которое можно будет отдавать команды роботу. Так же в этом приложении можно будет просматривать карту местности, нарисованную роботом. В общем-то тут много вариантов, решу по ходу дела. Закончить проект надо успеть до окончания конкурса, те до 30.04.2012. Ну что ж, приступим!

Этап первый. Теория
Гугление по теме об автономной навигации чаще всего приводило к роботам с веб-камерами и обработкой сигнала на компе. Однако этот вариант не для меня, мой робот должен быть автономным. Значит будем разбираться сами.
1) Шасси
Чтобы не отвлекаться на мелочи, я решил взять готовое шасси от дешевого радиоуправляемого танка. Вынув все ненужные внутренности, я получил в свое распоряжение гусеничную платформу, пару моторчиков с редуктором и аккум на 4.8 вольт для питания моторчиков.
2) Глаза
Для определения расстояния до препятствий пока что буду использовать ультразвуковой сонар. По случаю я прикупил еще дальномер Sharp GP2Y0A02YK0F, однако диапазон 20-150см не очень мне подходит, хочется видеть препятствия ближе)
3) Мозги
Самое сложное для меня на данном этапе — определение местоположения. Робот должен в каждый момент времени четко понимать — где именно он находится и куда ему предстоит двигаться. Для этого надо точно определять пройденное расстояние и направление движения. Вот тут я еще не пришел к окончательному решению, пока что буду экспериментировать с электронным компасом и акселерометром. В дальнейшем может быть поставлю энкодеры на гусеницы — для этой цели я уже распотрошил две старые мышки =)

Этап второй. Учимся просто ездить

Разглядываем фотографию, видим следующие штуки:
1) Сонар, закрепленный на серве. Серва типа HXT900, только без опозновательных знаков. Серва ужасная — заедают пластиковые шестеренки, наводится плохо, разваливается в буквальном смысле. Заменю при первой возможности.

2) Ардуина с моторшилдом. Ну тут все просто.


Итого: робот ездит по прямой, крутит башкой по сторонам. Если встречает препятствие — поворачивает и едет в другую сторону.
Хотя на самом деле «по прямой» — это конечно не совсем правда :) Левая гусеница сильно отстает от правой — из-за этого робот ездит по дуге. Частично это компенсируется уменьшением скорости правого моторчика, но решение конечно так себе — надо придумать что с этим сделать.

Следующий этап — установка акселерометра и компаса, они прибудут ко мне завтра. Вот тогда-то и начнется самое веселье. Ждите продолжения :)

  • +4
  • 11 марта 2012, 22:22
  • lokki

Комментарии (21)

RSS свернуть / развернуть
+
0
Где датчики взял?
avatar

arduinofan

  • 11 марта 2012, 22:59
+
0
УЗ-датчиков у нас пока нет, но появились SHARP-овские дальномеры :)
avatar

admin

  • 12 марта 2012, 06:42
+
0
25$? нет спасибо
avatar

arduinofan

  • 12 марта 2012, 18:51
+
0
fixled.ru
megachip.ru
avatar

lokki

  • 12 марта 2012, 12:09
+
0
Трололошенько этот fixled.ru :D

I2C хаб для Ардуино(!) за 200р (!)
fixled.ru/microcontrollers/modules/i2c-hub.html
Модуль светодиода для Ардуино за 150)))
fixled.ru/microcontrollers/modules/sled.html
Т.е. они продают обычный сигнальный светодиод за 150р… ппц.

На месте любителей ардуино я бы зубы подточил. В этом магазине вас за полных идиотов держут. ))
avatar

Ozze

  • 14 марта 2012, 12:28
+
0
Не путай ценовую политику производителя и магазина. I2C хаб и модуль светодиода производит некто seeedstudio.com. И это их личная инициатива делать такие полезные вещи. В оригинале конечно же ценник у них пониже, но на то он и оригинал)

avatar

lokki

  • 14 марта 2012, 12:51
+
0
Да какая разница, где политика и чья ценовая))
До светодиода за 150 рублей даже чипдипу далеко :D
avatar

Ozze

  • 14 марта 2012, 13:45
+
0
я купил там сонар за 600р
нигде не нашел дешевле
avatar

lokki

  • 14 марта 2012, 16:16
+
0
Это я так, смеюсь над тем что продают))
600р за сонар в России — это совсем не дорого. Хотя такой-же из Китая обошелся бы в 200р с доставкой, только ждать больше месяца пришлось бы.
avatar

Ozze

  • 14 марта 2012, 16:36
+
0
Ну так нафиг покупать у них, если напрямую у братьев-китайцев ощутимо дешевле?
Даже у SeeedStudio ценники завышены, но кое-что пришлось брать там, т.к. еще не нашел, где взять дешевле. УЗ-сонары брал на BuyInCoins. Из Китая в Казахстан доставка 3 недели в среднем. Платил через PayPal.
avatar

able

  • 15 марта 2012, 05:15
+
0
УЗ-сонары я покупал здесь.
Вот кто бы сказал, где счётчик Гейгера взять?
Похоже, после Фукусимы они в срочном порядке закончились везде :)))
avatar

able

  • 15 марта 2012, 05:28
+
0
Отличная работа, спасибо!
В начале апреля определимся и, скорее всего, продлим конкурс и на май — т.е. на всю весну.

А по проекту — проблема «разного» поведения двигателей/колёс/гусениц решается использованием энкодеров (и корректировки с помощью ПИД-а) — вам ведь всё равно потребуется одометрия.
пример использования — Робоконструктор POP-BOT: обзор и улучшения

А вообще, ваша задача — это, фактически, SLAM. Пока распространённые алгоритмы работают именно на одометрии и лазерных дальномерах (думаю, пойдёт и УЗ-сенсор ).
Вариантов реализации множество:
* мобильный робот с датчиками, который по беспроводному каналу (например, тот же Bluetooth) передаёт данные на ПК, на котором уже крутится программа обсчёта. На ПК можно, например, использовать тот же ROS, так как там уже есть готовые реализации (GMapping).
пример — Автомобиле-подобный робот Lego NXT с удаленным управлением с ПК на базе ROS

* попробовать сделать всё на МК.

Да, с этими маленькими сервами не угадаешь — поэтому лучше использовать стандартные сервы (типа SG-5010).

Разумеется, ждём продолжения :)
avatar

admin

  • 12 марта 2012, 06:40
+
+1
Про SLAM я конечно же тоже читал, именно на их принципы и буду опираться. Но компьютер не буду использовать принципиально. Все расчеты — только на МК.
Не хочу пока использовать энкодеры — гусеницы нехило проскальзывают при разворотах и, например, когда едут по разным поверхностям. Одометрию попытаюсь сделать на акселерометре с компасом + сближение с препятствиями.
avatar

lokki

  • 12 марта 2012, 06:53
+
0
здорово — будет очень интересно :)
avatar

admin

  • 12 марта 2012, 06:56
+
0
Одометрия на акселерометре? и вообще акселерометр на танке? по-мойму, ни к чему.
А одометрию, может быть, попробовать на сенсоре из оптической мышки сделать?
А компас, наверное, придется на мачту поднимать, от движков подальше?
avatar

able

  • 15 марта 2012, 05:49
+
0
компас на корме стоит — никто никому пока не мешает
avatar

lokki

  • 15 марта 2012, 07:05
+
0
По случаю я прикупил еще дальномер Sharp GP2Y0A02YK0F, однако диапазон 20-150см не очень мне подходит, хочется видеть препятствия ближе)
Для того, что бы уменьшить минимальное расстояние обнаружения препятствий датчиком, его ставят на «корму»(на зад=) — 20 см корпуса танка какраз съедят его слепую зону ;)
avatar

Zoltberg

  • 12 марта 2012, 07:23
+
0
а это, кстати, хорошая мысль))
avatar

lokki

  • 12 марта 2012, 08:29
+
0
Кажется я нашел брата своего робота)
avatar

capitan_blood

  • 13 марта 2012, 13:09
+
0
гусеницы такие же)
avatar

lokki

  • 13 марта 2012, 13:17

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.