Робот 'Бодрый'

На всякий случай, cсылка на проект на Google Code: code.google.com/p/cheerful-bot/

Введение

Дети как то завели разговор о том, что хорошо бы сделать робота, чтоб не летал где-то далеко, а ползал под ногами.
Оказалось что это не только познавательно, но и интересно.

Платформой была выбрана Arduino, как наиболее распространенная и имеющая больше всего библиотек. Код под нее пишется просто, а отлаживается в основном по последовательному порту, миганием светодиодов, издаванием звуков и, если есть, выводом на LCD. Забегая вперед, скажу что у робота на борту есть говорящий модуль, так что я пускал через него некоторые цифры и сообщения.

Основные модули были куплены на http://www.goodluckbuy.com, некоторые уже были в закромах, а некоторые я собрал сам. В любом случае, я написал аналоги для того, что было не закуплено непосредственно для робота.

Детальное описание

Механическая часть
В целом, робот собран на небольших пластмассовых гусеничных шасси с двумя моторами, питаемыми через 6V BEC от 7.4V LiPo. Моторы управляются ШИМ через H-bridge.

Мозги
Мозг робота - Arduino Nano, питаемая непосредственно от LiPo через Vin, и раздающая 5V остальным модулям. Arduino вставляется в маленькую монтажную плату, куда втыкаются сигнальные провода и питания модулей. Это оказалось очень удобно и ничего пока не вываливается (правда, соединенительные провода пришлось делать самому).

Воспроизведение звуков
Для проигрывания звуков использован Wave модуль, способный проигрывать WAV файлы в формате PCM Mono и частотой дискретизации до 22kHz. Файлы читаются через SD модуль с SD карты, отформатированной в FAT16. Поскольку выход Wave модуля очень слабый (его еле слышно даже в наушниках), пришлось спаять усилитель на LM386. Но делать его самому вовсе не требуется - его можно вытащить откуда-нибудь, или купить то, что я написал ниже в списке деталей.

Обнаружение препятствий
Для того чтобы робот казался более “живым”, одной речи мало - надо еще и “разумное” поведение. Для самостоятельного движения на роботе стоит ультразвуковой радар (сонар), такой, какой мы обычно используем на коптерах для поддержания высоты и автоматической посадки. С ним связаны несколько глюков и фундаментальных проблем, о которых будет написано далее, но в целом он работает вполне удовлетворительно.

Управление роботом
В ручном режиме робот управляется аж двумя путями: через ИК-пульт и через Bluetooth.
В качестве пульта выбран валявшийся поблизости пульт от RGB лампы и еще один непонятно от чего. В принципе можно использовать любой пульт при соблюдении двух условий: несущая частота пульта совпадает частотой ИК приемника (чаще используется 38kHz, но бывают исключения) и Вы произведете определение кодов кнопок и забьете их в программу Arduino вместо команд используемых мною двух пультов. Имейте ввиду, что с некоторыми редкими пультами библиотека декодирования ИК не может работать вообще.

Последовательный порт Bluetooth на скорости 115200 позволяет управлять роботом с компьютера и (та-да!) с мобильного телефона (например, на Android, но под iPhone и Java ME тоже можно написать). Приемник Bluetooth продается настроенным на другую скорость, так что воспользуйтесь инструкциями в Internet для установки его скорости в 115200. Команды, понимаемые роботом: включить/выключить обнаружение препятствий, установка скорости каждого из моторов, выключение моторов, блокирование отладочных сообщений, перезагрузка.

Для управление роботом с Android-телефона была написана (фактически за вечер, но потом еще вечер оттачивалась) простенькая программа. За основу была взята blu_car (Blu Car; Copyright © 2011 Eirik Taylor), в которой немного изменен UI а переделан способ управления. Робот управляется наклонами телефона (через акселлерометры), когда палец касается большой экранной кнопки. Есть кнопка остановки и включения/выключения режима обнаружения препятствий. Тестировалась программа на Samsung Galaxy i5500 под Android 2.1.1.

Датчик света
На роботе есть датчик освещенности на фоторезисторе, который почти никак не используется. Единственное его применение - если робота оставить включенным, но неподвижными в полной темноте, он начинает играть тихую печальную мелодию (“Кристальная грусть”; Copyright Владимир Крайнов).

Программа робота
Вот тут была славная битва! То памяти под переменные не хватает, то хип со стеком пересекаются… В конце концов отключил один из буферов чтения SD-карты и вынес все строки в EEPROM. Больше память не беспокоила 😃
Наиболее интересная часть программы - объезд препятствий - сделана необычно. Если робот засекает на некотором расстоянии что-то, он останавливается и, поворачиваясь, сканирует переднюю полусферу, а затем едет в направлении наибольшего свободного пути. Если при сканировании окажется, что в этом направлении путь свободен дальше определенной границы, робот сразу едет туда. Если вся передняя полусфера заблокирована, робот продолжает сканировать заднюю полусферу.

Если же препятствие очень близко и может препятствовать развороту, робот попытается сдать назад. Если “препятствие” движется за ним (надвигается любопытный кот, например), то робот развернется и поедет в обратную сторону.
В отладочном режиме (включается и ИК-пульта) робот голосом произносит расстояния, замеренные при сканировании.

В программе использованы библиотеки:
* IRremote для декодирования ИК-команд (Copyright 2009 Ken Shirriff),
* WaveHC/WaveUtil для воспроизведения звука и чтения SD-карты (Copyright © 2008 by William Greiman).

Звуковое оформление
Робот при движении активно и бодро шумит. У него есть свои звуки под разгон и разную интенсивность торможения и поворотов. Равномерное движение происходит под бодрую мелодию. А о своих проблемах от говорит человеческим голосом 😃 Все звуки записаны на SD и есть в архиве на Google Code.

Easter eggs
Если робота оградить со всех сторон, он, когда это “поймет”, кое-что отмочит 😃

Известные глюки

  1. Ультразвук не отражается от мягких предметов (занавески, например). Если он падает на гладкую поверхность под острым углом, эхо не попадает в приемник, а если и попадает, то после долгих блужданий и отражений, показывая нереально большое расстояние. Для решения этого буду ставить ИК-датчики ближнего действия (до 20 см.).
  2. Bluetooth иногда затыкается. Я вроде бы поборол это, отключив на время прием информации с робота, но в будущих версиях программы надо будет с этим побороться.
  3. Не каждая SD карточка работает с этими SD модулями. Мне пришлось перебрать полдесятка карт прежде чем я нашел одну совместимую.

Дальнейшие планы

  1. Переделать программу для Android. Сделать прием расстояния и т.д. от робота для отображения на экране, плюс еще несколько задумок. Сделать режим управления без использования датчика наклона, только касанием.
  2. Поставить ИК-датчики расстояния близкого действия (5-15 см.) Они должны помочь роботу избегать тупиков с гладкими (невидимыми для ультразвукового радара) стенами.
  3. Может быть поставить гироскоп для определения действительного угла поворота робота. Иногда ему попадаются гладкие поверхности или мелкие предметы, и на них он разворачивается немного не так, как должен.
  4. Поставить FPV и XBee-модем вместо Bluetooth и отдать детям. А вот XBee можно соединять с телефоном уже по Bluetooth.

Видео

Детали

Arduino RP5 Robot Tracked Chassis Tank Robot Base
goodluckbuy.com/arduino-rp5-robot-tracked-chassis-…


Arduino Nano V3.0 AVR ATmega328 P-20AU Board
goodluckbuy.com/arduino-nano-v3-0-avr-atmega328-p-…


Mini Bread Board 4.5x3.5cm with 170 Tie Points
goodluckbuy.com/mini-bread-board-4-5x3-5cm-with-17…


Arduino WAV Sound Broadcast Module
goodluckbuy.com/arduino-wav-sound-broadcast-module…


SD/ Micro SD Card Breakout Module (5V/3.3V Compatible)
goodluckbuy.com/sd-micro-sd-card-breakout-module-5…


Arduino Light Sensor Module (RobotBase)
goodluckbuy.com/arduino-light-sensor-module-robotb…


Arduino IR Wireless Remote Control Kit IR Receiver Module (RobotBase)
goodluckbuy.com/arduino-ir-wireless-remote-control…


RC Lipo Battery Low Voltage Monitor Alarm Buzzer w/LED Warning Light
goodluckbuy.com/new-rc-lipo-battery-low-voltage-mo…


Hobbywing Switch-Mode 5V/6V 3A max 5A UBEC
goodluckbuy.com/hobbywing-switch-mode-5v-6v-3a-max…


Ultrasonic Wave Detector Ranging Module Distance Sensor
goodluckbuy.com/ultrasonic-wave-detector-ranging-m…


L298N Stepper Motor Driver Controller Board Module DC Dual H Bridge
goodluckbuy.com/l298n-stepper-motor-driver-control…


IR Receiver Sensor Infrared Receiver Module for Arduino (38KHz)
goodluckbuy.com/ir-receiver-sensor-infrared-receiv…


24-Key Wireless Infrared IR Remote Controller for RGB LED Light Bulb
dealextreme.com/…/24-key-wireless-infrared-ir-remo…


Arduino Serial Bluetooth RF Transceiver Master Module with Backplane
goodluckbuy.com/arduino-serial-bluetooth-rf-transc…


Turnigy nano-tech 2000mah 2S 15~25C Lipo
hobbyking.com/…/__17283__Turnigy_nano_tech_2000mah…


MPX Connector Male/Female (10pairs/set)
www.hobbyking.com/hobbyking/…/uh_viewItem.asp?idPr…


Nylon T-Connectors 10 Pairs (20pc)
www.hobbyking.com/hobbyking/…/uh_viewItem.asp?idPr…


Усилитель звука я сделал сам на LM386 (точно как в datasheet) и подключил к 8 Ом 0.5W маленькому динамику. Но можно купить такой девайс и использовать его для усиления:

High Quality Stereo Speaker Amplifier for MP3 MP4 PC Loptop Green
goodluckbuy.com/high-quality-stereo-speaker-amplif…

Или использовать такую плату (Оба стерео входа соединить вместе и подключить к выходу Wave модуля):

TDA2030A Audio Amplifier Amp Finished Board OCL18Wx2 BTL
goodluckbuy.com/tda2030a-audio-amplifier-amp-finis…


На будущее:

Infrared IR Reflectance Sensor Module for Smart Car LM393 (4, 3=спереди, 1=сзади)
goodluckbuy.com/infrared-ir-reflectance-sensor-mod…

  • 6230
Comments
targetorsk

а я вот паука хочу собратьо о шести или восми лапах этаких бегающий собрат октокоптера 😃
типа такого:

www.youtube.com/watch?v=WoBoP13Xyhc&feature=relate…

Cherkashin

полный штангенциркуль!. Самое главное киндеры довольны 😃

Barim

А какова стоимость проекта (считаем только детали, без учета времени на разработку, доделку и прочее) ?

Prikupets

Если бы кто-то посчитал по моим ссылкам и выложил в комменты - скажку спасибо! 😃

filip95
Prikupets;bt70378

Если бы кто-то посчитал по моим ссылкам и выложил в комменты - скажку спасибо! 😃

177.78 долларов с с этим усилителем High Quality Stereo Speaker Amplifier for MP3 MP4 PC Loptop Green Плюс пересылка с ХК
В эту сумму не входит Infrared IR Reflectance Sensor Module for Smart Car LM393 (4, 3=спереди, 1=сзади) www.goodluckbuy.com/infrared-...ar-lm393-.html
P.S Я просто посчитал по ссылкам!

Prikupets

Спасибо, не думал что так дорого!
Я купил на 98$, остальное нашлось в шкафу.

Prikupets

Вот какие гибриды бывают:

targetorsk;bt70340

а я вот паука хочу собратьо о шести или восми лапах этаких бегающий собрат октокоптера 😃
типа такого:

Prikupets

Китайцы выложили пак для сбоки робота: dealextreme.com/…/multi-function-4wd-arduino-robot…
Но без софта… А так, все за полцены 😛

eNick

Спасибо за публикацию.

Подбираю первого робота для сына-подростка 15 лет, чтобы попытаться его заинтересовать программированием-конструированием.
Желательно готового с примерами и начальным софтом поведения. Сам имею опыт RC и программирования на Си. Самому копаться неохота, только помогать-объяснять сыну.
Кажется наиболее подходящим такой - “Adventure Bot Interactive Robot” от DAGU Electronics

Буду признателен за советы.

Замутил темку в профильном форуме roboforum.ru/forum16/topic12156.html

Prikupets

Почитал про “Adventure Bot Interactive Robot”… Мне мой больше симпотный.
Хотя синия крышка зачетная… 😃