Универсальное гусеничное шасси для робота. Робот колесный или гусеничный

В этом проекте мы построим движущегося робота (платформу на гусеницах), который может обнаруживать и избегать препятствия. Он использует 2 инфракрасных датчика, представляющих собой пару излучающий ИК-светодиод и ИК-приемник, смонтированную в его передней левой и передней правой сторонах. ШИМ контроллер тут используется для управления скоростью моторов.

ИК-датчики установлены под углом 90° друг от друга, чтобы свести к минимуму интенсивность отраженных сигналов, поступающих на приемник из другой пары. Для этой же цели в ИК светодиоды поставить в короткие черные пластиковые трубочки.


Платформа базируется на гусеничном шасси какого-то автомобиля. Этот набор правда имел только один двигатель, который делает невозможным делать повороты. Пришлось установить на него двухмоторную коробку переключения передач с передаточным числом 200:1.

Питание и преобразователь


В принципе даже напряжения 3 В от 2-х батареек хватает чтобы двигаться довольно быстро. Однако, поскольку дополнительная электроника используется, чтобы изменить направление вращения двигателя, который потребляет изрядное количество тока от батареи, двигатель еле вращается. Поэтому в итоге 4xAA использовались для питания. Если всё-же нужно питать от 3 В или литиевой батарейки 3,7 В - для нормальной работы придётся использовать DC-DC преобразователь. Есть много вариантов, например MAX619 по схеме выше.

Драйвер двигателей схема

Драйвер электромотора на SN754410 , хотя его и недостаточно для низковольтного применения. Так как он включает в себя биполярные транзисторы, они имеют падение напряжение не менее 0,7 В на каждом. Это значит, что моторы на самом деле получат на 1,4 вольта меньше от батареи, которое составляет около 50% потерь при 3 В питании. Другой недостаток этого решения заключается в том, что она нуждается в обширной охлаждения. Каждый из моторов потребляет около 200 мА, и микросхема рассеивает 2·1,4 В х 200 мА = 0,56 Вт тепла - нужен теплоотвод, что так же не способствует экономии батареи.


Еще одним способом создания драйвера двигателя является использование МОП-транзисторов. Эти устройства свободны от указанных выше ограничений на биполярных транзисторах. Тут использованы N-канальные МОП-транзисторы типа IRF510, чье сопротивление во включенном состоянии составляет 0,5 Ом. Поэтому они имеют только 0,5 Ом х 0,25 А = 0.125 В падение напряжения, которое является незначительным. В этом режиме транзистор рассеивает только (0.5 Ом)2 х 0,25 А = 0.06 Вт и может работать без теплоотвода. Лучшим выбором будет использование IRF520 чей канал имеет сопротивление 0.2 Ома.


Транзисторы снабжены ограничивающими напряжение диодами. Для решения проблемы низкого питания добавлен DC-DC преобразователь на TC7660, что инвертирует 3 В в 5 В.

Регулировка чувствительности ИК-датчиков




ИК датчики имеют слишком высокую чувствительность для данного проекта. Они обнаруживают препятствия на расстоянии около 30 см. Таким образом ИК-приемники часто получают случайные отражения от других объектов, вызывающих сбой направления робота. Для изменения чувствительности был использован тот факт, что ИК модули имеют высокую чувствительность на 38 кГц. Опустившись на частоты вниз до приблизительно 33 кГц получится уменьшить чувствительность датчика примерно в 2 раза. Все файлы прошивки и видеоролик работы робота - (3 Мб).

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

Я всегда мечтал создать робота, которым можно управлять с помощью компьютера и смотреть за его перемещениями от первого лица.
Весь процесс я условно разделил на три части:
1. Сборка робота
2. Программирование боротового микроконтроллера
3. Программирование управления с ПК

Полагаю, что наиболее интересной эта тема будет тем, кто хотел бы построить такого робота, но не хватает знаний в отдельных моментах. (Тем, кто хорошо разбирается в роботостроении, электронике и программировании, ничего нового я не открою). Поэтому рассказывать буду максимально подробно и просто.
Вообще говоря, робота можно купить и готового, но
-во-первых это не так интересно - сам процесс создания робота своими руками доставляет огромное удовольствие
-во-вторых при покупке готового робота переделать его под свои интересы часто довольно сложно, если вообще возможно
-и наконец, при грамотном подходе, самостоятельно сделать робота может оказаться дешевле.
Мы будем использовать максимально дешевые, но готовые узлы, потому что сборка с нуля не каждому интересна, более сложна и рискует надоесть затянувшемся на месяцы процессом:).
Если робота хочется не просто заполучить на поиграться, а именно сделать самому, тогда поехали!
Робот самостоятельно не принимает решений, то есть это управляемое с ПК шасси, которое выполняет команды и передает видеосигнал. Однако, доработать его до самостоятельного робота не составляет никакого труда - нужно лишь добавить сенсоры и дописать логику бортового компьютера. Платформа на это рассчитана.
Нам понадобится:
Для гусеничного шасси
1. Двухмоторная коробка с редуктором - Tamiya Twin Motor Gearbox (TAM70097)

2. Гусеницы и катки с осями - Tamiya Track and Wheel Set (TAM70100)

3. Платформы и крепеж - Tamiya Universal Plate Set (2) (TAM70157)

Из этого дефицитом в России является только пункт 2.
Купить остальное можно в Терраэлектронике (70097 - 520р, 70157 - 385р)
Или в официальном магазине Tamiya . Если будете покупать в нем, то берите гусеничное шасси (630р) и коробку (390р). Вам останется про запас коробка с одним мотором.
Дело в том, что нам нужна коробока с двумя моторами, чтобы робот мог ехать не только прямо, но и поворачивать, раздельно управляя гусеницами.
Поскольку в Москве купить все в одном месте не удалось, а бегать и искать не хотелось, то я все это заказал на ebay у единственного продавца , который по нормальной цене доставляет в Россию. Обошелся комплект примерно в $37.5 с доставкой.
Также можно найти эти запчасти на pololu.com. Там подороже и не всегда в наличии.
Вместо платформы с отверстиями вполне можно использовать кусок фанеры, а для крепежа металлический конструктор, который продается в детском мире примерно за 200-400 рублей (есть несколько наборов).

В общем, самое главное - это гусеницы и мотор-редукторы.

Бортовая электроника
1. Arduino Duemillanove/ Freeduino 2009 - мозг нашего робота -


на ebay от $17.60.
Я брал на freeduino.ru, довольно давно и за 950р.
Для робота вполне достаточно на базе Atmega168 (дешевле чем Atmega328P), если вы не собираетесь писать очень навороченную логику робота или использовать Arduino как и я для других экспериментов, которым 16кБ флэш памяти может не хватить.
2. Силовой модуль Motor Shield V2 или V3 для управления моторами


На ebay от $10.5, старая версия и без гребенок для установки следующего этажа шилдов.
на Freeduino.ru от 600р в виде конструктора до 900 р в собранном виде. Советую v3 - она более гибкая.
3. Sensor shield V4 - удобный модуль для подключения сенсоров и сервоприводов. Если вас не пугает пучок проводов, то он нафиг не нужен. Я купил его для экспериментов, поэтому воткнул для удобства.

порядка $8 на ebay
4. SmartBluetooth модуль. Понадобится для связи с ПК или ноутбуком.

на ebay от $9.9. Я брал давно и мне он обошелся аж в $23
5. Bluetooth dongle - если будете управлять с ПК и Bluetooth интерфейса в нем нет, то нужно купить.
цена - $2.7
Итого $40.7 если обойтись без Sensor shield, но с bluetooth dongle для ПК.

Нам также понадобится питание для Arduino и моторов. Вы можете воспользоваться обычными АА батарейками в таком вот отсеке, купив его на рынке или в ЧипИДипе, если очень срочно.


« »
или 9В батарейкой типа «Крона».
Я предпочитаю компактные и более удобные LiPoly аккумуляторы :


или 2 LiIon элемента 18650, соединенных последовательно.

Этого комплекта достаточно, чтобы сделать робота с базовым функционалом, поэтому я бы предложил в этом месте сделать паузу, выбрать где и что вы будете заказывать, сделать заказы или съездить по магазинам, а пока заказ будут доставлять, заняться видеоподсистемой.
При заказе в основном из китая все компоненты вы получите примерно через 2-3 недели и обойдется все в $80-100, в зависимости от выбранного продавца или вашего желания поторговаться и сэкономить, может быть и дешевле. Если покупаете несколько товаров у одного продавца, просите комбинировать доставку, на этом можно сэкономить. Так называемая «бесплатная доставка» (free shipping) просто включена в стоимость и хороша, если покупаете один предмет.

Собираем шасси
Комплект Tamiya 70100 идет с подробной инструкцией. Аккуратно вырезаем кусачками или канцелярским ножом резиновые гусеницы и катки, отделяя от литников, собираем и крепим с помощью винтиков М3х10 к фанерной площадке или если купили Tamiya universal plate set, то комплектными клинышками, они многоразовые, так что ничего страшного, если сначала что-то не туда воткнете.
Затем собираем коробку моторов с редукторами TAM70097. У нее есть 2 варианта передаточных чисел. 58:1 ездит очень и очень шустро, но моторчики на малых оборотах не тянут и жалобно стонут, а после того, как нагрузим платформу, могут вообще еле ворочаться. Рекомендую собирать в варианте 201:1, так наш «танк» не будет убегать из поля зрения и будет двигаться более плавно. Правда шуму от бешено вращающихся шестерней будет побольше. Ведущие шестерни шасси насаживаем на шестигранные оси коробки.
Для проверки работоспособности достаточно подать питание от 2 батареек на моторчики просто конснувшись проводками контактов мотора. Теперь нужно подпаять по паре проводков к моторчикам. Сантиметров по 10-15 будет достаточно.
Затем с помощью деталей от конструктора я закрепил вторую площадку для крепления электроники. В принципе, можно и в один этаж делать, просто там места маловато и работать не очень удобно, но вполне возможно.
На второй этаж винтиками М3х10 крепим Arduino/Freeduino (она не совсем совпадает по отверстиям и становится чуть-чуть по диагонали). Вторым этажом вставляем MotorShield. Через отверстия в площадке пропускаем провода от моторчиков и крепим провода в порт М3 и М4 - крайние винтики, средний остается неиспользованным (он для шаговых двигателей). Полярность подключения моторов значения пока не имеет, ее потом можно поменять или задать программно, так что не бойтесь перепутать.
Bluetooth модуль пока просто прикиньте куда воткнуть или прикрепите к верхнему этажу канцелярской резинкой. Я его даже распаковывать не стал - вспененная упаковка послужит ему механической защитой, а заодно и не позволит замкнуть контакты случайно.

Получится примерно вот такой бутерброд:


« »
Откройте полноразмерную картинку, чтобы рассмотреть получше что и как соединено, если возникли трудности со сборкой и подключением. Arduino крепите USB портом к краю платформы, чтобы удобнее потом было подключать кабель и программировать не снимая с робота.
Работы всего на пару часов, если делать не торопясь.

Видеоподсистема
Чтобы покататься с изображением от первого лица нам понадобится миниатюрная видеокамера, радиопередатчик (трансмиттер) и приемник (ресивер).
Вариантов огромное множество. В том числе дойти до рынка и купить в магазине шпионских штучек или аппаратуры видеонаблюдения китайскую радиокамеру. Обойдется скорее всего в 2-4 тыр вместе с ресивером.
Но гораздо дешевле заказать из Китая.
Рекомендую брать на 1.2 ГГц, а не 2.4ГГц, чтобы избежать помех bluetooth модулю и WiFi, работающим на 2.4ГГц
Например вот такой комплект :


обойдется чуть больше $30. Есть и дешевле, в зависимости от камеры в комплекте.
На ebay можно купить точно такое же или с камерой в металлическом корпусе как на картинке с коробки.
Качество изображения у всех этих CMOS камер весьма так себе (380ТВЛ и те довольно мыльные и с низким динамическим диапазоном и высокими шумами при слабом освещении). Поэтому я заказал на hobbyking.com камеру на ПЗС матрице Sony с разрешением 420ТВЛ и чувствительностью получше, что позволяет даже под столом без дополнительной подсветки видеть что проиходит.


А также крепление для нее с поворотом и наклоном:


Как гласит надпись на картинке - сервоприводы в комплект не входят, поэтому заказываем недорогие 9граммовые сервы . Нам понадобится 2 штуки, 3я останется про запас, если сломаем.
У меня камера от 9В работать не хочет, поэтому приходится питать ее от отдельного аккумулятора на 11.1В.
Приемник и передатчик использовал из недорогого комплекта, показанного выше. (Передатчик пробовал более мощный - на 800мВт, но он прилично греется, громоздкий с радиатором и мощность такая, что вызывает наводки на сервоприводах камеры).
Можно подключить ресивер к телевизору, но управлять с компьютера, а смотреть в телевизор не слишком удобно (разве что купить портативный). Поэтому нам понадобится устройство видеозахвата.
Благо стоит оно

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

Почему нужны корпусы и скелеты роботов?

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

Тем, кому процесс проектирования механики дается с трудом, и больше заводит именно процесс подбора различных датчиков и проектирование логики робота, стоит обратить внимание на различные механические базы для построения роботов. Они продаются без электроники, по сути это корпус или скелет будущего робота. Осталось только добавить им «мозг» (например, плату Arduino ), нервы и мышцы (датчики и приводы) и оживить их (запрограммировать). Иногда такие корпуса даже содержат моторы или датчики.

Платформы на 4 колесах — основа машинки Arduino

Платформа на колесах — это, безусловно самая простая и эффективная база для построения робота. В продаже есть много различных заготовок такого типа. Некоторые из их:

Платформа для создания робота на Arduino, выполненная из алюминиевого сплава. Платформа оснащена 4 колесами, к каждому из которых подключен отдельный мотор. Моторы идут в комплекте. Платформа может использоваться как основа автомобиля или любого другого ездящего робота. Размер платформы около 20 на 20 см. Винты, гайки и провода для подключения моторов также в комплекте.

Такое основание для вашего будущего робота можно купить примерно за $75 на сайте интернет-магазина DX.com .

Еще одна четырехколесная платформа для создания робота на базе Arduino привлекает внимание своими колесами. Они имеют диаметр 80 мм, ширину 60 мм, выглядят элегантно и надежно. У этой платформы акриловое основание толщиной 1,5 мм. Корпус имеет хорошую устойчивость и подходит для создания быстро передвигающегося робота. Aliexpress продает этот робот-скелет за $60. Комплектация аналогичная предыдущей — колеса, двигатели, провода и винты уже есть в наборе.

Двух- и трехколесные шасси для создания ездящих роботов

В следующей трехколесной платформе для создания робота на базе Arduino моторы подключены только к двум колесам и это снижает стоимость. В интернет магазине DX.com такое шасси продается за $20,5. Основание выполнено из прозрачного акрила. В комплекте 2 мотора, винты, гайки, провода, батарейный блок для 4 АА батарей. Размеры примерно 20 на 10 см.

Трехколесной платформе для робота Arduino. Фото dx.com

Двухколесное основание для робота. Фото dx.com

Гусеничные шасси для танков на Arduino

Гусеничные шасси более устойчивые чем те, что на колесах. Плюс в такой конструкции достаточно всего двух моторов, чтобы привести систему в движение, — а значит цена будет ниже, чем у четырехколесных платформ. Самая распространенная модель на гусеницах — это, конечно, танк, однако такая база может стать платформой для робота любой формы.

Гусеничное шасси для создания робота-танка на базе Arduino. В комплекте 2 мотора, гусеничная передача, винты, гайки. Размеры этого шасси 18,7 см х 11,5 см х 4,3 см. В интернет-магазине DX.com такое гусеничное шасси стоит $42.

Гусеничное шасси для робота. Фото dx.com

Корпус для робота-паука на Arduino

Паук — достаточно популярная форма роботов, поэтому в продаже имеются и такие корпуса-скелеты.Конструкция паука в отличие от роботов на колесах предусматривает движение в любую сторону.

Первый паук а в нашем обзоре стоит около $100 на Aliexpress .

Корпус для робота паука. Фото: aliexpress.com

В комплекте этого корпуса нет электроники, сервоприводов, их нужно покупать отдельно. С данной моделью паука рекомендовано использовать сервопривод MG 995 Servo. Забавно, что такой привод на сайте Aliexpress можно купить как за 33 доллара, так и за за 5 долларов (правда в этом случае придется купить 10 штук). Привод нужен под каждую лапу.

Кроме того для управления большим количеством сервоприводов потребуется многоканальный контроллер управления сервоприводами . Итоговая стоимость паука может получиться достаточно высокой.

Еще один скелет шестиногого робота-паука или даже робота-таракана привлек мое внимание своей ценой в $ 42,5. Робот на шести металлических лапах должен получиться пусть и не очень маневренный, зато устойчивый. Скелет этого таракана имеет длину 24 см, ширину — 18 см, высоту — 12 см. Приобрести этого черного таракана-робота можно на сайте интернет-магазина Aliexpress.

Корпус для робота таракана. Фото: aliexpress.com

Каркасы роботов гуманоидов

Достаточно интересной кажется модель робота-гуманоида стоимостью около $ 105. Здесь также нет электроники, зато много простора для творчества. Создание робота-гуманоида и программирование человеческой походки — непростые и интересные задачи. Начать пробовать свои силы в самостоятельном создании робота-гуманоида можно с покупки такого скелета на сайте интернет-магазина Aliexpress. Если верить описанию производителя, то на основе этого карскаса можно сделать даже танцующего робота.

Оболочка для робота гуманоида. Фото: aliexpress.com

Готовый робот, готовый корпус или создание Arduino робота с нуля?

Готовые полнокомплектые роботы на базе платы Arduino подойдут и для тех, кого электрические схемы не особо привлекают. Приобретая работающую модель робота, т.е. фактически готовую высокотехнологичную игрушку, можно разбудить интерес к самостоятельному проектированию и робототехнике. Открытость платформы Arduino позволяет из одних и тех же составных частей мастерить себе новые игрушки. Цена таких роботов колеблется в районе $ 100, что в общем относительно немного.

Готовые корпуса , которые мы рассмотрели в этом обзоре, предполагают бОльшую фантазию и бОльшее разнообразие получаемых роботов. В них вы не ограничены платами Arduino, можно использовать и другие «мозги». Преимущество этого способа перед созданием робота с нуля в том, что вы можете не отвлекаться на поиск материалов и разработку конструкций. Такой робот выглядит вполне серьезно и походит на промышленного.

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

Если вы только начинаете изучение Arduino робототехники, рекомендуем наш курс

Все цены приведены по состоянию на 22.05.14.

Роботы и робототехнические системы часто предназначены для использования в экстремальных условиях, там, где необходимо облегчить или обезопасить труд человека.Очень часто мобильные роботы применяются в экстремальных ситуациях, например при тушении пожаров, локализации радиоактивных отходов и т.п., и, как правило, работают в труднопроходимой местности.

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

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


Вышеуказанная таблица демонстрирует соотношение скоростей и направлений вращения приводов гусеничного шасси. Важно обращать внимание на положение привода, ведь в зависимости от ориентации в пространстве привода зависит направление вращения его выходного вала, а соответственно и направление движения гусеничных траков. Например, для того чтобы робот двигался вперед, необходимо, чтобы его левый привод вращался «против часовой стрелки», а правый – «по часовой стрелке».


  1. Для того чтобы двигаться прямо, необходимо, чтобы правый и левый приводы вращались с одинаковой скоростью в направлении «прямо».
  2. Для того чтобы повернуть налево, необходимо, чтобы скорость правого привода была больше, чем скорость левого. Чем больше будет разница скоростей, тем меньше будет радиус разворота при движении.
  3. Для того чтобы повернуть направо, необходимо, чтобы скорость правого привода была меньше, чем скорость левого. Чем больше будет разница скоростей, тем меньше будет радиус разворота при движении.
  4. Для того чтобы повернуть налево на месте, необходимо, чтобы правый привод вращался «прямо», а левый – «назад» с такой же скоростью.
  5. Для того чтобы повернуть направо на месте, необходимо чтобы левый привод вращался «прямо», а правый «назад» с такой же скоростью.
  6. Для того чтобы двигаться назад, необходимо, чтобы правый и левый приводы вращались с одинаковой скоростью в направлении «назад».


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


В зависимости от назначения гусеничного робота и степени его проходимости различают различные конструкции гусеничных шасси.


Традиционно гусеничные транспортные средства имеют специальный угол наклона спереди, чтобы въезжать на препятствия по ходу движения. Чем выше проходимость гусеничного робота или транспортного средства, тем, как правило, больше данный уклон.


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


В данной лабораторной работе исследуются способы управления мобильным гусеничным шасси. Разрабатываемая в рамках данной работы модель робота обладает достаточно большой проходимостью для собственных габаритных размеров.

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


Для того чтобы робот в процессе своего движения не застрял, преодолевая препятствие, его шасси оснащается ИК-датчиком, определяющим наличие объектов на его пути. Если датчик обнаруживает объект, это значит, что высота объекта соизмерима с высотой робота и есть риск того, что робот не сможет преодолеть данный маршрут. В этом случае робот должен предпринять какое-либо другое действие, например объехать препятствие сбоку и т.п.

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

Выполнение простейших маневров.

В данной части лабораторной работы рассматриваются прямолинейное движение гусеничного робота и процесс поиска препятствий на его пути.


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

Согласно предложенному алгоритму гусеничный робот едет прямо, переезжая все препятствия на своем пути. Если же на пути робота обнаруживается объект, который не пропадает с пути робота в течение 3 секунд, робот останавливается и совершает маневр по объезду препятствия.


В начале программы задаются базовые переменные, определяющие пороговое значение до объекта, скорости вращения приводов робота и время ожидания перед обнаруженным объектом (3 сек). С помощью этих значений определяется скорость маневрирования роботов и расстояние, которое робот не доезжает до обнаруженного объекта.

Программа представляет собой бесконечный цикл, в котором анализируется показания датчика, подключенного к PORT. С помощью переменных obstacle_threshold и bstacle_judging_time задаются максимальные значения расстояния до объекта и время обнаружения объекта. Если объект находится вне зоны видимости, робот продолжает движение под управлением функции forward.

В случае если робот обнаружил объект на своем пути, поочередно вызываются функции reverse, stop, pivot_left с помощью которых робот совершает заданный маневр по объезду препятствия. Функции чередуются с помощью вызова таймера, ограничивающего время работы каждой из них.

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

Данная функция запускает воспроизведение мелодии на время, определяемое переменной prepare_time. Данная переменная инициализирует таймер, который работает в течение заданного времени.

Во время отсчета таймера осуществляется задержка, во время которой выполняется последняя операция, например воспроизведение мелодии. Задержка осуществляется с помощью функции timer_standby, которая с помощью оператора WAIT WHILE ожидает окончания отсчета. Таким образом, можно сгенерировать любую необходимую для работы программы временную задержку.

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

Для этого автоматически опрашиваются все порты, и если на одном из них обнаруживаются показания от ИК-датчика, светодиод моргает соответствующее номеру порта количество раз.

В случае с PORT при обнаружении сигнала с ИК-датчика вызывается функции LED_port_num, которая моргает системным светодиодом.

Если же сигнал с ИК-датчика обнаруживается на каком-то другом порту контроллера СМ-530, функция LED_port_num вызывается с помощью оператора LOOP FOR, выполняющегося заданное количество раз.

Преодоление препятствий на пути.

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

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

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

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


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

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


Программа робота состоит из двух симметричных веток, каждая из которых выполняется в зависимости от положения робота. В отличие от программы в предыдущей части, в данной рассматривается единственное дополнительное условие.


Переход от одной ветки программы к другой осуществляется с помощью ИК-датчика, подключенного к PORT, который определяет ориентацию робота в пространстве.

Также в отличие от программы из части № 1, для функций forward и reverse реализованы аналоги slow_forward и slow_reverse, которые обеспечивают медленное движение робота при маневрах.


Данные функции оперируют значениями l_wheel_low_speed и r_wheel_low_speed, описываемыми в начале программы.

Заключение.

Для закрепления материала из данного урока, предлагается выполнить несколько опытных испытаний.

Смоделируйте ситуацию, при которой робот транспортирует груз за пределы черной линии. Для этого оснастите гусеничное шасси двумя ИК-датчиками: спереди для обнаружения объектов и снизу – для определения черной линии.



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



Помните, что ничего не ограничивает фантазию разработчиков в рамках решения поставленных задач. И если проходимости вашего робота не хватает для преодоления препятствия на его пути, это не повод отчаиваться, а хороший шанс задуматься и усовершенствовать конструкцию.