Коллектив состоит из собственно меня и моего друга, мы играем различные страннячки, порождённые упорной попыткой IT-шников (я програмист, а Дима сисадмин) творчески реализоваться в музыке. Получаются немного аутичные э... концептуальные музыкальные композиции, т.е. композиции. Типа такого:
Вот с этого коллектива и начались год назад мои попытки научиться делать роботов. Собственно иллюзиями по поводу создания искусственного разума или электронного друга я не страдаю, задача была вполне конкретная: в наш дуэт нужен басист, было бы здорово, если бы он был механическим.
От такой системы требовалось несколько вещей: 1. Форма вызывающая эмоциональный отклик зрителя - желательно человекоподобность. 2. Тупое воспроизведение заранее подготовленной последовательности нот. 3. Способность извлекать звуки из музыкального инструмента предназначенного для человека.
Я видел много клипов на ютюбе с механизмами воспроизводящими музыку на обычных музыкальных инструментах. Подхода два: вести родословную от матричного принтера или приспосабливать к игре на инструменте универсального робота. В первом случае игра не вызывает эмоционального отклика - вершина этой эволюции уже достигнута, это ноутбук, на котором можно записать какую-угодно партию, такой подход саботирует саму идею игры машины на человеческом музыкальном инструменте. Во втором случае то, что я видел, это дорогущие сложные роботы, настолько приближенные к человеку, что вызывают антипатию и отторжение. Это похоже на то, как отсутствие головы и "неправильные" ноги у BigDog немного пугают - уж слишком похоже в остальных аспектах на настоящее животное. Нужен такой робот, который внешний вид черпает в традиционном искусстве на эту тему, знаете когда из механического хлама собирают кукол, напоминающих живые существа, а функциональность нужно заимствовать у человека узко в тех областях, где это необходимо.
Сейчас, конечно, я понимаю, насколько задача по сложности превосходила мои возможности. Конечно, ничего законченного я не сделал, хотя от намерения не отказываюсь - просто процесс создания будет состоять из нескольких проектов и растянется по времени. Медленно, но верно.
Самым сложным узлом будущего электробасиста я предполагал механизм дерганья за струны - нужно быть не просто колесо с зацепками сделать, а взять часть функциональности у человеческих пальцев. Ниже цитирую прошлогодние записи, по поводу попыток сымитировать человеческий палец, способный дёрнуть за струну.
Добавлено спустя 9 минут 40 секунд: Электробасист: прототип пальца R1
С целью обозначить начало своей работы над проектом электронно-механического басиста я вчера вечерком быстренько собрал прототип пальца правой руки из детского конструктора.
Фазы движения:
Видео:
Добавлено спустя 3 минуты 44 секунды: Электробасист: прототип пальца R2
Второй вариант пальца в принципе уже способного что-то дёргать. Вместо двух сухожилий сделал одно + резинка, добавил отдельный привод нижней фаланги. Пока основные проблемы с неравномерностью сгиба фаланг. Дальше буду делать из дерева - конструктора не хватает.
Фото:
Видео:
Добавлено спустя 10 минут 8 секунд: Электробасист: прототип пальца R3
Вложение:
Book.jpg [ 46.2 КиБ | Просмотров: 4059 ]
Купил книжку по физиологии верхних конечностей. Узнал кучу нового, выжимка: две первые фаланги пальца связаны специальным сухожилием.
Третяя модель пальца со стендом. Проблема равномерности сгиба фаланг решена, теперь есть трабла с неравномерностью усилия на сгиб в разных положениях пальца, но это я решу гибким тросиком.
Фото:
Видео:
А вот ещё ролик, где я попытался объяснить принцип по которому фаланги связываются:
Добавлено спустя 4 минуты 8 секунд: На этом этапе попал на Робофорум в поисках как этот пальчик автоматизировать. Да вот как-то и остановился электробасисит...
Последний раз редактировалось Kozinaka 23 авг 2010, 16:09, всего редактировалось 2 раз(а).
Заголовок сообщения: Re: Kozinaka - медленно, но верно
Добавлено: 23 авг 2010, 13:37
Зарегистрирован: 17 ноя 2009, 16:21 Сообщения: 85 Откуда: Москва
прог. языки: C/C++/C#
ФИО: Олег Козлов
Левая рука по сути четыре подпружиненных ролика (по одному на струну), самое сложное оперативно перемещать блок с роликами в пределах грифа (около полуметра) и поднимать его от струн, когда нужна открытая нота. Басист не играет аккордов - в один момент звучит одна нота.
А щипок можно сделать колесиком в лопастями, но это будет настолько далеко от техники звукоизвлечения человека, что концепция всей задачи ломается. Да и колёсиком нельзя управлять динамикой и трудно контролировать момент срыва струны с зацепа. В получившимся пальце сначала обеспечивается натяг (слабый или сильный) а уж потом независимое "сдёргивание" в нужный момент времени.
Пока я даже руки не сделал - только палец. А будет секция из n-пальцев - думаю что работать они будут медленнее человеческих, поэтому просто скорость за счет количества пальце можно будет достигнуть. Например 5 штук (хотя живой басист работает одним-двумя).
Добавлено спустя 4 минуты 40 секунд: Кстати, я реализовал один механизм дёрганья, самый дубовый. У человека иногда всё диаметрально противоположно - кончиком почти прямого пальца струна прижимается, а сгибом фаланг сдёргивается со струны. Какой из двух приёмов использовать решается динамически, в зависимости от интенсивности игры и положения руки относительно струны. Короче, всё сложно, но для арт-объёкта достаточно заимствовать малую толику функциональности живой системы.
Заголовок сообщения: Re: Kozinaka - медленно, но верно
Добавлено: 23 авг 2010, 16:19
Зарегистрирован: 17 ноя 2009, 16:21 Сообщения: 85 Откуда: Москва
прог. языки: C/C++/C#
ФИО: Олег Козлов
Охренеть, молодцы! Спасибо за видео, этого я не видел!
Круто, но как раз подход а ля матричный принтер: простые технологические решения, которые, в отличии от музыканта, способны задержать внимание слушателя не больше чем на пару минут. Они, по сути, сделали клавесин - у этого прародителя рояля как раз не молоточки по струнам били, а как тут, жесткие дёргалки к клавишам приделаны - от этого такая резкая атака и тембр. В случае бас-гитары нужно качать с большей амплитудой и большей плавностью, а на грифе можно позволить себе перемещающийся блок - больше одной ноты одновременно извлекать не нужно.
Я не за моделирование человека, я за человекоподобный клавесин, у которому можно приделать голову, и которого воображение человека против воли наделит несуществующей личностью. Я тут охолонул трошки и разбил своё развитие на более мелкие этапы. Вот ща накидаю на какие именно...
Добавлено спустя 12 минут 59 секунд: Сначала я научился хоть как-то паять
Жена, насмотревшись на мои потуги с детскими конструкторами, подарила на день рождения несколько робот-китов, которые я доблестно собрал!
Elenco Ladu Bug
Вложение:
Robot1.jpg [ 7.74 КиБ | Просмотров: 4045 ]
Этого жука я спаял первым. Он не заработал. Я показал отцу, он сказал, что ему стыдно за меня и... научил пользоваться канифолью.
После полной перепайки жук заработал, но его инфракрасный датчик настолько капризно работал, что помучив его часок я забросил его в шкаф. Простейшая схема "встретил препятствие - поверни на 90 градусов" в этом роботе реализована кучей элементов, которые я тупо впаял в нарисованные для них гнёзда, и больше с этим сделать ничего нельзя. Было понятно, что изучать схемотехнику, чтобы делать таких чудовищ - напрасная трата времени.
Elenco Titan Tank
Вложение:
Robot3.jpg [ 19.19 КиБ | Просмотров: 3951 ]
Танк без какой-либо мозговой деятельности собрался легко и приятно (без пайки). Два дня игрался - у него пульт управления есть, он смешно пищит "стреляя" из башни. Жалко он был только один, а их нужно как минимум два, чтобы друг в друга стрелять.
Elenco Hexapod Monster
Вложение:
Robot2.jpg [ 8.36 КиБ | Просмотров: 4019 ]
Уже не помню, что что-то в нужно было паять, а что-то было собрано. Легко собрал, получил много удовольствия, а дальше только на органы. Проблемы те же что и с Lady Bug: сенсоры капризные, мозг рудиментарен.
Добавлено спустя 15 минут 13 секунд: Дальше помигал светодиодами
С помощью Гугла и Робофорума я набрался пены с унитаза про микроконтроллеры и конечно, в жажде соединить программирование и то, чего я бы хотел сделать, купил программатор на LPT-порт, макетку от Olimex c ATmega128 и кучу всякой обвязки.
Прежде, может будет любопытно, писал письмо Михаилу Семёнову, электропочта которого была указана на http://avr123.nm.ru. Хотел купить пачкой программатор, микроконтроллер и совет. Ответа не дождался, поэтому купил и подобрал себе всё сам, а вот пользователь avr123 оказался общительней и помогал советом на форуме:
В общем собрал-таки, при поддержке сообщества, свою Первоштуку:
Вложение:
Chaser1.jpg [ 173.02 КиБ | Просмотров: 4021 ]
Вложение:
Chaser2.jpg [ 177.97 КиБ | Просмотров: 4023 ]
Видео:
Добавлено спустя 17 минут 24 секунды: Дальше освоил генерацию звука и работу с LCD
По задумке из макетки мигающей светодиодиками должен был получиться тетрис: экран, кнопки, звук - вот и скромная игровая консоль. Это как-бы пульт который я потом бы использовал в качестве пульта управления для отладки механизмов с сервомашинками, датчиками и т.д. Как оказалось комп для этих целей использовать удобнее, но методической обучающей ценности всё равно у этой штуки не отнять.
Как результат - библиотека для генерации бэкграундных мелодий с помощью ШИМ на таймерах и макетная плата для демонстрации возможностей библиотеки. В планах дооформить сопроводительный текст и выложить исходники, картинки и демо-ролик на форуме в разделе "Микроконтроллеры", вдруг кому-нибудь полезным окажется.
Вложение:
DemoDevice.jpg [ 200.88 КиБ | Просмотров: 3945 ]
Вложение:
Buzzer1.jpg [ 152.07 КиБ | Просмотров: 3941 ]
Вложение:
Buzzer2.jpg [ 149.13 КиБ | Просмотров: 3929 ]
Вложение:
Buzzer3.jpg [ 148.52 КиБ | Просмотров: 3934 ]
Демо-ролик:
Глюк при старте возникает через раз. Это от того, что библиотека для LCD писалась для 8МГц микроконтроллера, а я гоняю его на 16МГц, причём автор хитрил и вместо опроса флага готовности экрана делает паузу (в комментах пишет что так быстрее), в итоге один из контроллеров экрана не успевает инициализироваться. Лечится кратковременным ресетом - основной контроллер успевает ресетнуться, а экран нет, вот и на втором подходе инициализируется вторая половина экрана.
Добавлено спустя 13 минут 59 секунд: Фуф, вроде написал задним числом всё что успел наделать!
Сервами я успел затариться заранее (8 микросерв HXT900 у setar'а и четыре обычных MG955 в забыл каком авиамодельном сообществе), буду соединять свою avr-нинтенду через робобас с новым контроллером (или с компа попробовать сначала?) и шевелить сервами.
Заголовок сообщения: Экспериментирую с переносом фоток на LCD
Добавлено: 31 авг 2010, 17:35
Зарегистрирован: 17 ноя 2009, 16:21 Сообщения: 85 Откуда: Москва
прог. языки: C/C++/C#
ФИО: Олег Козлов
Вложение:
FaceSource2.jpg [ 8.13 КиБ | Просмотров: 3979 ]
Вложение:
FaceLCD2.jpg [ 5.38 КиБ | Просмотров: 3979 ]
Забавный процесс - монохромная картинка создаёт совсем не такое впечатление, как исходная. Мало того - не все полноцветные картинки хорошо переходят в lowres-ЧБ. В любом случае впечатление от цветной и чернобелой 128х64 фоток совершенно различные и выражение лица тоже меняется. От освещённости фотки перед преобразованием зависит лёгкое или гнетущее впечатление будет она оказывать:
Вложение:
FaceSource.jpg [ 7.98 КиБ | Просмотров: 3988 ]
Вложение:
FaceContrast.gif [ 11.05 КиБ | Просмотров: 3985 ]
Вложение:
FaceFrames.jpg [ 57.19 КиБ | Просмотров: 3966 ]
Пока в ЧБ перевожу с помощью Irfan View, а в МК забиваю через маленький скрипт в Matlab'е, копирование состояния переменной-матрицы и функции найти\заменить в блокноте - звучит громоздко, но производится довольно быстро.
Мой LCD к ужасу и огорчению имеет не квадратные пиксели - прямоугольнички 4х3. Вот зачем это понадобилось разработчикам? Картинки из-за этого приходится предварительно плющить, вот так:
Вложение:
Screen2.JPG [ 7.1 КиБ | Просмотров: 3986 ]
Я хочу тетрис сделать, от уровня заполнености стакана в правой части будет меняться световая насыщенность картинки. Игра заканчивается, когда стакан пуст или, наоборот, полон. Собственно за сервы не брался, хочу заделать додумку.
Заголовок сообщения: Re: Kozinaka - медленно, но верно
Добавлено: 01 сен 2010, 15:18
Зарегистрирован: 15 сен 2007, 13:03 Сообщения: 6338 Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович
а могет проще и в ЧБ матлабом ? ))
_________________ «Как сердцу выразить себя? … Мысль изреченная есть ложь!» В этом мире меня подводит доброта и порядочность... "двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Заголовок сообщения: Re: Kozinaka - медленно, но верно
Добавлено: 01 сен 2010, 17:24
Зарегистрирован: 17 ноя 2009, 16:21 Сообщения: 85 Откуда: Москва
прог. языки: C/C++/C#
ФИО: Олег Козлов
Ненене, процесс перевода в ЧБ, это искусство выбора яркости - Irfan View нужен для того, чтобы менять яркость, убирать количество цветов и оценивать что получилось. А уж Матлаб только чтобы из картинки в матрицу хекс-значений перевести. Матлаб выбран был по слепой случайности - другой среды программирования на ноуте не было установлено.
Вот мой костыль:
Код:
function TextPic = make_pic(PicName)
bitmap = imread(PicName, 'bmp');
bSign = [1 1 1 1 1 1 1 1];
TextPic = {};
for j = 1 : 128; for i = 1 : 8 : 64; for k = 0 : 7; bSign(k+1) = bitmap(j, i+k); end; %Перевод из битового поля в шестнадцатеричное представление X = int16(binvec2dec(bSign)); Y = hex(fi(X)); Y(1:2) = '0x'; %Сохранение в выходном массиве TextPic(j, (i + 7)/8) = cellstr(Y); end; end;
Вообще вроде как процесс важный, нужно будет конвертер написать, чтоб из исходной картинки переводить в ЧБ с заданием размеров и регуляцией яркости, т.к. в данный момент формирование картинки, это сложная смесь манипуляций в IrfanView и PaintBrush.
Последний раз редактировалось Kozinaka 01 сен 2010, 17:31, всего редактировалось 1 раз.
Где-то я такую софтинку писал... Но к сожалению, у меня архив сдох: килл ми плиз Наверняка на сидюках где-то валяется резервная копия... если найду и не забуду, то выложу
Я раньше увлекался игрой на гитаре и даже записывал в одного личные композиции по партиям... Игра на гитаре, не режущей ухо требует хорошей техники игры. Как человек с музыкальным образованием и любительским опытом, скажу, что по-моему, сустав манипулятора, собранный из детского конструктора не прокатит...не будет это работать. Нужно что-то более технологичное, прочное и компактное... Если это даже и сделать, то звуки будут однообразными и механическими, а сделать приличный манипулятор для игры - в первую очередь, сложнейшая механическая задача. А электронику и программную реализацию сделать не так уж и трудно будет (если что могу помочь программно).
Заголовок сообщения: Re: Kozinaka - медленно, но верно
Добавлено: 08 ноя 2010, 18:38
Зарегистрирован: 17 ноя 2009, 16:21 Сообщения: 85 Откуда: Москва
прог. языки: C/C++/C#
ФИО: Олег Козлов
Само собой, на детском конструкторе далеко не уедешь. Я просто прототипы собирал, чтобы понять чё и как вообще. Немного затухли у меня дела с электроникой, но час настанет, я верю!
Заголовок сообщения: Re: Kozinaka - медленно, но верно
Добавлено: 08 ноя 2010, 18:55
Зарегистрирован: 06 окт 2004, 18:01 Сообщения: 24218 Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
По поводу человекоподобных форм тут есть товарищ kokakoka, он тут давеча как раз мне скидывал ссылку на свою работу - - это робот манекен из картона, вот если потом будете делать музыкальную группу из роботов - можете воспользоваться идеей.
_________________ Проект [[Open Robotics]] - Универсальные модули для построения роботов
Сейчас этот форум просматривают: Bing [Bot] и гости: 0
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения