Пользователь
0,0
рейтинг
13 ноября 2010 в 03:39

Если нет денег на AXIS, или управляемая вебкамера своими, в меру кривыми, руками

Когда я впервые увидел трансляцию видео с управляемой вебкамеры на 13-м этаже МГУ, меня это очень впечатлило. Настолько, что захотелось устроить нечто аналогичное. На камеры типа AXIS 214PTZ лишних денег у меня нет, так что пришлось на некоторое время эту идею оставить. До тех пор, пока я не узнал про Arduino и про то, что к ней можно приделать «сетевую карту» и моторчики. Необходимые комплектующие быстренько были приобретены и у меня в наличии оказалось всё для сооружения полноценной вебкамеры, управляемой по сети.

Изучение интернетов показало что идея приделать камеру к сервам приходит первой ко всем счастливым обладателей ардуины и сервомашинок. Однако, ни одна из уже реализованных схем управления (кнопками, мышкой PS/2, с управляемого роутера, с компа, с вебстранички на встроенном в ардуину сервере) меня не впечатлило, ибо неудобно, имхо. Хотелось чего-то универсального, чтобы можно было выложить веб-интерфейс на сайт и с него управлять.

В итоге появилась вот такая штукенция:


Обычная вебкамера Logitech Pro 9000 (выигранная давным-давно в «Компьютерре») прикреплена к качалке сервы №1 (ось Y). Серва №1, в свою очередь, прикреплена к качалке сервы №2 (ось X). А серва №2 довольно крепко прикручена к основанию — тяжёлому деревянному бруску. Сервы — самые простенькие и дешёвые SRM-102 (примерно 400 руб. за штуку).

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

Контролер всего этого безобразия состоит из связки Arduino (точнее, Freeduino 2009) и Ethernet Shield v2. Тоже ничего сложного.

Придумалась примерная схема управления. Скрипт в веб-интерфейсе получает команды (нажатия кнопок, движения мыши и т.д.) и в определённом формате пишет их в базу. Ардуина циклически делает GET-запрос скрипту на сервере и скрипт выдаёт все команды из БД, после чего база очищается. Может, можно и покрасивее сделать, но меня в таком виде пока всё устраивает.

На серваке у меня MySQL крутится, база HEAP (чтоб пошустрее было). Структура вот такая:

CREATE TABLE `servo` (
`id` smallint(6) NOT NULL AUTO_INCREMENT,
`cam_id` tinyint(4) NOT NULL,
`action` varchar(20) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `cam_id` (`cam_id`)
) ENGINE=MEMORY DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;


Далее идут скрипты. Первый, самый главный, скетч для собссно Ардуины. Скетч не особо вылизан, так что его стопудово можно улучшить. Но, так как он стабильно работает, меня пока устраивает. Как заливать скетч не объясняю, ибо если вы знакомы с Ардуино, вы это уже знаете. Я использую IDE Arduino 18, так что и скетч под неё. В новой версии IDE скорее всего не заведётся!

Файл servowebclient.pde

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

index.php — собссно, страница с веб-интерфейсом управления камерой.
set.php — асинхронно вызываеся из index.php и пишет в БД нужные команды на перемещение камеры
get.php — скрипт вызывается удалённо Ардуиной, читает команды из БД и выдаёт их plain text'ом

Эти файлы, и вообще всю структуру каталога вебморды можно взять вот тут в архиве.serva.rar
Используемые библиотеки для Ардуины вот тут — libs.rar

В принципе, всё. Надеюсь, теперь все те, кто называл меня мегамозгом расслабятся и скажут «да это каждый дурак может» :-)

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

Логика управления прекрасно программируется на Javascript в основном файле index.php Так как за размещение команд отвечает функция MakeAction, с ней можно творить что угодно. Например, на вебморде есть ссылки типа «Фиксированные точки — Балкон». Это обычный вызов этой самой MakeAction(11, координата_x, координата_y), т.е. куда камеру надо направить. И таким образом можно программировать любые перемещения. Но надо не забывать о том что таким образом можно засрать очередь команд по самое нехочу. Например, у меня была функция Javascript «влево_вправо». Которая в цикле изменяла координату X, в итоге камера циклично гоняла туда-сюда. И если у кого-то в браузере была включена эта функция, никак нельзя было её остановить, пока её не выключал тот кто её включил. Временное решение было ставить таймер на подгрузку через jQuery ещё одного файлика, который принудительно убивал тот таймер. Это некрасиво, но работало.

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

Теперь немного о процессе тестирования, ибо о нём я просто должен рассказать.

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



Я всё пытался разместить описание камеры здесь на Хабре, но из-за маленькой, но очень положительной кармы никак не мог это сделать. Ну ни как, хоть ты тресни. Отчаявшись, я разместил вопрос в Q&A. В результате мне карму залили по-полной, намного больше чем требовалось для размещения топика. За что, в очередной раз, спасибо ребятам. Народу с Хабра очень понравилась (судя по комментам) моя реализация управления, так что камера на данный момент, почти непрерывно крутится уже девять часов (взято из статистики трансляции на смотри.ком). Сервы холодные, не греются нифига. Ардуина слегка тёпленькая. За всё это время был только один глюк — ардуина сетку потеряла. Как оказалось, «у меня был обрыв» (с)Антон Уральский

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

Завтра у меня рабочий день, на ночь я камеру отключу, но утром включу снова, на работе. Там ещё веселее будет.

UPD> Первая конструкция (на деревянном бруске) оказалось не очень устойчивой — удалось несколько раз её опрокинуть, резко мотнув камеру из стороны в сторону. Так что появилась новая модификация — серва №2 прикручена к маленькому деревянному брусочку. В брусочке просверлена дырочка, как раз под диаметр винта на стандартном крепеже от штатива. Ну и брусочек приклеплён к штативу от обычного фотоаппарата. Конструкция получилась меганадёжная — народ упорно вот уже 7 часов пытается её опрокинуть, а не получается.

Вдобавок, рядом с основной камерой была поставлена вторая (точно такая же Logitech, но стационарная), через которую можно было наблюдать, как колбасится первая. Очень увлекательное зрелище, если честно.



На удивление быстрой получилась реакция камеры — задержка по отношению к управлению в веб-морде составляет (у меня, во всяком случае) доли секунды. Хотя я дома сижу, а сервер на работе и между нами обычный корбино/билайновский интернет. Притормаживает видеотрансляция на smotri.com, но это не всегда.

Ну и дальше немного фотографий камеры и несколько видеороликов, для наглядности конструкции.











Несколько демонстрационных видеороликов (видео что-то не вставляется, так что просто ссылки даю):
www.youtube.com/watch?v=diEv3LS1nWg
www.youtube.com/watch?v=JEpCG5_nl1s
www.youtube.com/watch?v=t6cCTCtWCqg

Кстати, доча обожает эту игрушку. Правда, ей неважно, камера там или ещё что-то. Главное что двигается www.youtube.com/watch?v=dEOh0asfVJ0

А вот и, собсственно, котроллер. Бутерброд из Freeduino и Ethernet Shield


Ну и наконец,



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

P.S. Проверял работу в Опере 10.63 и в свежем Хроме. Остальные браузеры теоретически тоже должны справляться.

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

UPD> Забыл самое главое — рабочий веб-интерфейс вот тут www.g0l.ru/test/serva
Просьба отнестись с пониманием — камера и сервы не резиновые, так что не дёргайте, если она уже двигается. Оставлю включенной до утра, потом заберу с собой на работу и там включу.

UPD> Сделано управление через вебинтерфейс, но с геймпада. Нужна софтинка типа Joy2Key, для маппинга кнопок геймпада на клавиатурные кнопки. Если назначить кнопки вверх-влево-вниз-вправо на клавиатурные W A S D то можно управлять с геймпада. Обчные клавиатурные кнопки тоже работают.
Серёга @Gol
карма
255,5
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое

Комментарии (113)

  • +7
    Gol молодец.
    • +1
      Взаимно :-)
  • +11
    Увидел Ваш пост еще в «вопросах» и баловался камерами минут 10 наверное. И видел, как Вы подошли к доске и написали «Хабр Торт» :)
    К чему все это я… Молодцы Вы! Побольше таких статей!
    • +2
      Спасибо на добром слове, приятно. А если мои скромные наработки ещё и пригодятся кому-то — вдвойне приятно.
  • +3
    Спасибо за отличный пост и за самый извращенный способ смотреть телевизор, через интернет, по крутящейся камере, ололо :)
    • +4
      я на телике звук выключил чтоб не мешал, а то семья уже спит. Так что без звука смотреть не ахти. Зато слышен звук серв, его очень удачно в визжащим Касперским сравнили
  • 0
    Хых. А мне карма не светит, так как слогом и идеей не обладаю)
    А система управления и правда дивно хороша.
    Давно подумываю о камере, смотрящей на горизонты речных просторов, которые так нравятся моим гостям.
    Опыт учтен)
    • 0
      Светит, светит. И со слогом все в прядке — не обязательно чтобы он был совсем уж дивный.
      Главное напишите такой материал, чтобы все сказали — «Хабр торт!». И будет вам карма.

      P.S. Два года был хабрачитателем, пока реально не захотел обладать правом голоса, соответственно стал хабраписателем.
      • 0
        Мне вот никто про торт не сказал :-(
        • +1
          Думаю, все молча согласились с надписью у Вас на доске!
          Благодаря таким постам, хабр все еще торт.
        • +1
          Хабр торт! :)
  • +1
    Автору респект!

    у меня почему то не поворачивается (( поверните кто нибудь на телевизор…
    • +1
      Да, похоже механизм поворота завис :(
      • 0
        А вообще идея и реализация супер, автор молодец!
      • +1
        Управляющие провода вылетели из разъёмов. Пока всё на соплях.
  • +6
    > Когда я впервые увидел трансляцию видео с управляемой вебкамеры на 13-м этаже МГУ, меня это очень впечатлило. Настолько, что захотелось устроить нечто аналогичное.

    Тогда Вам лучше не смотреть этот ролик: www.youtube.com/watch?v=zImdl7JizHw
    • 0
      Что-то тогда я этот коммент пропустил, только сейчас увидел. Намекаете привязать к камере парашют и сбросить с 13-го этажа МГУ? :-)
      • 0
        Парашютиста только не забудьте. А то кто будет парашют открывать?
        • 0
          А парашютист будет управлять и раскрытием парашюта, и рулением — через инет :-)
  • 0
    чуть переделать и в машину поставить, чтобы ситуацию на дороге записывать
    • +1
      Зачем в машине управляемая камера? События, которые имеет смысл фиксировать молниеносны по сравнению с реакцией управляющего.
  • +9
    У вас гитары у батареи стоят. Не хорошо это, гриф может повести.
    • +1
      Отопление ещё не включили, батареи чуть тёплые, так что пока гитары там и стоят.
      • +2
        Ну я так, предупредить на всякий случай :).
  • 0
    Так, всем добрая утра. Действительно, ардуина сетку потеряла, дома интернет не идеальный а реконнектиться она пока не особо умеет. Сейчас на работу двигаю, её с собой беру.
  • 0
    Хана рабочему трафику )))
    • 0
      у меня пока сервак держится, тьфу-тьфу
  • +3
    я конечно понимаю, руками интереснее, но все же иногда велосипед лучше купить готовый!

    www.dealextreme.com/details.dx/sku.26358
    $67.9 с доставкой

    Работает как написано, что написано — умеет.
    Полный аналог Foscam FI8908.
    Лично покупал и перешивал. Все ок.

    PS: много интересного на www.gadgetvictims.com/2008/12/faq-for-ip-cameras.html и далее по сайту
    • +1
      Да, у автора не сильно бюджетно получается.
      камера + ардуино + шилд + сервы — это уже где-то 4т.р.

      Даже если считать, что у нас Foscam(или аналог) стоит 5т.р., то это будет не сильно дороже комплекта «сделай сам».

      А в качестве хобби — конечно круто всё это делать.
      • 0
        Ну, тут одна камера 4500 стоила :-) А вообще это конечно в качестве развлечения, цели сделать дешевле не было. Иначе можно было вообще без ардуины обойтись и с компа управлять, но мне так неинтересно было.
    • 0
      «Работает как написано» — действительно ли работает только с ИЕ (как сказано в комментариях)?
      • 0
        Вот чем плохи AXIS и ещё многие универсальные камеры такого типа — там видео декодится только при установленном плагине в браузера. чаще всего это ActiveX, так что прямая дорога к IE. Это не всегда, но часто встречается, к сожалению.
  • НЛО прилетело и опубликовало эту надпись здесь
    • +1
      Спасибо, исправил.
      • НЛО прилетело и опубликовало эту надпись здесь
        • +9
          отправляте сообщения об ошибках в личку, тогда избежите минусов
  • 0
    ух ты конструктор из детства. Все таки не зря я его еще не выкинул. Получилась смесь новых технологий и нужных штук из прошлого. Респект
  • 0
    Народ, я конечто всё понимаю, но вы что-нибудь видите когда камера ТАК колбасится? поаккуратнее и нормально будет всё видно.
  • 0
    Задайте временной гистерезис для сигналов управления.
    0,5-0,7 секунды — не доставят проблем пользователю, но помогут избежать бессмысленного дёрганья.
    • 0
      ну, первой целью тестирования было проверить шустрость камеры, по-этому все задержки выставлены минимальными. Камера вообще-то изначально не предназначалась для кого угодно, но для тестирования на Хабре сделал исключение. Вечерком посижу, подумаю как получше сделать разделение команд, а то хаотичное перемещение и правда напрягает.
  • +1
    Камеру до сих пор колбасит))
  • +6
    А девушками в камере как управлять? :D
    • +1
      Исключительно шампанским, цветами и конфетами.
  • +1
    тоже недавно на скорую руку сделал управляемую камеру только управление непосредственно с ПК через OpenCV. Для изготовления несущих использовал не конструктор, а поликапролактон.
  • 0
    Пришлось ограничивать народ, извиняйте. Иначе камера колбасится бестолку. Пишите в личку, дам ссылку.
  • 0
    Народ, ну хоть выскажитесь, кто что думает по поводу этой штуки. А то мне ж интересно :-)
    • 0
      Вообще класс! Сегодня проект сдавать, нифига не готово, а я камеру кручу))
  • +2
    • 0
      А я её предупреждал рожицы не корчить, прям как чувствовал :-D
    • 0
      Эх, ну зачем же вы так? Девчонки и так мужественно терпят свист сервомашинок, ещё и вас слегка развлечь пытаются, а вы такие кадры подлавливаете.
      • 0
        Я не со зла :) Уберу, если им не нравится…
        • 0
          Ага, пожалуйста. А то она если увидит то плохо придётся и мне и камере
    • +5
      Блин...!!! Скиньте линк на картинку ))))))
    • +2
      А что там было?
  • 0
    Сейчас у вашей камеры приступ эпилепсии, вызывайте скорую.
  • 0
    Вот если бы камеру не только вращать, но и еще и не танк поставить. Да на такой который ездит не по полу а по потолку(удобнее, ничего не мешает)… Хотя стоп! что-то меня понесло…
  • 0
    простенький манипулятор надо бы :)
    • 0
      не всё сразу.
      • +2
        крепко оживило бы экшн в комнате с сотрудницами
  • 0
    Вообще здорово :)
    Вот на нее бы еще управляемую платформу на колесах и wi-fi модуль, и пустить шпионить))
  • 0
    тогда уж лучше к коптеру прикрутить и летать.
  • +4
    Наблюдая за судорожными метаниями камерами знаете что вспомнилось? Помните кино «Хацкеры»? Когда в самом начале Acid Burn и Crash Override друг у друга видеокассету отнимали удалённо посредством манипулятора в видеостудии? Почему-то это напомнило :-)
  • +4
    Советский конструктор — величайшее изобретение человечества :) Не первый раз доказано!
    • –3
      Просто у наших людей ничего лучше под рукой быть и не может, страна такая.
      • +3
        Что может быть лучше детского конструктора? :)
        • +3
          Взрослый конструктор? Большие дяди — большие игрушки.
    • +1
      Он непобедим)
    • 0
      Вообще то он нифига не советский, а целиком и полностью (вплоть до форм и размеров отдельных деталей) спижжен с французского Meccano созданного еще в 1908 году.
  • 0
    Круто. Ее еще надо научить камеру в пространстве передвигать, а по офису рельсы разложить :)
    p.s. Везет, у Вас есть T101…
    p.p.s. Пока ждал час — про передвижения уже рассказали ( Блин.
    p.p.p.s. Тот ваш металлический конструктор — круто! Он же у меня в шкафу валяется. Вспомнил, что хотел его под ноут поставить и прикрутить 12-мм кулер
    • 0
      Не совсем угадал :-) Это T91
      • 0
        Да, я только что прочитал, что Т91, но на взгляд он как-то толще, чем 91 и смахивает на 101МТ
  • 0
    А присутствует ли бага с перекручиванием/накручиванием проводов на вращающуюся камеру с сервоприводами? Я по схемам не узрел что-то инженерного решения.
    • +2
      Тут всё просто — у серв угол поворота 180 градусов. Так что ещё ни разу не накручивались.
  • 0
    Кстати, доча эту камеру обожает. Вот, про старый ролик вспомнил, первая модификация www.g0l.ru/blog/n2446
  • +1
    Молодца, так держать!
  • 0
    Представляю как у тебя камера там бесится сейчас.
    • 0
      Видел видеоролик как она вчера бесилась? Вот сегодня примерно то же самое, только вообще непрерывно.
  • 0
    Здорово сделано! Мои поздравления и пожелания дальнейших творческих успехов!
    • +1
      Спасибо!
  • 0
    А как провода не запутываются от привода? Или есть механизм блокирующий поворот >360 градусов?
    • 0
      У сервомашинок штатные углы поворота — 180 градусов. Можно, конечно, переделать убрать фиксатор, но смысла не вижу.
    • 0
  • 0
    Я только так и не понял зачем там эзернет шилд, камеры usb'шные же.
    • +2
      камера для наглядности прикручена. К получившемуся позиционеру можно что угодно прикрутить. Да и вообще не обязательно сервами управлять, это частный случай. Просто поделился идеей передачи команд на ардуину через форму на любом сайте.
    • +1
      Кстати, я ждал этот вопрос со вчерашнего вечера. Но народ настолько издевательствами над бедной камерой увлёкся что про это как-то никто и не подумал ;-)
  • +2
    А если к ней пулемет и колесики прикрутить, вещь страшная, разумом коллективным управляемая получится.
    • 0
      :) получатися робот, как на границе Южной Кареи :)
    • 0
      А если еще и огромной сделать, и человекоподобной…
  • 0
    Так, вечерняя веселуха отменяется. Я ночью всего два часа поспал, так что щас еле до дома доехал — срубает. Так что я баиньки. Следующее «тестирование» на завтра запланируем.
    • 0
      Хотя не, я так не усну, самому поиграться хочется.
  • 0
    Осталось к ней присобачить колонки и монитор с футболкой — и будет бот как у Шелдона :)
  • 0
    Серега красавец. Почаще пости статьи и обновляй блог.
    • +1
      Не, почаще эт не есть гуд. Лучше редко, но метко :-)
  • 0
    У любого джойстика (типа площадка и из нее торчит длинный узкий кхм… управляющий рычаг) есть координаты x и y. Можно написать прогу, которая будет их снимать с любого игрового джоя и передавать в ту же базу :)
    • 0
      Ну, джой обычно напрямую к ардуине подключают. А к этой вебморде я пока геймпад приделал. С помощью софтинки, которая кнопки на геймпаде кнопки маппит на клавиатурные клавиши. В итоге управлять теперь можно с геймпада.
  • 0
    Однозначно в избранное! спасибо за статейку от души почитал)
  • 0
    Как же я вчера наигрался — жена обиделась что так долго.

    Вам однозначно нужно делать стартап, гламурненько так все, с чатом и прочая.
    Увлекает еще как )

    Вот только монетизацию думать нужно.

    Не камеры там — роботов на управлении, машинки там. Бои в реальном времени. А что )

  • +2
    Кстати, в очередной раз порадовался что у меня жена понимающая. Она стойко выдержала (и до сих пор ещё выдерживает) это тестирование бешеной камеры. В зал, правда, старается пореже входить, так что всё это время обходится без телика. На мою фразу что «теперь надо сделать камеру на тележке, чтоб ездила» Катюха (жена) сказала лишь «ну тогда надо будет в квартире уборку навести». Хотя я думал что будет категорически против. Правда, у нас тут сейчас ремонт идёт, так что хрен с ней с уборкой. А вот я к чему: уважаемые коллеги-айтишники, выбирайте жену не за размер груди, не за попку и всякие другие причиндалы. Выбирайте такую, которая сможет терпеть все ваши мегатехнологичные выходки, круглосуточное сидение за компом и всякие связанные с этим неудобства.
    А если при этом будут ещё клёвые сиськи и классная задница — вообще зачот.
  • 0
    Кто спрашивал насчёт управления через веб-морду, но джойстиком? Если хотите, можете подцепить геймпад, через софтину ремаппинга (типа Joy2Key или аналогичную), назначить на кнопки вверх-вниз-влево-вправо соответственно W A S D. И можете управлять камерой с геймпада :-) Управление с обычных кнопок клавиатуры тоже осталось (но при нажатом Ctrl, а в Опере при нажатии Ctrl+Shift).
  • 0
    А если к камере прикрутить лапу с мелком, чтобы по доске сама писала про торты, будет совсем весело.

    Вообще, это занятная мысль — виртуальная реальность управляет реальностью. Управлять роботами в компьютерной игрушке, которые на самом деле настоящие роботы.
    • 0
      По-моему проще не к камере, а к самим сервам. И сделать тогда уж не вращение, а движение по координатной сетке x и y с возможностью давить на мел (z). По полозьям.
  • 0
    А вот мне уже ничего покрутить не дают, на всех видео статическая картинка второй день =(
  • 0
    Камера уже выключена, модернизирую :-)
  • 0
    Вах, да у вас рунами исписано вокруг картинок)))
    • 0
      На старничке с камерой? Да вроде нормально всё с кодировкой. Она выключена уже давно, страничку не поддерживаю особо, но и не удаляю, для истории :-) Когда будет новая реинкарнация камеры, новый раздел будет.
      • 0
        Нет, я имел ввиду стрелочки в разные стороны ) Просто напомнили алфавит www.theshorterword.com/images/AS.runes.jpg
        За топик спасибо, хоть и с опозданием.
        • 0
          Ааа, блин, я уж полез везде кодировки проверять :-) Видео посмотрите, как Хабровцы эту камеру колбасили 24 часа без перерыва.

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