Парки развлечений — неделя 4

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

Эта неделя была посвящена OSC или Открытому управлению звуком. С технической точки зрения, OSC подобен MIDI, но для современной эпохи (не включая новый MIDI 2.0), чтобы использовать преимущества скорости и возможностей IP-сетей. Для тех, кто боится руководств пользователя, OSC — это способ управления программным обеспечением или машинами локально или через Интернет. Я начал с обзора спецификации OSC 1.1 и их руководства по передовому опыту, написанного авторами OSC.

Имея за плечами некоторый опыт OSC, я решил изучить OSC Bundles с этим заданием (решение, о котором я пожалею). Я решил создать небольшой пакет из двух сообщений, одно для панорамирования бота, а другое для наклона. Это выведет значения прямого угла для сервоприводов.

Еще одним препятствием для этого проекта было использование визуального языка программирования, известного как Max/MSP. Это работает аналогично плану Unreal Engine с узлами и спагетти-строками. К сожалению, это все, что я знаю о том, что Макс ввязался в это.

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

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

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

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

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