roboforum.ru

Технический форум по робототехнике.


Kozinaka - медленно, но верно

Блоги посетителей.
Правила форума
В данном разделе каждый может иметь не более одной темы. Тема должна начинаться с логина (ника) робофорума.

Kozinaka - медленно, но верно

Сообщение Kozinaka » 23 авг 2010, 13:23

Undo - есть такая группа (http://undo-band.ru)
Undo.jpg
Undo.jpg (20.47 КиБ) Просмотров: 2193

Коллектив состоит из собственно меня и моего друга, мы играем различные страннячки, порождённые упорной попыткой IT-шников (я програмист, а Дима сисадмин) творчески реализоваться в музыке. Получаются немного аутичные э... концептуальные музыкальные композиции, т.е. композиции. Типа такого:


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

От такой системы требовалось несколько вещей:
1. Форма вызывающая эмоциональный отклик зрителя - желательно человекоподобность.
2. Тупое воспроизведение заранее подготовленной последовательности нот.
3. Способность извлекать звуки из музыкального инструмента предназначенного для человека.


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

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

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

Добавлено спустя 9 минут 40 секунд:
Электробасист: прототип пальца R1

ИзображениеИзображение

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

Изображение

Фазы движения:
ИзображениеИзображениеИзображение

Видео:


Добавлено спустя 3 минуты 44 секунды:
Электробасист: прототип пальца R2

Второй вариант пальца в принципе уже способного что-то дёргать. Вместо двух сухожилий сделал одно + резинка, добавил отдельный привод нижней фаланги. Пока основные проблемы с неравномерностью сгиба фаланг. Дальше буду делать из дерева - конструктора не хватает.

ИзображениеИзображениеИзображение

Фото:
Изображение

Видео:


Добавлено спустя 10 минут 8 секунд:
Электробасист: прототип пальца R3

Book.jpg
Book.jpg (46.2 КиБ) Просмотров: 2188

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

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

ИзображениеИзображениеИзображение

Фото:
ИзображениеИзображение

Видео:

А вот ещё ролик, где я попытался объяснить принцип по которому фаланги связываются:


Добавлено спустя 4 минуты 8 секунд:
На этом этапе попал на Робофорум в поисках как этот пальчик автоматизировать. Да вот как-то и остановился электробасисит...
Последний раз редактировалось Kozinaka 23 авг 2010, 16:09, всего редактировалось 2 раз(а).
Аватара пользователя
Kozinaka
 
Сообщения: 85
Зарегистрирован: 17 ноя 2009, 16:21
Откуда: Москва
прог. языки: C/C++/C#
ФИО: Олег Козлов

Re: Kozinaka - медленно, но верно

Сообщение Michael_K » 23 авг 2010, 13:24

Прикольно.

Но что-то мне кажется, что левая рука сложнее.
А правый "щипок", наверняка, можно было проще сделать...
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Kozinaka - медленно, но верно

Сообщение Kozinaka » 23 авг 2010, 13:37

Левая рука по сути четыре подпружиненных ролика (по одному на струну), самое сложное оперативно перемещать блок с роликами в пределах грифа (около полуметра) и поднимать его от струн, когда нужна открытая нота. Басист не играет аккордов - в один момент звучит одна нота.

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

Пока я даже руки не сделал - только палец. А будет секция из n-пальцев - думаю что работать они будут медленнее человеческих, поэтому просто скорость за счет количества пальце можно будет достигнуть. Например 5 штук (хотя живой басист работает одним-двумя).
:)

Добавлено спустя 4 минуты 40 секунд:
Кстати, я реализовал один механизм дёрганья, самый дубовый. У человека иногда всё диаметрально противоположно - кончиком почти прямого пальца струна прижимается, а сгибом фаланг сдёргивается со струны. Какой из двух приёмов использовать решается динамически, в зависимости от интенсивности игры и положения руки относительно струны. Короче, всё сложно, но для арт-объёкта достаточно заимствовать малую толику функциональности живой системы.
Аватара пользователя
Kozinaka
 
Сообщения: 85
Зарегистрирован: 17 ноя 2009, 16:21
Откуда: Москва
прог. языки: C/C++/C#
ФИО: Олег Козлов

Re: Kozinaka - медленно, но верно

Сообщение Michael_K » 23 авг 2010, 13:52

ничего себе, они гриф иссверлили :)


Добавлено спустя 8 минут 50 секунд:
Ну, понятно, что это арт-объект (иначе простой миди-плейер бы использовали :) )
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Kozinaka - медленно, но верно

Сообщение Kozinaka » 23 авг 2010, 16:19

Охренеть, молодцы! :shock:
Спасибо за видео, этого я не видел!

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

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

Добавлено спустя 12 минут 59 секунд:
Сначала я научился хоть как-то паять

Жена, насмотревшись на мои потуги с детскими конструкторами, подарила на день рождения несколько робот-китов, которые я доблестно собрал!

Elenco Ladu Bug
Robot1.jpg
Robot1.jpg (7.74 КиБ) Просмотров: 2156


Этого жука я спаял первым. Он не заработал. Я показал отцу, он сказал, что ему стыдно за меня и... научил пользоваться канифолью.
:oops:

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

Elenco Titan Tank
Robot3.jpg


Танк без какой-либо мозговой деятельности собрался легко и приятно (без пайки). Два дня игрался - у него пульт управления есть, он смешно пищит "стреляя" из башни. Жалко он был только один, а их нужно как минимум два, чтобы друг в друга стрелять.

Elenco Hexapod Monster
Robot2.jpg
Robot2.jpg (8.36 КиБ) Просмотров: 2152


Уже не помню, что что-то в нужно было паять, а что-то было собрано. Легко собрал, получил много удовольствия, а дальше только на органы. Проблемы те же что и с Lady Bug: сенсоры капризные, мозг рудиментарен.

Добавлено спустя 15 минут 13 секунд:
Дальше помигал светодиодами

С помощью Гугла и Робофорума я набрался пены с унитаза про микроконтроллеры и конечно, в жажде соединить программирование и то, чего я бы хотел сделать, купил программатор на LPT-порт, макетку от Olimex c ATmega128 и кучу всякой обвязки.

Прежде, может будет любопытно, писал письмо Михаилу Семёнову, электропочта которого была указана на http://avr123.nm.ru. Хотел купить пачкой программатор, микроконтроллер и совет. Ответа не дождался, поэтому купил и подобрал себе всё сам, а вот пользователь avr123 оказался общительней и помогал советом на форуме:

Proteus для юных поджигателей
Монтаж и подключение Olimex AVR-H128
Питание LCD WH1602B

В общем собрал-таки, при поддержке сообщества, свою Первоштуку:
Chaser1.jpg
Chaser1.jpg (173.02 КиБ) Просмотров: 2152

Chaser2.jpg
Chaser2.jpg (177.97 КиБ) Просмотров: 2153

Видео:


Добавлено спустя 17 минут 24 секунды:
Дальше освоил генерацию звука и работу с LCD

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

Если с LCD-экранчиком всё довольно просто, взял стороннюю библиотеку авторства Fabian Maximilian Thiele, то со звуком пришлось опять обращаться к помощи старших товарищей: Как подключить к МК пищалку?

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

DemoDevice.jpg

Buzzer1.jpg

Buzzer2.jpg

Buzzer3.jpg

Демо-ролик:

Глюк при старте возникает через раз. Это от того, что библиотека для LCD писалась для 8МГц микроконтроллера, а я гоняю его на 16МГц, причём автор хитрил и вместо опроса флага готовности экрана делает паузу (в комментах пишет что так быстрее), в итоге один из контроллеров экрана не успевает инициализироваться. Лечится кратковременным ресетом - основной контроллер успевает ресетнуться, а экран нет, вот и на втором подходе инициализируется вторая половина экрана.
:D

Добавлено спустя 13 минут 59 секунд:
Фуф, вроде написал задним числом всё что успел наделать!

Теперь о настоящем: приехал OR-сервоконтроллер!
ServoController.jpg

Сервами я успел затариться заранее (8 микросерв HXT900 у setar'а и четыре обычных MG955 в забыл каком авиамодельном сообществе), буду соединять свою avr-нинтенду через робобас с новым контроллером (или с компа попробовать сначала?) и шевелить сервами.
Аватара пользователя
Kozinaka
 
Сообщения: 85
Зарегистрирован: 17 ноя 2009, 16:21
Откуда: Москва
прог. языки: C/C++/C#
ФИО: Олег Козлов

Экспериментирую с переносом фоток на LCD

Сообщение Kozinaka » 31 авг 2010, 17:35

FaceSource2.jpg
FaceSource2.jpg (8.13 КиБ) Просмотров: 2103
FaceLCD2.jpg
FaceLCD2.jpg (5.38 КиБ) Просмотров: 2108

Забавный процесс - монохромная картинка создаёт совсем не такое впечатление, как исходная. Мало того - не все полноцветные картинки хорошо переходят в lowres-ЧБ. В любом случае впечатление от цветной и чернобелой 128х64 фоток совершенно различные и выражение лица тоже меняется. От освещённости фотки перед преобразованием зависит лёгкое или гнетущее впечатление будет она оказывать:

FaceSource.jpg
FaceSource.jpg (7.98 КиБ) Просмотров: 2104
FaceContrast.gif
FaceContrast.gif (11.05 КиБ) Просмотров: 2104
FaceFrames.jpg
FaceFrames.jpg (57.19 КиБ) Просмотров: 2100

Пока в ЧБ перевожу с помощью Irfan View, а в МК забиваю через маленький скрипт в Matlab'е, копирование состояния переменной-матрицы и функции найти\заменить в блокноте - звучит громоздко, но производится довольно быстро.
:)

Мой LCD к ужасу и огорчению имеет не квадратные пиксели - прямоугольнички 4х3. Вот зачем это понадобилось разработчикам? Картинки из-за этого приходится предварительно плющить, вот так:
Screen2.JPG
Screen2.JPG (7.1 КиБ) Просмотров: 2102

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

Будет называться Beatris(Be A TetRIS). :D
Аватара пользователя
Kozinaka
 
Сообщения: 85
Зарегистрирован: 17 ноя 2009, 16:21
Откуда: Москва
прог. языки: C/C++/C#
ФИО: Олег Козлов

Re: Kozinaka - медленно, но верно

Сообщение Duhas » 01 сен 2010, 15:18

а могет проще и в ЧБ матлабом ? ))
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: Kozinaka - медленно, но верно

Сообщение Kozinaka » 01 сен 2010, 17:24

Ненене, процесс перевода в ЧБ, это искусство выбора яркости - 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 раз.
Аватара пользователя
Kozinaka
 
Сообщения: 85
Зарегистрирован: 17 ноя 2009, 16:21
Откуда: Москва
прог. языки: C/C++/C#
ФИО: Олег Козлов

Re: Kozinaka - медленно, но верно

Сообщение Michael_K » 01 сен 2010, 17:30

Где-то я такую софтинку писал...
Но к сожалению, у меня архив сдох: килл ми плиз
Наверняка на сидюках где-то валяется резервная копия... если найду и не забуду, то выложу
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Kozinaka - медленно, но верно

Сообщение Kozinaka » 01 сен 2010, 17:33

О! Это было бы прекрасно! :)
Изобретение велосипеда процесс приятный, но часто чертовски долгий.
Аватара пользователя
Kozinaka
 
Сообщения: 85
Зарегистрирован: 17 ноя 2009, 16:21
Откуда: Москва
прог. языки: C/C++/C#
ФИО: Олег Козлов

Re: Kozinaka - медленно, но верно

Сообщение Rockman » 03 окт 2010, 19:24

Я раньше увлекался игрой на гитаре и даже записывал в одного личные композиции по партиям... Игра на гитаре, не режущей ухо требует хорошей техники игры. Как человек с музыкальным образованием и любительским опытом, скажу, что по-моему, сустав манипулятора, собранный из детского конструктора не прокатит...не будет это работать. Нужно что-то более технологичное, прочное и компактное... Если это даже и сделать, то звуки будут однообразными и механическими, а сделать приличный манипулятор для игры - в первую очередь, сложнейшая механическая задача. А электронику и программную реализацию сделать не так уж и трудно будет (если что могу помочь программно).
Rockman
 
Сообщения: 198
Зарегистрирован: 06 июл 2010, 16:36
Откуда: Черногорск
прог. языки: Objective-C, C#, C, C++

Re: Kozinaka - медленно, но верно

Сообщение Kozinaka » 08 ноя 2010, 18:38

Само собой, на детском конструкторе далеко не уедешь. Я просто прототипы собирал, чтобы понять чё и как вообще. Немного затухли у меня дела с электроникой, но час настанет, я верю! :)
Аватара пользователя
Kozinaka
 
Сообщения: 85
Зарегистрирован: 17 ноя 2009, 16:21
Откуда: Москва
прог. языки: C/C++/C#
ФИО: Олег Козлов

Re: Kozinaka - медленно, но верно

Сообщение =DeaD= » 08 ноя 2010, 18:55

По поводу человекоподобных форм тут есть товарищ kokakoka, он тут давеча как раз мне скидывал ссылку на свою работу - http://www.zobot.ru/project/28 - это робот манекен из картона, вот если потом будете делать музыкальную группу из роботов - можете воспользоваться идеей.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов


Вернуться в Блоги

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Mail.ru counter