Робот-пылесос Neato XV-11


Neato XV-11

Neato XV-11 — робот-пылесос от калифорнийской компании Neato Robotics.
Начало продаж Neato XV-11 состоялось в 2010 году ( $399).

Компания Neato Robotics основана в 2005 году и состоит из 25 сотрудников.
Первоначально был выигран конкурс проектов Stanford Buisness School и стартап получил первые деньги на развитие.
Создание продукта длилось порядка 4 лет и состояло из нескольких стадий:
* разработка проекта робота,
* стрессовое испытание на надежность (виброиспытания, испытания на выработку ресурса робота, испытания нагревом, испытания на перегрузки (падение) и т.д.),
* бета-тестирование у пользователей,
* подготовка серийного производства

В 2009 году, компанией было привлечено вторичное инвестирование в размере $15 млн.

Компания Neato расположена в Калифорнии (Newark), а сами роботы производятся в Китае.

Max Safai (chief executive) Neato Robotics

В отличие, от роботов-пылесосов Roomba, которые блуждают по комнате случайным образом, робот Neato составляет карту комнаты и двигается по запланированной траектории, покрывая пространство с минимальным перекрытием. Это возможно, так как Neato оборудован лазерным дальномером, который вращается на 360 градусов и позволяет роботу построить карту помещения (алгоритм SLAM). Так же, Neato умеет определить местоположение зарядного устройства и самостоятельно возвращаться для подзарядки; при этом он может продолжить уборку помещения с места, на котором она была прервана.

Промо-ролик Neato XV-11

http://www.youtube.com/watch?v=hMTmnc7zraM

Модели Neato

XV-11 (зелёный),
европейские — XV-12 (белый) и XV-15 (серый).
Кроме цвета и адаптации блока питания под европейский стандарт, больше никакой разницы между моделями нет.

Прошивка

У Neato выведен порт mini-USB, через который пользователь может обновлять прошивку робота.

Последняя доступная прошивка — версия 2.6

How to Upgrade Your Neato Vacuum Software 2

http://www.youtube.com/watch?v=uItYR033tiY

В отличие от Roomba, на борту Neato установлен полноценный встроенный компьютер, под управлением OC Linux.
В качестве главного процессора выступает ARM9 (AT91SAM9XE128 от Amtel)

периферийные устройства реализованы на ARM и DSP — для них реализованы драйвера под Linux.
Такой подход позволяет создавать гибкую и модульную систему.

Roomba проигрывает в этом плане — в 500-й серии Roomba в качестве контроллера используется ARM7 ( ARM7TDMI на 8.0MHz!)

Если продолжить сравнение с роботами-пылесосами Roomba от iRobot, то Neato, похоже, выигрывает ещё и в несколько более удобном конейнере для сбора пыли, который необходимо вытаскивать сверху робота, а не сзади, как у Roomba.

Снизу роботы Neato и Roomba очень схожи

— у обоих есть два больших колеса и широкий канал с щёткой, но у Neato только одна щётка — с резиновыми клапанами (у Roomba две щётки — одна с резиновыми клапанами, а другая обычная)

Похоже, резиновая щётка не слишком эффективна для собирания волос из ковра и в этом плане проигывает обычной щётке Roomba.

Если Roomba комплектуется одной большой аккумуляторной батареей (14.4V (Ni-MH)), то Neato использует две небольших аккумуляторных сборки по 7.2V (3200 mAh (Ni-MH)) каждая (позволяют работать роботу около 1 часа).

Так же, видно что если у Roomba используется третье подруливающее колесо (что является вполне стандартной конструкцией), то у Neato установлены два крупных ролика с одной стороны и ещё два маленьких с другой, что возможно делает робота более устойчивым, но более требовательным к ровной поверхности.

К минусам Neato можно отнести, то что он громче чем Roomba, но это можно объяснить более мощным пылесосом.

Зарядное устройство

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

Робот на зарядной станции

В отличие от Roomba, где контакты зарядного устройства располагаются снизу и робот должен на них наехать, Neato XV-11 требуется просто прижаться к полоскам-контактам.

Главная причина, почему зарядная станция Neato громоздкая — потому что она позволяет себя открыть и вытянуть нужную длину адаптера питания:

Виртуальная стена

Если у Roomba, в качестве виртуальных стен выступают специальные излучатели ИК-сигнала, то у Neato нужно проложить под ковром специальную магнитную полосу, которую робот не должен пересекать (в комлекте с роботом идёт 4.5 метра такой полоски)

Лазерный дальномер

На вершине полумесяца XV-11 установлен ключевой сенсор Neato — лазерный сканирующий дальномер.

Использование этого сенсора и позволяет роботу построить двумерную карту помещения (при помощи SLAM), на которой уже прокладывается маршрут уборки.

Neato Robotics SLAM Demonstration

http://www.youtube.com/watch?v=zodC8EFvh7g

Так же, лазерный дальномер позволяет роботу избегать препятствия и всё время контролировать изменения окружающей обстановки (например, вернуться к зоне, которая раньше была недоступна).
SLAM позволяет Neato выполнить уборку быстрее и эффективнее, чем Roomba, т.к. робот не будет вслепую наматывать спирали, натыкаться бампером на предметы, а может двигаться более системно, начиная с одного края, а затем двигаясь взад и вперёд по всей длине помещения, пока уборка не будет завершена.

Т.о. Neato двигается прямо по проложенному маршруту и может тратить энергию не на блуждание, а на уборку.

Этот дальномер до сих пор не даёт покоя робототехникам-любителям, т.к. представляет собой доступный сенсор, который вместе с роботом дешевле чем существующие решения (самый дешёвый из которых стоит $1200).
Был даже объявлен конкурс на его взлом, который частично увенчался успехом.

В 2008-м году Neato спонсировала ICRA исследовательскую работу под названием «Дешёвый лазерный дальномер» («A Low-Cost Laser Distance Sensor»), в рамках которой было проведено детальное проектирование лазерного дальномера, который стоит всего $30 — «Revo LDS»:

Вскрытый лазерный дальномер Neato:

В отличие от более дорогих (несколько тысяч долларов), лазерных дальномеров, которые измеряют время пролёта, Revo LDS триангулирует расстояние до объекта, зная фиксированный угол лазерной указки и CMOS-матрицы, с известной базовой линией между ними.

Используя недорогую CMOS-матрицу и DSP, для субпиксельной интерполяции, получается хорошая разрешающая способность по дальности: до 6м с 5см базовой линией.

Двигатель раскручивает блок на 10Гц, чтобы дать полный 360-градусный угол обзора. Оптический датчик даёт угловую точность до 1 градуса.
Думаю, этот датчик, как отдельный продукт, например его USB-версия, был бы очень востребован для любительской робототехники.

А пока это можно сделать самостоятельно:

Connecting the XV-11 Laser to USB

Блок лазерного дальномера

с открытой крышкой

Мощность лазера составляет 2.1mW, при длине волны 785nm (инфракрасное (ИК) излучение)

для прямой работы с лазерным дальномером уже есть драйвер под ROSxv_11_laser_driver

Данные от лазерного дальномера идут по обычному UART-у на скорости 115200.
Полное сообщение состоит из 1446 байт:
4 байта — заголовок (0xC0 0x00 0xA5 0x5A)
2 байта — «скорость» (скорость вращения сенсора, которую Neato контролирует при помощи PID — uint16 )
360 точек * 4 байта = 1440 байта точек (дистанция в мм и биты статуса)

подробнее: The Underlying XV-11 Protocol Explained

дальномер возвращает дальность от 60mm до 5000mm

Форма

Квадратный дизайн передней панели робота позволяет Neato выполнять уборку в том числе и в углах, а благодаря полукруглой форме кормы он может легко выбраться из ограниченного пространства.

Этот дизайн стал поводом судебного разбирательства с iRobot
с их патентом на квадратный дизайн передней части:

Датчики

Как и Roomba, Neato оборудован датчиками поверхности, чтобы не сваливаться с лестниц.

тёмный прямоугольник сбоку — датчик поверхности:

что-то меня немного смущает резиновая передача на щётку

Самоконтроль

Neato контролирует своё состояние и останавливается, если воникли проблемы с щёткой, или если он перегревается из-за того, что что-то застряло в воздухозабонике. XV-11, даже предупреждает, когда контейнер для пыли полон, и будет ждать, чтобы его очистили.

Угу — тут ещё есть над чем поработать 🙂

Интерфейс

Разработчики Neato разместили в верхней части XV-11, ЖК-экран, на котором робот показывает своё текущее состояние и выдаёт информацию о возникших проблемах.
При помощи простого интерфейса, можно изменить режим работы робота, установить часы и запрограммировать расписание уборки.

Паттерн движения робота

Roomba

Neato XV-11

— робот действительно двигается по прямым линиям.

Разрешение карты робота составляет примерно 2.5 сантиметра, т.о. Neato перекрывает свой путь на это расстояние и где-то столько же не доезжает до стен.

Neato Robotics XV-11 Vacuum Robot

http://www.youtube.com/watch?v=fwTCj3TZrxE

Программирование

Neato позволяет внешнее управление посредством того же USB-порта.

Устанавливаемый драйвер, создаёт в системе обычный COM-порт (как и для Arduino) и общаться с роботом можно посредством обычной терминальной программы (например, TeraTerm)

Общение ведётся обычными текстовыми командами (вида CamelCase) и ответ возвращается в формате обычного текста.

Programmers Manual — Communication with the robot through the USB port

Судя по мануалу, на роботе ещё есть и акселерометр (GetAccel):

Label,Value
PitchInDegrees,  0.00
RollInDegrees,  0.00
XInG, 0.000
YInG, 0.000
ZInG, 0.000
SumInG, 0.000

Можно получить состояние аналоговых сенсоров (GetAnalogSensors)

SensorName,Value
WallSensorInMM,34585
BatteryVoltageInmV,19761
LeftDropInMM,60
RightDropInMM,60
RightMagSensor,0
LeftMagSensor,0
XTemp0InC,28
XTemp1InC,28
VacuumCurrentInmA,1342
ChargeVoltInmV,0
NotConnected1,0
BatteryTemp1InC,20
NotConnected2,0
CurrentInmA,3493
NotConnected3,0
BatteryTemp0InC,20

— похоже на роботе есть всего два датчика пола и два сенсора магнитной полосы («виртуальной стены»)

Оказывается, теперь у робота можно запросить и массив данных лазерного дальномера (GetLDSScan), что вернёт 360 строчек, соответствующих углам сканирования и содержащих: угол, дистанцию в мм, интенстивность, код ошибки:

AngleInDegrees,DistInMM,Intensity,ErrorCodeHEX
0,221,1400,0
1,223,1396,0
2,228,1273,0
(. . .)
359,220,1421,0
ROTATION_SPEED (in Hz, Floating Point),5.00

можно проиграть мелодию (PlaySound) — одну из 21-й возможных

и, разумеется, можно порулить моторчиками (SetMotor)

Используя такой доступный и удобный интерфейс, можно программировать Neato и использовать его, например, вместо iRobot Create.


Под ROS уже есть готовый стек для взаимодействия с роботом —
neato_robot,
в который входят пакеты:
neato_driver — драйвер для робота-пылесоса Neato XV-11 — просто скрипт на питоне (src/neato_driver.py), который реализует вышеперечисленные команды взаимодействия с роботом
neato_node — позволяет управлять роботом через топик geometry_msgs/Twist, публиковать данные лазерного дальномера и одометрию
2dnav_neato — пакет содержит конфигурационные файлы и launch-файлы запуска для использования стека навигации с Neato XV-11 робота.

Neato + ROS: Now With SLAM

Внутренности робота


крупнее:

Колесо Neato

тёмный диск — это энкодер двигателя

колёсный узел со снятым колесом и диском энкодера

энкодер — датчик Холла

чёрный диск энкодера (шесть магнитиков)


12-вольтовый моторчик (Chengfang Motor H29-3HA130)

редуктор

Получается, что используя всего 6 равноудалённых магнитов, закреплённых на пластиковом диске и один датчик Холла, робот может получить только 60-градусную точность поворота вала двигателя.

В то же время, Roomba 400-й серии (и iRobot Create) использует для получения одометрии робота только оптические энкодеры на колёсах.

Судя по количеству зубцов энкодера (32) можно говорить о точности порядка 10 градусов поворота колеса.

Планетарный редуктор Roomba:

В 500-й серии Roomba колёса стали тоньше

и стал использоваться обычный редуктор:

Выводы

Таким образом, можно выделить следующие ключевые моменты реализации Neato:

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

Впоследствии, разработчиками Neato было добавлено определение дверных проёмов, т.о. робот может совершить сначала «объезд территории» и составить карту всего помещения, а потом спланировать маршрут уборки всей квартиры.

2. Интерфейс пользователя — Neato имеет ЖК-дисплей, на котором он выводит свой текущий статус и через который ему можно задавать режим работы.

3. Обновление — у Neato выведен порт mini-USB, через который можно проводить обновление прошивки робота. Новую версию прошивки можно скачать с сайта производителя и простым образом загрузить в робота, добавив ему новые функции.

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

5. Открытость — доступный и простой интерфейс для взаимодействия и программирования робота, который позволяет получать информацию с сенсоров робота и управлять его двигателями. Это позволяет исследователям и любителям робототехники встраивать робота в свои разработки.

Ссылки
http://www.neatorobotics.com
http://en.wikipedia.org/wiki/Neato_Robotics
Neato XV-11 (XV-12 / XV-15) review
BotJunkie Review: Neato Robotics XV-11
Suck it up! Neato Is Ready to Kick Robot Vacuum Butt
iRobot Roomba 560 vs. Neato XV-11
Ultra Low-Cost Laser Rangefinders Actualized by Neato Robotics
http://xv11hacking.wikispaces.com
Neato XV-11. Робот-пылесос

Внутренности робота
фотографии материнской платы Neato XV-11
фотографии разборки лазерного дальномера Neato XV-11
фотографии разборки колёсного узла Neato XV-11
Neato Robotics XV-11 Tear-down

Программирование
Programmers Manual

Neato и ROS
стек для Neato — neato_robot
ROS-драйвер для лазерного дальномера — xv_11_laser_driver
Connecting the XV-11 Laser to USB
The Underlying XV-11 Protocol Explained

Disassembling a Roomba 560


0 комментариев на «“Робот-пылесос Neato XV-11”»

  1. отличная модель! сначала удивился прямым углам на морде, но потом понял что это лучше))

    Румба чем уже бесит — она всё-таки царапает мебель, да и сам корпус уже весь шершавый (полтора года использования). Обычная щетка — просто рай для волос, так как наматывает их за один сеанс. Так же проблемой являются ролики валов, наматывающие волосы до полной остановки. Интересно — существуют какие-либо новые решения этого вопроса?

  2. Материалы на сайте являются интеллектуальной собственностью авторов. Копирование и публикация материалов без рабочей ссылки на первоисточник запрещено.

    Надеюсь, когда вы брали начало статьи с другого сайта, вы прочитали это? Указывать, что и откуда вы брали, не буду — вы и так знаете. Но вы не предупредили автора об использовании материалов и не дали ссылку на сайт. Сейчас ситуация может быть решена только опубликованием ссылки на первоисточник. Жду 24 часа.

    • Приношу свои извинения. Действительно, забыл добавить ссылку на статью, которая и послужила толчком для написания этого обзора.
      Ссылка добавлена.

Добавить комментарий

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Arduino Bluetooth CraftDuino DIY Google IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд юмор

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение