Идеология ROS это модульность и распределенность системы. Из не больших модулей, которые называются в ROS узлами, "собирается" нужная вам конфигурация, как из конструктора или детских кубиков. Узлы могут формировать более крупные элементы называемые пакетами. Узел представляет из себя некую программу написанную на C++ или python. Таких узлов, выполняющих разные функции в ROS огромное множество, вы даже сами можете написать собственный узел и включить его в свою систему. Поэтому любая задача решаемая с помощью ROS не является концептуально замкнутой, т.е. вы можете изменять возможности вашей системы в очень больших пределах, наращивая или сокращая ее.
sned писал(а):Навигация это и есть в первую очередь позиционирование на карте.Не понятно как можно использовать данные kinect для этого и что из себя представляет (глобальная карта)
Концепция навигации в ROS тоже модульная, мало того что она решается посредством нескольких узлов и пакетов, так и еще какие пакеты использовать в своей системе разработчик системы должен выбрать сам из достаточно богатого списка реализаций. Мы пошли классическим путем, описанным на ROSWiki. Для работы навигации нужна так называемая "глобальная карта", это карта помещений или местности в пределах которой будет передвигаться ваш робот, ее можно нарисовать и сохранить в файле, а можно построить посредством самого робота, проехавшись по территории и "отсканировав" ее, и так же сохранить в файл для последующего использования. Естественно эта карта должна содержать только все не перемещаемые и не перемещающиеся объекты: стены, дверные проемы, стационарную мебель (столы, шкафы). Это "глобальная карта". Во время работы робот, при помощи сенсоров, в нашем случае kinect и IR-дальномеры, строит "локальную карту" в которую попадают все объекты в помещении как объекты с "глобальной карты" стены и стационарная мебель, так и объекты которые не привязаны в помещении к конкретным местам: стулья, коробки, обувь, животные, люди и прочее что может перемещаться по помещению. Фактически, можно сказать, что навигация работает одновременно с двумя картами помещения "глобальной" и "локальной". Робот позиционируется в глобальной карте. И вот здесь есть проблема - в идеале, стационарные объекты на обоих картах должны всегда совпадать, но как правило через какое то время движения они начинают расходиться. Происходит это из за накапливающейся ошибки одометрии. Так вот, за совмещение этих карт отвечает другой пакет... В общем не стану я здесь вдаваться в подробности. Я думаю что все это будет описано в уроках по ROS.
sned писал(а):Если это карта на плоскости с размерностью ячеек 20х20 см то это слишком крупно ИМХО
Это не размерность карты в понимании ее масштаба или разрешения. Размерность карты, это размер ячейки допустимого расстояния, устанавливается персонально для каждого робота и влияет на расстояния до предметов на которое робот может подъехать к ним, а так же это зависит от размеров робота, наш, например, в диаметре 30 см., еще это влияет на время расчета траектории. Исходя из этих условий нами была выбрана такая размерность, но ее всегда можно поменять.
sned писал(а):данные от kinect смотрящего только вперед будет мало для качественной навигации.
В общем случае вы правы но, как я уже писал ROS работает с двумя картами глобальной и локальной, с некоторым допущением можно сказать что во время работы эти карты накладываются друг на друга, позиционирование происходит только по глобальной, которая и представляет для робота правильный мир, локальная необходима для обхода мобильных препятствий, а т.к. робот движется вперед, то и кинекта смотрящего вперед вполне достаточно. Конечно, можно поставить кинекты по кругу, но это не оправданная трата денег, вычислительных ресурсов и энергии аккумулятора.
sned писал(а):И высказывание насчет"навигация работает на банальной Raspberry Pi 2 с загрузкой процессора на 60% для Raspberry" как то не корректно если параллельно требуется ноутбук для основных вычислений.
Вы наверное не поняли или не внимательно прочитали, может я не понятно объяснил. Полноценную навигацию расберри не потянул, нам пришлось часть задач переложить на ноут, кроме того в будущем планируется возложить на малинку еще кое какие задачи, для этого и нужны на ней свободные ресурсы. Расберри работает с сенсорами и контроллером, все основная нагрузка вычислений лежит на ноуте.
Scorpio писал(а):Я так понимаю, что будучи включенным в работу, в любом месте знакомого ему помещения, робот, оглядевшись, привяжет себя к карте? А затем проложит оптимальный маршрут к заданной точке, и попытается его преодолеть?
Это и есть главная задача навигации, которую мы на сегодня практически решили
Scorpio писал(а):По навигации с кинектом не плохо было бы отдельную тему...
Я думаю, мы рассмотрим эту тему в рамках наших уроков.
Scorpio писал(а):Лично меня сама по себе навигация уже перестала возбуждать. Куда и как доехать роботу уже более или менее понятно. Вопрос в том Зачем ему туда ехать? Про баночку пива из холодильника уже много раз говорилось. Но реализовать еще никому из форумчан не удалось, насколько я знаю. Потому как одной навигацией в этой задаче не обойтись.
Scorpio, мы помнится дискутировали с вами на эту тему, и на сколько я помню в этом вопросе наши мнения совпали. Абсолютно с вами согласен.