Копаем ямку под фундамент роботостроения

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

Сейчас, в моей башке созрело понимание, как, и чего ради, собирать робота на основе купленного в прошлом годе Raspberry Pi.

Итак, ту хум ит мэй консерн: Представляю проект робота-картографа!

Функционал:

  1. ездить по вверенной территории,
  2. не врезаться в препятствия
  3. запоминать местнахождение препятствий и использовать эту информацию при передвижении

Железо:

  1. Шасси – от игрушечного RC танка. В принципе, есть два рабочих танка с ИК-пушками (а-ля «танковый бой»), но изымать их у ребенка не хочу. Еще есть уже выломанный из останков помершего RC Шермана сдвоенный мотор-редуктор, но остальная ходовая от него – гусеницы-катки-ведущие – не сохранилась. Скорее всего – поищу для вивисекции не дорогой китайский танк в магазине.
  2. Глаза – ультразвуковые излучатели/датчики. С микросхемой, которая переводит аналоговый сигнал в цифровой, не помню как она называется….. АЦ-чего-то там, кажется. Нужно минимум 4 комплекта

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

  1. Мозг – Raspberry Pi B. Мне не до конца понятен вопрос с соединением «мозгов» с «ногами», т.к. максимальное напряжение на портах GPIO 3V, а моторчеги, скорее всего, затребуют больше, поэтому, скорее всего подключать их надо будет через отдельную микросхему-драйвер
  2. Питание – аккумуляторы. Этого добра вроде есть в количестве.

Программирование.

Самоучитель по Пайтону изучен, лабы, какие нашел, сделал, понимание, как и что делать — присутствует.

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

Что я придумал:

— Формируем матрицу, каждому пересечению которой соответствует квадрат ну, допустим, 5 на 5 см.

— При обнаружении УЗ датчиком препятствия, соответствующей клетке (исчисляется из направления датчика относительно корпуса и расстояния от датчика до препятствия) присваивается признак «Возможно препятствие». При повторном обнаружении на этой клетке препятствия, ей присваивается признак «Стопудово-препятствие»

— При перемещении робота положение «базовой клетки» (клетки, от которой считается расстояние до препятствия) определяется исчисляемым путем. Что-то типа 2 секунды работы моторов = +5 см изменения координат (через тригонометрические функции), 3 секунды работы одного двигателя = изменение вектора на 35 градусов.

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

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

В общем вопрос к камрадам, не чуждым паяльнику – можете ткнуть носом — какие УЗ сенсоры купить?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Капча: * Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.