Краткий гайд по квадрокоптерам для FPV. Часть четвёртая – поговорим о мозгах? | Пикабу

Краткий гайд по квадрокоптерам для FPV. Часть четвёртая - поговорим о мозгах? | Пикабу Роботы

Безопасность на квадрокоптере: калибруйте компас и придерживайте рукой

Посадка в руку - приручение

Месяц назад мы приобрели квадрокоптер DJI Phantom 3 Advanced. Аппарат доставляет массу удовольствия всей семье, особенно, когда после полёта возвращаешься домой и просматриваешь записи с высоты на большом экране. Но самые сильные эмоции мы испытали, когда дрон терял управление.

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

Обо всяких разных дронах, в том числе и на ГТ, пишут довольно много. Но, спустя месяц эксплуатации, хочу отметить, что в статьях обычно не встречается того тёплого ощущения, которое вызывает подобный «питомец». Он действительно воспринимается как довольно послушное домашнее животное, которое иногда капризничает и попадает в различные неурядицы. Поэтому попробую рассказать о том, как взять дрона на ручки, чтобы всем было спокойнее. Если читать лень, то можно просто посмотреть видеоролик в конце.

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

Смотрите про коптеры:  Время полета, грузоподъемность и скорость квадрокоптера

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

Кто-то скажет, что цена летающего гаджета сама по себе ограничивает фантазию на эксперименты, но, даже если этот «кто-то» в большинстве, то дронов, убитых в первом же полёте, всё равно уже не вернуть. И вообще, разве какие-то там презренные деньги могут охладить пыл настоящего русского естествоиспытателя? Тем более, уже потраченные деньги.

Меня лично остановили чисто технические препятствия: батарейка в коробке была заряжена всего на 20%, и приложение DJI Go почему-то не показывало видео с камеры на моём престарелом смартфоне. Пока разбирался с видео, батарейка села ещё больше. Так что с первым полётом Фантом у меня выше полутора метров от земли не оторвался.

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

Так вот, прежде чем запускать новый квадрокоптер в опасные трёхмерные путешествия, я настоятельно рекомендую не мануалы читать, а посмотреть на Ютюбе видео падений и других неприятных ситуаций с мультикоптерами. Я-то просто собирался глянуть, как люди летают, точнее, пилотируют дронов, но глаз сам зацепился за картинки с подписями вида «phantom crash». После таких роликов инструкции уже не читаются, а как бы перечитываются в поисках важных сведений. Поэтому к вечеру я был спокоен и уравновешен. Летать, как полагается, начал в режиме новичка. А когда отключил его, поначалу значительно ограничивал высоту и дальность полёта.

Более всего впечатлили видео, показывающие, как Фантом уносится в неизведанное, подхваченный сильным ветром. Есть в них какая-то тревога и безнадёжность, которая не чувствуется в подборке забавных падений и столкновений. Успокаивает только одна мысль: «Если видео выложили, значит, дрон с бортовой флэшкой таки нашёлся». Но снова тревожит другая: «А что если нашёл его кто-то другой? А что если выжила только флэшка?» Честно говоря, мы тоже уже запускали при значительных скоростях воздушных потоков, но дрон, отметим, противостоит им весьма уверенно. Трудно представить, какие ветра имели место дуть в приведённых видео. Там, небось, оператора самого сносило, а он ещё дроном пытался управлять. Хотя, ещё раз, верховые воздушные течения могут сильно отличаться от низовых.

Просматривая видео с бьющимися и сдуваемыми квадрокоптерами, я заметил однажды простую рекомендацию: калибруйте компас перед полётом — это позволит Фантому без проблем вернуться к месту взлёта. Действительно, возврат «домой» является чуть ли не самой важной функцией летательного аппарата. Потому что при подъёме на 150 метров над землёй даже в чистом дневном небе его уже непросто разглядеть. А если не знать примерный сектор телесного угла, то и просто не разглядеть. Если же дрон взлетает на 250 метров и по горизонтали удаляется на 500, то визуально его контролировать нет никакой возможности. В незнакомом однообразном ландшафте по видео с его камеры тоже не сориентируешься. Подозреваю, на заре коптеростроения не один аппарат потерялся в небе таким образом. А нам повезло. Умные китайцы встроили такой функционал, что квадрокоптер возвращается домой не только тогда, когда его просят, но и в том случае, если теряет сигнал с пульта. Кстати, в городе потеря сигнала происходит регулярно.

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

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

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

Кроме того, после первого удара о дерево мы немедленно приобрели защитные рамки для пропеллеров. Они, конечно, делают конструкцию громоздкой и непригодной к быстрой разборке, но так спокойнее. Между прочим, на том же Ютюбе есть такие видео, где квадрокоптеры внезапно устремляются в стену или в людей без всякой видимой причины. С нами такого не случалось, но во время съёмок около высоких зданий аппарат действительно иногда непредсказуемо болтает. Трындит, как прожжённая торговка… Подозреваю, дело тут в сложных воздушных завихрениях, которые локально могут быть очень стремительны (яркий пример — торнадо). Так что пусть лучше он будет в защите.

Таким образом, перед каждым запуском мы калибруем компас. К сожалению, я так пока и не понял, как в приложении DJI Go отображается состояние неудачной калибровки. В любом случае, сначала взлетаю сантиметров на тридцать над поверхностью, проверяю управляемость и только потом отправляю гаджет в дальний полёт. Теперь, по крайней мере, я могу его запросто поймать и удержать в ситуации сноса.

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

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

Виды квадрокоптеров

Летающие дроны можно разделить на несколько категорий:

  1. Дроны без камеры. Характеристики у квадрокоптеров бюджетного сегмента невысокие, модели поддерживают малую дальность полета и способны оставаться в воздухе около десяти минут. Проводить съемку с их помощью нельзя, но можно просто получать удовольствие от пилотирования и выполнять маневрирование.
    Что такое и для чего предназначен квадрокоптер с камерой
    Дешевые коптеры без камеры покупают обычно для детей
  2. Коптеры с камерой. Стоят такие модели дороже, зато предоставляют возможность снимать видео и фото в процессе полета.
    Что такое и для чего предназначен квадрокоптер с камерой
    Хорошее качество изображения предоставляют дроны для съемки с разрешением от 5 Мп и выше
  3. Для новичков. Недорогие, но очень прочные модели способны переживать многократные падения. Оснащаются коллекторными двигателями, дальность полета составляет около 100 м, часто есть встроенный акробатический режим.
    Что такое и для чего предназначен квадрокоптер с камерой
    Коптеры для начинающих обычно поставляются с защитой винтов
  4. Для любителей. Такие модели поддерживают съемку с разрешением не менее 720р и стабилизацию, способны удаляться на 1 км от оператора и удерживаются в полете до 25 минут. Обычно способны развивать скорость до 70 км в час.
    Что такое и для чего предназначен квадрокоптер с камерой
    Любительские дроны оснащаются GPS-модулем и несколькими режимами полета
  5. Для профессионалов. Самые функциональные дроны поддерживают спутниковую навигацию, ведут съемку в формате 4К. Изображение передают на смартфон с расстояния в несколько километров или записывают на карту памяти. Оснащены многочисленными датчиками, в том числе для отслеживания препятствий, стоят довольно дорого.
    Что такое и для чего предназначен квадрокоптер с камерой
    Профессиональные дроны чаще оборудованы выносными, а не встроенными камерами
  6. Гоночные. Такие модели предназначены в первую очередь для маневрирования. Видео об устройстве квадрокоптеров гоночного типа показывают, что камера в них может быть довольно скромной, а вот скорость дроны развивают вплоть до 120 км в час. Удаляются обычно на 1 км от владельца, многие модели поддерживают управление через видео-очки.
    Что такое и для чего предназначен квадрокоптер с камерой
    Многие гоночные дроны выполнены в обтекаемом корпусе

При выборе летающего дрона следует учитывать, для каких именно целей он нужен — для съемки или акробатических трюков.

Зачем моему дрону nd-фильтр?

Коротко. Цель ND-фильтров – уменьшение количества света, попадающего в на матрицу, поэтому их можно назвать солнцезащитными очками вашего дрона.

Краткий гайд по квадрокоптерам для FPV. Часть четвёртая - поговорим о мозгах? | Пикабу

ND фильтр обеспечивает снижение количества света, который попадает на матрицу, обеспечивая более длительную экспозицию. Уменьшение количества света может быть необходимо в нескольких случаях. Например при съемке в горах, где много снега, либо при съемке на песчаных пляжах. В таких ситуациях минимальной выдержки камеры может не хватить, чтобы обеспечить необходимую экспозицию. Кроме того, ND фильтры могут быть использованы, чтобы подчеркнуть движение (например, капель водопада) или придать изображению более мягкий сюрреалистический вид или даже убрать динамические объекты с пейзажа. Использование фильтра для коптера поможет настроить необходимую экспозицию при съемке рек, водопадов и других «движущихся картинок».

ND фильтр — это не просто лист затемненного стекла, размещаемого перед объективом камеры. Качественный светофильтр должен снижать уровень света, при этом не оказывать влияния на контраст, провоцировать появление бликов и самое важное влиять на резкость и детализацию. Поэтому выбор производителя фильтров крайне важен. Недорогие наборы фильтров, производимые небольшими компаниями могут не отвечать всем требованиям и одновременно со снижением количества света «дополнять» изображение лишними бликами и переотражениями. Поэтому важно выбрать хорошо зарекомендовавшего себя производителя.

Краткий гайд по квадрокоптерам для FPV. Часть четвёртая - поговорим о мозгах? | Пикабу

Эффект, которого можно достичь с помощью ND фильтра, практически невозможно воссоздать при обработке снимка.

Но куда большее значение ND фильтры имеют для съемки видео. Все дело в том, что современные камеры позволяют снимать с очень короткой выдержкой, которая полезна для съемки четких фото, но наоборот не подходит для съемки видео. При съемке с короткой выдержкой видеоряд может получиться слишком резким и «дерганым». Камеры некоторых коптеров позволяют ограничить количество света при помощи лепестковой диафрагмы (например Phantom 4 Pro/Adv или камеры DJI Zenmuse X4s или X5/7 c полноценными объективами), но даже это не всегда помогает. Закрывать диафрагму до бесконечности нельзя, т.к. это может провоцировать снижение детализации и деградацию изображения, а также влияет на глубину резкости, что может быть неприемлемо для какой-либо конкретной задачи (особенно это касается длиннофокусных объективов для камер Zenmuse). Поэтому для увеличения выдержки логично и просто использовать именно ND фильтры. Таким образом мы имеем возможность снимать видео на требуемой для получения «киношности» выдержке в районе 1/100-1/120, при этом не закрывая диафрагму больше необходимого и не рискуя получить размытое изображение.

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

ND фильтры помогут сделать эффектные фотографии воды – бушующая горная река мгновенно превращается в молочную пену. И сделать подобный снимок

Краткий гайд по квадрокоптерам для FPV. Часть четвёртая - поговорим о мозгах? | Пикабу
При этом владелец коптера может сделать такой снимок даже в солнечную погоду.

Показатель f-stop – это отношение фокусного расстояния объектива к диаметру входного зрачка. А если простыми словами, то чем больше число «F-stop», тем меньше света попадет в объектив. Это позволит Вам лучше контролировать экспозицию изображения или видеоматериала, которые Вы пытаетесь захватить в полете.

Чтобы узнать, как различные модели фильтров ND соотносятся с уровнем «F-stop», см. таблицу ниже.

Кроме ND фильтров существует множество фильтров для вашего дрона, и все они дадут разные результаты:

Краткий гайд по квадрокоптерам для FPV. Часть четвёртая - поговорим о мозгах? | Пикабу
CPL/PL — это фильтры имеющие поляризационный слой и позволяющие убрать блики и отражения от отражающих свет поверхностей, воды, стекла и т.п. (кроме металла). Кроме того, такие фильтры способны усилить цвет неба и листвы, но нужно помнить, что работают они только под определенным углом.

Краткий гайд по квадрокоптерам для FPV. Часть четвёртая - поговорим о мозгах? | Пикабу

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

Краткий гайд по квадрокоптерам для FPV. Часть четвёртая - поговорим о мозгах? | Пикабу
Градиентные фильтры — это фильтры, имеющие плавное затемнение от одной стороны к другой. Такой фильтр можно считать разновидностью ND фильтра, но обеспечивающей плавный переход от затемненной части к полностью прозрачной. Такой фильтр можно использовать, чтобы затемнить небо, сохранив при этом яркость на земле. Например такое может пригодиться при полете над лесом в ясный день. Нижняя более светлая часть даст проработку деталей деревьев, а верхняя часть будет затемнена.

Серия PolarPro Gradient это отличное решение для съемки пейзажей. Используя обычный ND фильтр, Вы можете правильно выставить параметры съемки только для неба или только для земли, с градиентным фильтром Вы можете получить наиболее широкий динамический диапазон.

ПОМНИТЕ: использование конкретно фильтра может частично отражать ваш стиль как оператора или фотографа. Поэтому выбирайте тот, который вам подходит.

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

Для тех кто задумался о покупке, мы сделали подборку фильтров по моделям фильтры для DJI Mavic Air, DJI Mavic Pro, DJI Phantom 4 Pro, DJI Spark.

PS. Приносим извинения за предыдущую редакцию статьи. Статья была обновлена.

Краткий гайд по квадрокоптерам для fpv. часть четвёртая – поговорим о мозгах?

Плата управления квадрокоптером. продолжаем разговор. / квадро и прочие коптеры / сообщество

Краткий гайд по квадрокоптерам для FPV. Часть четвёртая - поговорим о мозгах? | ПикабуКраткий гайд по квадрокоптерам для FPV. Часть четвёртая - поговорим о мозгах? | Пикабу

Итак, в предыдущей статье мы определились с задачей – необходимо стабилизировать ЛА по «абсолютному» положению (углам, высоте и линейным координатам). Также, была озвучена проблема – у нас нет датчика, который бы дал нам на выходе «абсолютное» положение коптера.

Давайте двигаться дальше.

Но сначала небольшое лирическое отступление. В комментариях к предыдущей статье, прозвучало несколько пожеланий по поводу содержания последующих статей. Дабы никого не вводить в заблуждене, хочу обратить внимание на следующий момент: автор не является экспертом в БИНС и ТАУ, статьи могут содержать неточности. Просто, проделано много работы по изучению данной тематики практически «с нуля». Получен некоторый опыт, которым хочется поделиться. Забегая вперед, скажу, что сам я пока «дорос» до алгоритмов уровня DCM IMU. Это я к тому, что синтеза фильтра Калмана пока не будет 🙁

Ладно, хватит лирики, перейдем к делу.

Нам нужно как-то определить текущее положение ЛА в пространстве. Давайте начнем с определения углов крена тангажа и рыскания.

Первое что приходит в голову – использовать гироскоп. На практике так и делают «но есть нюансы».

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

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

Самый простой способ (далеко не самый точный, но пока для нас это не принципиально) – «метод прямоугольников»:

a = a0 w * t

где:

a – текуче значение угла
a0 – предыдущее значение угла
w – измеренное значение угловой скорости
t – время между измерениями

Другими словами, мы в цикле опрашиваем гироскоп (с определенным интервалом времени t), получаем моментальное значение угловой скорости (w) и вычисляем текущее значение угла прибавив к предыдущему значения угла «приращение» (w * t).

Проблема в том, что мы постоянно «суммируем» и ошибка (вызванная погрешностью гироскопа) будет постоянно накапливаться. А с точностью у MEMS гироскопов и так куча проблем (тепловой дрейф нуля, чувствительность к вибрациям и т. д.).

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

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

Можно, например, периодически (раз в несколько секунд) садить квадрокоптер на землю и сбрасывать значения углов крена и тангажа в 0. Потом, опять можно летать несколько секунд, пока накапливается погрешность 🙂 Но, конечно, это не выход.

На практике для такой коррекции и применяют акселерометр и/или цифровой компас.

Если наш ЛА неподвижен, то 3х-осевой акселерометр будет измерять проекцию кажущегося ускорения (ускорения, вызванного силой реакции опор/подвеса на силу тяжести). На выходе акселерометра мы получим вектор (вернее проекции вектора на координатные оси) который направлен вертикально вверх и по модулю равен 1g. Этот вектор (обозначем его G) можно использовать для корректирования значений углов.

Но есть несколько проблем:

1. Если ЛА начнет перемещаться (ускорятся, а ЛА практически всегда находится в движении) то акселерометр нам выдаст суммарный вектор (вектор G вектор собственно ускорения ЛА). Соответственно, решить задачу «в лоб» не получится.

2. Данные, получаемые с MEMS акселерометра, очень сильно зашумлены.

3. Мы в принципе не можем скорректировать все три угла (крена, тангажа и рысканья) имя только один вектор. Мы можем скорректировать углы крена и тангажа (выровнять ЛА относительно горизонта). Но скорректировать угол рысканья (вращение ЛА вокруг оси «совпадающей» с вектором G) мы не сможем, нам нужен еще один вектор.

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

Цифровой компас (3х-осевой) можно использовать и без акселерометра, но опять же, мы сможем скорректировать только два угла из трех. Плюс, как и в случае с другими MEMS датчиками, здесь есть свои проблемы. Основная – крайне низкая точность. В идеальных условиях погрешность MEMS магнитометра составляет, приблизительно, 5 градусов. А в реальных условиях, на плате коптера, вблизи от силовых проводов и электромоторов, погрешность намного больше.

Замечу, что иногда для определения/корректировки углов крена и тангажа используют пиродатчики. С помощью нескольких, установленных с разных сторон, датчиков определяют «пирогоризонт». Концепция построена на том, что пиродатчик отличает «теплую» Землю от «холодного» неба. Но данный подход не очень распространен. Судя по отзывам, основной недостаток такой конструкции – чувствительность к погодным условиям, потокам теплого/холодного воздуха и т. д. ( я, честно говоря, поверхностно знаком с данным подходом, исправления/уточнения приветствуются).

Забегая наперед, скажу, что для «полного счастья» помимо значений углов нужно будет определить высоту ЛА (барометр, УЗ-высотомер) и координаты (GPS).

Мы возьмем за основу самый распаленный для коптеров метод определения значений углов: интегрируем показания с гироскопов и вносим коррекцию исходя из показаний акселерометра и цифрового компаса. Исходя из причин, описанных выше, решить данную задачу «в лоб» на уровне геометрии не получится (получится, но для неподвижного, сферического ЛА в вакууме). В следующей статье мы рассмотрим наиболее простой алгоритм – комплементарный (его еще иногда называют Алфа-Бета) фильтр. Заодно, разберем принцип работы платы управления MultiWII, в которой данный алгоритм используется.

Оцените статью
Радиокоптер.ру
Добавить комментарий