Некоторое время назад я начал разработку автономного дрона, записавшись на конкурс http://www.robots.croc.ru. Схема дрона еще до конца не определена. Сразу скажу, что главным для меня является не авионика, хотя без нее тут никак и никуда. Главным я считаю способность автономного робота действовать адекватно окружающей среде, выполняя заранее поставленную человеком задачу при отсутствии или ненадежной связи с базой. Действовать дрон должен в стесненных обстоятельствах - пещеры, завалы, темные захламленные коридов, когда дрон своими действиями может поднимать кучу пыли, встречать на пути мелкие ветки, натянутые веревки и т.д. Еще одним важным свойством я считаю скоерость - как физическую скорость выполнения полетного задания, так и скорость принятия решений в каждый момент времени полета. Для решения этой (и не только этой) задачи я начал разрабатывать ОС AINIX на основе BareMetal OS. Эта ОС должна функционировать на одном или нескольких бортовых компьютерах форм-фактоа Mini-ITX. В дальнейшем планирую изменить в сторону уменьшения форм-фактор плат. Прототип ОС содержит некоторые ошибки и недоработки. Их устанение заняло у меня немало времени и кое-что я продолжаю улучшать. Одновременно на 64 битном ассемблере я начал писать свои новые системные вызовы ОС. Никаких OpenCV и других чудес кибернетики. Только голое железо. В основе моей ОС лежит Мегатронная сеть моей разработки. А в ее основе - онтологии. Здесь я хотел бы кратко освещать ход процесса разработки дрона. Однако этот процесс будет небыстрым т.к. сил и времени на это у меня маловато. Работа над дроном будет происходить не в полной зависимости от требований конкурса. Возможно, что я вовсе не смогу участвовать в вышеуказанном конкурсе автономных роботов, в частности, из-за полного отсутствия опыта строительства дронов или из-за недостатка материальных и временных ресурсов. Однако разрабатывать мозги я буду в любом случае.
разработка ОС под croc? ну это как то вообще не в ту степь. обсуждение forum17/topic11989.htmlhttp://forum.rcdesign.ru/f123/thread291488.html сложность текущей задачи крок не в "действовать адекватно окружающей среде". а в постройке самих коптерах и системах управления к ним. собственно организаторы так и задумывают на ежегодные соревнования с поэтапным развитием. если прочесать раздел http://forum.rcdesign.ru/f123/ , становится ясно что даже задача создания просто стабильного в полете коптера далеко не тривиальна. а чтоб он мог висеть в пределах 2х2х2м, такое единицы делали. AndreiSk вот post256922.html#p256922 на улице на привязи запускает. я в доме запускаю. поломал уже 2 пропеллера пока пытался вырулить против отраженных от стен воздушных потоков. теперь новую раму делаю с защитой по периметру. недавно только сонар прикрутил к MultiWII контроллеру. так до сих пор ни в одной официальной прошивке MultiWII еще нет алгоритма удержания высоты по нему. только не в официальных. причем есть люди http://forum.rcdesign.ru/f123/thread283 ... ost3775510 которые уже приторговывают модификациями с рабочим удержанием высоты по сонару и акселерометру. и собственно http://www.multiwii.com/forum/viewtopic.php?f=7&t=1033 тема постоянно в топе.
не тем вы занимаетесь. согласно новым условиям будут контрольные точки http://www.robots.croc.ru/conditions/ если к установленным датам не продемонстрировать решение некоторых задач, идет отсев. посему все усилия должны идти на создание платформы робота. и только на последующих конкурсах будет идти наращивания его сложности поведения ( "действовать адекватно окружающей среде").
сделайте лучше контроллер полета с контролем высоты и горизонтального положения. как вот этой товарищ
2Nesenin: Спасибо за ссылки и советы. Однако как я писал выше, для меня конкурс - лишь повод начать разработку автономного робота такого класса. Про контрольные точки конкурса я в курсе. Смысла делать механику не понимая, сможет ли она нести требуемый груз и делать что-то с требуемыми характеристиками, не вижу прежде чем смогу для себя ответить на вопрос- смогут ли мои алгоритмы и предполагаемая производительность процессорной системы обеспечить это. В ручном режиме дроном даже и управлять не собираюсь. Я планирую, что дрон будет самообучаться как маленький ребенок или птенец - сам учиться летать, получать опыт в т.ч. учитывающий отраженные потоки от стен и земли, порывы ветра и т.д. Т.е. я вообще не буду сам писать алгоритмы удержания положения. движегния по точкам, взлета и посадки. Дрон будет этому учиться. Ввиду этого придется сразу делать максимальную защиту конструкции от падений и столкновений, насколько это будет возможным. А потом посмотрю, можно ли уменьшить эту защиту. Общение с дроном будет на специальном языке, с пом. которого буду осуществлять постановку полетного задания, получать его какие-то вопросы если что-то будет непонятно и т.д.
Если шмякнется, то да, такое на уровне рефлексов должен выучить. Это как вождение автомобиля. Только после получения опыта можно поддерживать движение на "автомате". Я про такой период обучения дрона способности летать писал выше. Но даже самый опытный водитель спрашивает у пассажира- заказчика поездки, куда свернуть, если не знает. Я про вопросы дрона во время получения полетного задания писал. Если что непонятно ему особенно если он в уме будет проигрывать сценерий полета, то может задать вопросы как быть в разных ситуациях, обнаруженных им в таких воображаемых сценариях. За рамками конкурса Крок если дрон будет выполнять задание и будет затрудняться в выборе следующего действия, то по связи также можно давать советы. Это при том, что он уверенно будет держаться в воздухе, не сталкиваться с другими предметами.
можно обучение в вирт среду вынести, илил чтбы от железа далеко не уходить, сделать для дрона чтото вроде тренажера, как например для пилотов делают... но это проект тоже немаленький...
В моем проекте обучение и обычная деятельность дрона не разделены, т.е. обучение идет непрерывно на основе деятельности и ее результатов. Виртуальная среда - это задача тоже немаленькая, как вы сами заметили.
В настоящее время я пишу на ANSI C в стиле, приближенном к ассемблеру, онтологичемкий движок, который находится в основе 3D зрения и других модулей. Суть в том чтобы этот движок позволял не только реконструировать глубину поверхностей наблюдаемой сцены, но и идентифицировать то, что видит, и что особенно важно - классифицировать это, т.е. на наиболее возможном для него уровне абстрагировать наблюдаемую часть мира. Начинаю тестировать движок на простых структурах - одномерных последовательностях. Затем перейду к 2- мерным (изображениям, а затем либо к стерео-изображениям, либо восстановлению 3D из последовательности моно-изображений движущегося дрона. Вскоре узнаю, может ли мой движок самообучаться, абстрагировать и предсказывать. http://robots.croc.ru/heroes/detail.php ... se_id=1606 Параллельно исследую Raspberry PI. Производительность ее не очень. Возможно, придется их ставить несколько на борту беспилотного робота. Особая трудность возникла при вводе и первичной обработке изображений до 30 fps в реальном времени. Остальные заказанные для дрона детали еще идут из Китая. Как я писал выше, возможно, я отсеюсь на ближайших КТ конкурса. Но работу над дроном по возможности продолжу в любом случае.
2Nesenin: Я ранее примерно так и собирался делать. Но тут не все так просто. Ставил я нечто подобное на наземного робта (Mini-ITX). Даже операционку написанную на 64 битном ассемблере под x86-64 BareMetal OS переделал под себя, о чем я написал выше. Решение с NUC тянет за собой неплохой кусок батареи, что также нужно учитывать, а в итоге неизвестно, что будет эффективнее - два, три или даже четыре Raspberry весом по 40 г каждая и током потребления 0,7 А 5 вольт или NUC. Еще не поздно поставить NUC. Но хотелось бы чтобы такая плата была помощнее. Все-таки NUC не для мощных расчетов, а для медиа целей (киношки смотреть да по инету бродить). Думаю, что и NUC будет сильно не хватать, если бездумно пользоваться обычными решениями - виндой, чужими либами. Задачи, которые я хотел бы распределить на отдельные процессоры, хорошо распараллеливаются. Под NUC скорее всего придется гексу делать. А я хотел бы остаться в рамках более слабого класса - квадрокоптеров.
потребление NUC 20вт. мое ПО чувствует себя под виндой на NUC очень хорошо. к том же драйвер камеры( xtion live) используют ресурсы встроенного видеоядра. это в сравнении с моим стационарным компом, где старая видеокарта не поддерживает новые функции из openGL и большая часть расчетов ложится на слабенький ЦП. под всякие ARM компы даже подключить камеры уже проблема. не работают не тянут.
Я не против x86 бортовых компьютеров. Даже очень за. Большое спасибо за ссылки и картинки. По роду своей деятельности я где-то с 1988 года продавал и программировал x86 компьютеры. Поэтому напробовался всякого железа и софта. Из вышеприведенного фото от AndreiSk видно, что с NUC получилась летающая этажерка. Как бы бегемотик с маленькими крылышками. Вот от такого результата я хотел бы уйти по возможности. AndreiSk, кстати, обещал перейти на гексу. Со всеми вытекающими последствиями. И еще. Мне кажется, что человечество немного "зажралось", если можно так выразиться. Если раньше хватало 2 килобайта для кода и программ и 256 тысяч операций в секунду, то сейчас компы потребляют гигабайты оперативки и гигагерцы тактовой частоты. Но при этом очень часто большая часть всех ресурсов уходит в "песок".
гекса под i7 на miniITX. бегемотики с крылышками это норма. см видео выше котера. и как удалось выяснить это платформа http://www.asctec.de/uav-applications/r ... c-pelican/ можно крылышки и увеличить и компоненты не башней поставить, а по раме раскидать, но габариты растут. за стены\дверные проемы цепляет.
по поводу "зажрались". люди они ленивые и не терпеливые. они хотят результат с минимальными тратами сил и времени. причем как создатель так и потребитель. и в этом есть смысл. если что-то человек делает большими усилиями чем мог бы, то либо на это есть веские причины со стороны "среды" вроде требований по отказоустойчивости, скоро действию и пр. либо особые душевные порывы вроде интереса или "любви":) я из интереса освоил изготовление печатных плат фоторезистивным методом, запаял схемы с AVRками и программировал на assembler...а сейчас я использую arduino причем с их средой программирования. для квадрокоптера я из интереса покупал комп с процем ARM на android. чуть покопался и плюнул ибо сложно это все осваивать. сейчас делаю свое любительское ПО для роботов на labview. использую готовые функции.вот пример с машинным зрением post255799.html#p255799 но все равно лень даже это делать. ибо мотивации со стороны нет. а мотивации внутренней не хватает. жду "душевных порывов".
Виктор Казаринов писал(а):Из вышеприведенного фото от AndreiSk видно, что с NUC получилась летающая этажерка. Как бы бегемотик с маленькими крылышками. Вот от такого результата я хотел бы уйти по возможности. AndreiSk, кстати, обещал перейти на гексу. Со всеми вытекающими последствиями.
Да, этажерка получилась, там над плоскостью моторов плата NUC, а над ней-мой контроллер, который и управляет Назой. Думаю переделать, чтобы снизить высоту. По поводу гексы и i7:
Это не автоматический полет. Это я miniitx/i7 (работающий пк), посадил на гексу и рулил с ру-пульта. Идея была проверить, что там отвалится... ничего в целом не отвалилось. 5 минут туда сюда летало. Ну и заодно поснимал видео с борта гексы. Пока гексу не использую в экспериментах, квадрик он полегче будет, не так страшно Сегодня доэкспериментировался, посадил квадрик с нуком в сугром со свежевыпавшим снегом Квадрик закопало, НУК весь в снегу, просушил, только биос сбросился, а я там по дури сделал fast boot, так что не войдешь в биос. Пришлось все разбирать, вытаскивать SSD и только тогда вошел в биос. Сейчас думаю что этажерку можно и пониже сделать
2AndreiSk: на фото вашего коптера вверху на этажерочке - это камера такая большая или дальномер? Если камера , то какую модель используете, если не секрет? С моим слабеньким Raspberry PI еще не всякая камера совместима. И FPS делает мало. Борюсь с такими мелочами. Хотя это не мелочи вовсе. Если же делать стереозрение, то помимо чисто вычислительных появляется проблема синхронизации по времени записи левого и правого кадра т.к. дрон может двигаться, например, разворачиваться. И тогда левый и правый кадры будут показывать совершенно разные участки поля зрения. Продаются стерео веб камеры. Но я их не пробовал и думаю, что через один USB порт 30х2 кадров совсем не сможет захватывать моя система.