Привет, мужики! Начинаем разрабатывать вот такой проект: "Коллективный поиск точечных источников радиации" на базе робототехнической лабы при университете.
Необходимо собрать трех агентов и один сервер для координации действий.
Задача сводится к построению "тепловой карты" радиации заданного участка.
Потратив ночь на чтение статей по автономной навигации (SLAM) и безуспешные поиски бюджетных лазерных дальномеров остановился на следующем (раз, два):
- Попробую развернуть Rapyuta, или собрать нечто подобное самостоятельно.
- На всех роботах будет стоять ASUS Xtion PRO, Wi-Fi, энкодеры на колесах, электронный компас (IMU), несколько УЗ-бамперов, возможно другие датчики.
- Агенты будут на шасси 6WD wild thumper с Paspberry Pi или чем-то подобным на борту + счетчик Гейгера.
- Сервер на шасси по-больше с неттопом на борту. Компьютер будет обрабатывать 4 видео-потока одновременно.
Мне не нравится данная архитектура тем, что агенты будут полностью управляться с сервера - а это задержки при передаче команд, возможная потеря связи и тп. Но как обрабатывать видео на борту и не таскать тележку с аккумуляторами я не придумал, или я недооцениваю производительность ARM компьютеров? FPS на Raspberry Pi удручает =(
Так же хочется использовать этих роботов в дальнейшем для других проектов, по-этому автономность не помешает.
Шасси:
Трехколесная этажерка с ноутбуком и т.п. на борту не подойдет, т.к. роботы будут ездить по неровной, грязной поверхности (ангары там всякие и тп)
Рассматривались вот эти гусеничные шасси:
1. Tank chassis Caterpillar
2. Tank chassis crawler
3. Metal robot chassis Crawler
Но уж больно понравилось как Wild Thumper 6WD отжигал по бездорожью.
Хотя, скорость визуального SLAM не позволит так быстро перемещаться, скорее ползать буду, ну да ладно, лишним не будет =)
Телегу для сервера ещё не подобрал.
Радиация:
Слышал, что радиация сильно влияет на видео-камеры. Думаю обшить всю электронику 5мм свинцом и свинцовым стеклом для Xtion. Датчик глубины Xtion состоит из инфракрасного проектора объединенного с монохромной КМОП-матрицей, как я понимаю, стекло мешать не должно.
Уровень радиации не обговаривался, к тому же это просто концепт, который не будет использоваться в боевых условиях, но некоторую защиту нужно предусмотреть.
SLAM:
1. ROS (GMapping или rgbdslam), два, три - похоже, то что доктор прописал, при условии автономности агентов. Только нужно придумать, как эти карты на сервере совмещать, чтобы агенты не тратили время на исследование одной и той же территории.
2. Rapyuta mapping-in-the-cloud - пока это система только для совместного составления карты, без возможности управления роботом и без документации =/ Я не понял используют ли они на сервере OpenCV или ещё что, но идея нравится. В Rapyuta разработан протокол общения между роботами, что является основой нашего проекта. К тому же написан на питоне, основном языке товарища из команды и выложен на гитхаб, можно поковырять.
Одометрия:
1. Одометрия на неровной поверхности будет отдавать плохие данные, что если поставить по энкодеру на каждое из шести колес, использовать их среднее значение и данные с компаса?
2. Визуальная одометрия - даже не знаю, как вариант для подстраховки, но сложно и жрет много ресурсов.
Дальномеры:
1. УЗ + ИК - если я всё правильно понял, для составления карты мало пригодны.
2. Лазерные - дорогие, не вписываюсь в бюджет.
2.а. Выдрать из пылесоса Neato- тоже вариант, из плюсов - скорость и точность, жрет меньше ресурсов, из минусов - у Xtion больше возможностей применения в других проектах. Интересно ваше мнение.
2.б. Сделать самому - сложно.
3. Kinect, Xtion - пока остановился на этом варианте.
4. OpenCV - стереоскопическое зрение, как у Qbo.
Архитектура:
По большому счету, суть проекта заключается в создании взаимодействующих роботов. Поиск источников радиации лишь прикладная задача, на которой будет производиться тестирование. (Ну и финансирование для лаборатории с таким проектом проще будет найти, радиация - тема горячая)
Вижу следующие варианты архитектуры:
1. Агенты полностью управляемые с сервера. - Дешевле всего, но сильная зависимость от качества связи, большие нагрузки на сервер, сложно масштабировать (упираемся с производительность сервера)
2. Автономные агенты и сервер для построения общей карты / коммуникации. - Хороший вариант - возможность использовать агентов без сервера, легко масштабировать. Дороже всего, но денег должно хватить.
3. Автономные агенты без сервера, взаимодействующие друг с другом напрямую. - будет сложнее написать ПО, но за счет лишних денег агентов можно оборудовать лучшим железом. Масштабировать систему проще всего. Мощных роботов можно использовать для других проектов с высокими требованиями к ресурсам.
Сроки: к июню сделать прототип с ограниченным функционалом, + 2-3 месяца для окончательной реализации.
Бюджет: $4000 - $6000
Интересно ваше мнение насчет архитектуры и советы по следующим пунктам:
1. ПО для навигации и построения карты
2. Выбор подходящих микроконтроллеров, плат расширения
3. Какими датчиками стоит оборудовать агентов
Добавлено спустя 27 минут 31 секунду:
По совету setar'а пошел читать тему "Автономная навигация робота"