Думаете я весь остаток лета и осень дурака валял, снова забросив проект? Ничего подобного! Работа шла полным ходом. Написание и оформление постов для блога требует немало времени и внимания, поэтому, к сожалению, пришлось выбирать между “пилить” и “писать”. Поскольку, меня наглухо накрыла волна слепого рукоприкладства, то от “пилить” меня перло больше и выбор был сделан в эту сторону.

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


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

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

Но прежде чем начать плавне и невздрыжне движение от головы к заднице, необходимо залатать некоторые “дырки в сюжете”.


Блок “ушных сенсоров” не раз упоминался в сопровождении обещания написать о нем подробнее позже. На самом деле, материала в этой части немного и в основном оно носит философский характер.

Дело вот в чем… В силу особенностей работы нашего человеческого головного мозга с его бесконечной тягой к парейдолии, нам хочется думать, что уши у собаки-робота это вот это:

В принципе, это верно. Когда вы видите их на экране телевизора или в своем воображении. Оно так и было задумано. Есть голова, на голове есть уши. Это “логично”. Скажем, антенны в форме того, что можно было бы принять за собачье ухо. ОК.

Но все меняется, когда вы пытаетесь перенести объект с экрана телевизора или воображения в наш реальный мир, пытаясь одновременно сохранить то, что там ваши мозги себе навоображали…

Для современного робота, в подавляющем большинстве случаев, “органом слуха” является микрофон. За более, чем 100 лет существования, это устройство, в принципе, изменилось мало.

Более того! Если взглянуть на это шире, то в плане мембраны преобразующей давление звуковых волн в ту или иную форму для передачи к устройству обработки информации, мало что изменилось за последние двести-триста с хвостиком лямов лет… Ну или когда там первые позвоночные решили с этими самыми хвостиками почтить своим присутствием просторы нашей круглой? Лень в википедии залезать…

Оригинальная конструкция антенн-ушей на голове К9 из фильма, не слишком подходит на роль микрофона. Мягко говоря. Допустим, что в фильме все это работает на каких то иных принципах улавливания звуков. Но мне, вот тут, на рабочем столе, с этими, вот, доступными сейчас компонентами, такие принципы, либо неизвестны, либо труднодоступны, либо труднореализуемы.

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

Никаких дырок в области ушей у оригинального К9 нет и не предусматривалось. Значит, нет иного выхода, кроме, как положить болт на этот самый “оригинальный дизайн” (впрочем, далеко не в первый раз).

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

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

Т.о. родились вот такие модули по бокам головы собачки:

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

Ну, просто в силу того, что изначально они делались совсем для другого. Типа, там, звуко-сенсорные триггеры (хлоп-хлоп -> загорелась лампочка) и всякая такая чепушня. Именно такие модули пришлось использовать по причине дефицита пространства в той части каркаса головы. Только вот что-то такого типа и влезало.

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

Где-то в 75-80% случаев она поворачивает голову в нужную сторону, если находится в достаточно просторном объеме пространства, типа комнаты. В узком же коридоре, когда переотражение от стен происходит очень быстро и звук попадает в оба микрофона почти одновременно, количество “угадываний” существенно снижается.

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

В сочетании с будущей обшивкой головы, эти модули будут выглядеть, как-то так:

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


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

Визор у оригинала – сплошная панель красного цвета, полупрозрачности которой достаточно, чтобы светить сквозь нее лампочками:

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

Как только народ не извращается. Вплоть до подобия “очков”:

Но чаще всего, конечно сверлят очередную “незаметную дырочку” в сплошном красном визоре.

Хренушки! Никаких очков и дырочек!

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

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

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

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

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

Для реализации такого функционала, визор был разделен на 4 части, которые в сложенном состоянии выглядят сплошным забралом:

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

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


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

Для этих целей была выбрана вот такая камера (камера такого типа, не буквально эта):

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

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

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

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

Для установки камеры в голове у собачки, было разработано довольно замороченное крепление:

И тут необходимо было учитывать ряд неочевидных моментов.

Сам модуль камеры состоит какбе из трех условно независимых частей: самой камеры с объективом и двух “ИК-прожекторов” по бокам (на фото выше, серебристые “блюдца” по сторонам от объектива).

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

Вот в этом и обнаружилась проблема во время экспериментов: все эти автоматические функции никак не могут быть контролируемы со стороны. Можно настроить чувствительность, но нельзя отключить автоматику совсем. Или, наоборот, включить ее насильно.

Для камеры это еще ничего – она оказалась достаточно “умной”. Там, единственное, ее фотодиод, которым она руководствуется, пришлось нарастить (синий цилиндрик на белой ножке вдоль объектива, было – стало):

Иначе, оно вообще не работало, оказываясь в глубине крепления. Там, типа, всегда было “темно”, хоть с открытым визором, хоть с закрытым.

А, вот, для “прожекторов” это стало действительно проблемой. Потому, что они греются. Это принцип их работы. Они же “ИК-прожекторы” = излучают тепло. Излучаемое ими тепло отражается от окружающих объектов и его улавливает матрица камеры, преобразуя в видимый диапазон.

При закрытом визоре, модуль камеры с “прожекторами” оказывается в темноте.

Сама камера, даже если и продолжает травить изображение – ОК. Она просто переходит в “ночной” режим. Но в него же переходят и “прожекторы”. И начинают весьма интенсивно жарить. Буквально! Мало того, что в таком интенсивном режиме они не живут особо долго, так еще и температуры вокруг себя могут нагнать будь здоров. Это плохо, как для окружающей электроники, так и для пластика каркаса (эта часть печаталась из PLA, если и не плавится начнет, так деформироваться – много там не понадобится). Они ж реально пыщут, как хороший комнатный калорифер!

Простым решением проблемы стало разнесение всех компонентов модуля камеры. Ибо единственное чем “прожекторы” связаны с камерой и в чем нуждаются – питание. На камере оно не управляется вручную. Оно там всегда есть. Зато, подав питание на прожекторы отдельно, в обход камеры – им я уже могу управлять. Дал контроллер питание на “прожектор” – он включился и дальше там своими “мозгами” уже светит ярче или тусклее. Убрал питание – костер потух.

Т.е., по сути, проблема решается просто тем, чтобы не делать ничего. В смысле, не скручивать вместе три детальки пришедшие в коробке, а использовать так, как их на фабрике в эту коробку положили – раздельно. Да, изящество решения некоторых проблем может быть весьма изысканным.

Вот, видно, как “прожекторы” совершенно каждый сам по себе сидит в креплении. Их крепежные винтики = контакты питания (они точно так же ими же на ответные контакты модуля камеры и крепятся, если собирать все вместе):

А, вот, теперь – самое смешное… Я так и не понял, на кой хрен эта дополнительная подсветка камере вообще нужна? В кромешной темноте эта камера и сама по себе видит буквально “как днем” и без всякой дополнительной подсветки.

Например (см. изображение на мониторе):

Возможные версии происходящего:

  • Ну, например, “прожекторы” в этом наборе – рудимент от модулей с более чахлыми объективами (тот же самый модуль, но в комплекте с меньшей линзой = меньше улавливается излучения = уже нужна доп. подсветка).
  • Либо, скажем, камера ловит подсветку от монитора, на который выводится изображение (хотя, не и очень то этот монитор помогает камере в мобильнике, как показывает пример выше).
  • Еще, возможно, что в помещении слишком “тепло” и для камеры этого достаточно в ИК-диапазоне (но я сомневаюсь, что эти “прожекторы” дадут хоть какую-то разницу, окажись собачка посреди бескрайнего газона глухой безлунной ночью зимой).

В общем, я все же решил “прожектора” оставить. Пока они не подключены к питанию и контроллеру, но, если будет нужно, это вопрос всего пары проводов и пары же строк кода. Во-первых, мало ли чего. Во-вторых, в комплексе с адресными светодиодными колечками, они формируют очень харизматичные вечно-охреневшие глазки у собачки при открытом визоре:

Про сами адресные светодиодные кольца, думаю, писать смысла нет. Они RGB и адресные. Т.е. могут управляться каждый индивидуально. Можно всякие узоры рисовать, подмигивать, наливать их “кровью” и т.п. Программный функционал по их управлению уже есть в котроллере, но пока задействован только на базовом уровне. Сейчас собачка может зажигать их сразу все и только строго красным/синим/зеленым/белым с разной интенсивностью. Без всякой цветомузыки и эмоций.

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

Но, теоретически, ежели чего, то эти кольца и сами можно использовать в качестве весьма существенного источника дополнительного освещения:

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


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

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

С конечной потребительской точки зрения, эта система не предназначена быть HiFi-проигрывателем. В данном случае не требуется никакого запредельного качества звучания с оттенками полутонов, послезвучием, дымкой над вуалью и всем тем, что там у всяких аудиофилов в черепе реверберирует. Тут, единственное что нужно от акустики – чтобы можно было более-менее отчётливо разобрать слова которые робот произносит.

Причем, скорее всего, саму речь придется пропускать через какой-нибудь смешной фильтр, делающий голос более “плането-шелезячным”. Ну или сразу найти text-to-speech библиотеку с соответствующими сэмплами. Зависит от того, что окажется проще. Посмотрим.

В таком ракурсе я не планирую даже в панелях обшивки напротив динамиков делать какие-то решетки. Пока сложно сказать наверняка, как оно будет звучать сквозь стенку при полностью собранном корпусе, но эксперименты с условными панелями на соплях и пальцах, показали, что получается как раз то, что нужно: неестественно и “шелезячно”.

Временно, эти динамики сейчас подключены к плате усилителя, выдранной из какого-то старого монитора:

Не смотря на то, что решение когда-то было сугубо временным, результат оказался весьма пристойным. Т.е. сперва я задумывал найти со временем какой-нибудь очередной модуль усилителя со всякими ништяками на борту, но, вот, сейчас уже, думаю… Есть у нас такой город поблизости: анахуа, собственно?

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

На этой плате уже все есть из необходимого. Питание, правый канал, левый канал, усилители, регулятор громкости (в сущности, для целей этого проекта не нужный). Эта плата уже подключена и протестирована в составе головы. Т.е., вообще, все уже готово и ничего больше делать не надо… Не знаю, в общем… Пока еще думаю… В любом случае, сам усилитель будет в туловище, а не в голове, поэтому с принятием решения можно еще подождать до момента, когда это самое туловище появится.


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

Анонс приблизительного содержания ближайших серий второго сезона:

Поделиться: