На автономном роботе установлена система технического зрения, которая включает в себя дальномеры, тепловизор, систему стереозрения, потенциально еще что-нибудь сюда добавится. Какие алгоритмы существуют для обработки данных со всех этих датчиков одновременно? Хочется чтоб робот строил карту вокруг себя с учетом данных со всех датчиков, но ведь они могут конфликтовать между собой, как тогда быть? Подскажите алгоритмы\литературу(англ, рус - не важно) для реализации подобной задачи.
Под конфликтовать я имел в виду, что, например, с дальномера робот получает информацию о находящемся в 5 метрах перед ним препятствием, а, например, система стереозрения из-за плохих условий видимости сообщает о том, что вперед можно ехать. То есть необходимо ввести какой-то приоритет(на мой взгляд слишком радикально), или каким-то образом определить коэффициенты, по которым можно устанавливать вероятность того, что препятствие действительно имеется. По поводу SLAM - сейчас именно про него и читаю. Из того, что успел прочитать понял, что нужно обрабатывать данные с одометрии(акселерометр например) и данные с дальномеров\камеры в результате чего строится карта, которая обновляется при движении. Пока не совсем остается ясным вопрос, как же все таки объединить данные получаемые с камеры\стереопары\дальномеров.
https://ru.wikipedia.org/wiki/%D0%9E%D0 ... 0%B8%D1%8F Одометрия не имеет отношения к акселерометрам. Одометрия по простому - это энкодеры (счетчики оборотов вала мотора/редуктора), считаем сколько проехали. Акселерометром можно оценить наклон, если робот его имеет, так чтобы SLAM не врал. Но если упростить, то для SLAM акселерометры тоже не нужны. Что же касается датчиков, тут можно вспомнить про термометры. Один может врать, два могут давать разные, но из трех термометров два будут давать похожие, их и брать. Так же и датчики, проверять надо перед тем как принимать решение. Дальномеры тоже разные бывают, УЗ, ИК
Про одометрию я глупость сказал, но имел в виду некий инструмент позволяющий определить перемещения робота. В общем смысл одометрии в SLAM я понял. Вопрос не в этом. Если расходятся показания со стереопары и с дальномеров, как определить какой из датчиков врет? Какому отдавать приоритет? Я надеялся, что есть какие то формулы или теория, которая или соединяет каким то образом их показания, или наоборот разделяет области применения разных датчиков(например, стереопара от 40м, дальномеры ближе)
есть теория, ещё и повыбирать между подходами можно. вам вон та подходит. хотя не, лучше вот эту. ну и вот эти фильтры с такими коофициентами к данными примените, будет получше. вопрос у вас примерно такой же.
Понимаю, вопрос довольно мутно звучит, поэтому я и просил в первом сообщении литературу, где можно об этом почитать. Чтоб сформулировать грамотно и конкретно вопрос, надо обладать знаниями в этой конкретной теме, которых я не имею.
Пока исследовательскую работу надо сделать. Для того чтобы понять, что вообще делать . Нельзя же просто понавешать на робота все что захочется, а потом думать - а это как, а это зачем.
да ладно, а зачем вы их тогда набрали? ну хорошо, непонимая как это всё будет работать понабрали всяких датчиков. ну раз не нужны, так выкиньте их. а как вы не подключая поймёте какие с них данные идут в различных условиях, а какие шумы и т.д.? вот никак иначе и не получится, кроме как брать, подключать и смотреть что к чему в различных условиях. стереозрение в темноте у вас не работает, ну так как вариант докидываете датчик освещённости или по данным с камеры смотрите насколько темно и делаете поправочку, что в таком-то случае верим дальномеру. а потом при нормальном освещении окажется, что и светло, но вот уз дальномер опять сообщяет о препятствии, а стереокамера нет. может у вас в переди прозрачное стекло, а может ещё что. ну вот так понемного и вникаете. давайте опять перефразирую ваши вопросы. у меня с датчика есть сигнал, нужно отфильтровывать шумы и сделать распознование/классификацию сигналов, посоветуйте что почитать. логично, что в лучшем случае посоветуют почитать по цифровой обработке сигналов. сильно поможет? а если будет учтено, что сигнал примерно так выглядит
да не особо что-то изменится. а если взять и посмотреть, что за данные идут
это просто сигнал, дёрганья это шумы. уже проще? а если ещё посмотреть как может меняться сигнал
ещё проще понять будет. вот так постепенно и изучается. ищутся подобные темы, смотрится насколько сигналы и нужды похожи, ищутся упоминаемые алгоритмы и т.д. потом пробуются всякие алгоритмы - скользящее среднее, калман, сурф и прочие, что-то отсеивается, что-то комбинируется, что-то изучается более тщательно.
С алгоритмами калмана, серфом и некоторыми другими я знаком. Меня интересует не настолько низкоуровневая обработка. Считаем, что с датчиками по отдельности я могу работать. Меня интересует как данные с них связать в единое целое. То есть нужно делать пересчет координат, синхронизацию по времени, итд. Вот эти вопросы для меня во многом пока неясны.
потому, что универсального решателя для "поди туда - не знаю куда, принеси то - не знаю что" не существует. вам уже подсказали про существование slam. ещё можно почитать про ros и продолжить гуглить по запросам на подобии "навигация робота".
Вопрос у вас правильный. Только ответ на него не простой. Ваш вопрос звучит как сделать автономного робота? Ответ прост его надо изобрести! Почему изобрести, а не сделать? Потому что нет на данный момент нужной технологии. Да изобретают её уже полвека, а воз и ныне там. А где эти роботы? А нет их. Если была бы технология, то их бы уже ставили на конвейер.
Но не ужели всё так плохо? Нет. Есть методика для решения научных задач. И изобретательских задач.
Две важных основы для данной задачи это сбор информации и итерационное проектирование. Чего почитать? Честно не знаю. Вернее не охота вас направлять на все 4 стороны.
Как комбинировать 2 и более датчиков? Есть хорошая вещь называется "фильтр" Калмона обычно в нём отвечают на этот вопрос. Хотя возможно не до конца.
По пробую развернуть ответ. Надо сложную задачу разбить на составные части отделив одну проблему от другой и решать проблемы по очереди. Пусть задача целиком звучит как объединение данных и состоит из: 1) Отсеивание недостоверных и мало информативных данных. 2) Комбинирование данных. 3) ошибки датчиков 4) Фильтрация данных
Под отделении или изоляции задачи понимается вот что: При комбинировании должны подаваться корректные данные. И на входе не допускать ошибок.
Как отсеивать недостающие и малоинформативные данные? По порогу. К примеру в угловом детекторе отбрасываются углы меньше некоторого порога. Откуда взять этот порог? Ответ известен обучение задачи на примерах. Как говорят нужна статистика.
Как комбинировать данные? Для этого нужны модели. Надо знать как работают датчики и какую информацию они выдают знать их слабые и сильные стороны. В самом простом случае это линейная комбинация 0.5*A1+0.5*A2. К примеру у дальномера разрешение лучше чем у стерео камеры она может оценить плоские модели. И тут просто можно усреднить значение дальномера и стерео камеры. Можно придумать и более хитрые методы. А может у вас одни датчики смотрят в даль, а другие вблизи. И соответственно их обработку можно и нужно делать по разному.
Ошибки датчиков. Как определить что датчик показывает не правильные данные? В простейшем примере вам уже дали ответ с 3 градусниками. По шаблонам или моделям или порогам также можно отбрасывать. Модели? Да к примеру здания с некоторой степенью прямоугольные. И можно отбросить всё что кривое. А деревья напротив цилиндрические, достаточно опознать дерево по текстуре и придать ему объем из сходя из модели. А вообще ошибки бывают разные.
Фильтрация данных тоже самое. Обычно сглаживание подбирается эмпирически или делать по порогу.
Да собственно вариантов построения всего этого очень много. Не обязательно задачи изолировать друг от друга к примеру можно усреднять данные или адаптивно фильтровать из-сходы из данных заведомо точных датчиков.
В чем сложность? Сложность в поиске моделей алгоритмов структур, а также наличия данных. Как правило данных для обучения мало или очень мало. Они не покрывают все возможные случае. Хорошо когда на каждой машине стоит камера и есть записи со всех машин мира. Что зовётся BigData. BigData - это когда данные покрывают все возможные случае. Данных сейчас не хватает. Да хотя бы по простой причине что требуется объемы жестких дисков в 1000 раз больше и производительности ПК для их обработки нужна в 1000 раз больше чем у современных ПК.
Перейдём к конкретике. Конкретику тут вам мало кто поможет. Я уже писал что задача эта пока на стадии научных изысканий. В научных книгах как правило 1000 статей и публикаций. А то и на главу несколько сотен. Так что тут вам никто не поможет ещё не успели собрать информацию во едино. Надо брать google в зубы и искать и ещё раз искать.
Как искать? Искать надо по аналогам и существующим проектам. Автономные роботы: 1) Роботы пылесосы 2) Игрушечные машинки 3) Автономные автомобили 4) Разминирующие роботы, роботы разведчики, БПЛА, спутники ДЗЗ. 5) Гуманойдные роботы
Можно искать по датчикам. 1) Сонары 2) Стерео камеры(Стерео зрение) 3) Дальномеры(H-distance,Z-bug, Length Distance) Задаёте в поисковик комбинацию из 2-х датчиков и смотрите результаты.
Место поиска: Форумы, частные блоги, и блог площадк(типа HabrHabr), студенческие сайты, сайты вузов нужной направленности, pdf - отчеты, презентации-ppt, журналы
Бывают же семинары, выставки, фестивали, бои роботов, робо-дни После выхода которых часто публикуются сборники статей.
Но даже перерыв кучу информации не надейтесь, что найдёте нужные данные. Так что стоит пробовать и другие приемы решения научных и изобретательских задач. 1) Методом тыка(просто попробовать разные методы на угад) 2) комбинирования существующих подходов 3) Инвертированный подход к мышлению или задачи. и др.