Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Nox - домашний бродячий робот (ROS)

Nox - это хороший (и трудоемкий) робот, который использует SLAM (ROS) с Kinect для навигации в своей среде. Nox - это робот с дифференциальным приводом, созданный с использованием ROS, Raspberry Pi и Arduino. Я начал проект как роботизированная база с базовой навигацией, которую затем можно было использовать для других вещей, например, пылесоса.

Однако я быстро решил сделать из него автономного робота с правильным дизайном, поскольку он часто отсутствует в роботах DIY. В своем текущем состоянии робот может использовать SLAM (gmapping) для создания карты своего окружения (используя восприятие глубины Kinect для обнаружения стен и препятствий) и локализоваться на карте. Он может спланировать путь к поставленной цели и подъехать к ней, избегая препятствий.

Nox питается от литий-ионной батареи 11,1 В и приводится в движение двумя двигателями. Переднюю панель можно снять, чтобы заменить аккумулятор. Продольное отверстие и винт скрепляют его и позволяют вставлять батарейки разной длины. Ставлю сигнализацию батареи с экраном для контроля уровня.


Это два двигателя постоянного тока на 12 В (107 об / мин) от Banggood. Они хороши, но мне на самом деле не нужно, чтобы робот двигался так быстро, и я мог бы обменять часть скорости на более точные кодировщики.

Что касается дизайна, основным ограничением было наличие чего-то, что хорошо интегрируется с Kinect, поскольку я строил робота вокруг этого. Меня вдохновил треугольный вид многих предметов в современном стиле (и, должен признать, многое от Deus Ex). Я действительно хотел иметь красивого и профессионально выглядящего робота, поскольку это то, чего часто не хватает самодельным роботам (но не волнуйтесь, что проводка такая грязная, как и должно быть). Было необходимо потратить несколько недель на CAD-модель, чтобы все настроить.

Боковые огни созданы на основе новогодней светящейся палки, которую я получил бесплатно и служит для индикации состояний робота. Когда Arduino не подключен к мастеру ROS (что указывает на то, что программа робота еще не запущена), индикаторы очень быстро мигают три раза подряд. Во время движения фары мигают чаще, а скорость мигания зависит от скорости робота.

Мигает без подключения

Мигает в режиме ожидания

Структура

Как было сказано выше, робот имеет дифференциальный привод, поэтому двигатели расположены на одной оси. Основание сделано из дерева с двумя роликами для поддержки. Изначально я планировал использовать одно вращающееся колесо, чтобы избежать гиперстатики, но не смог найти колесо хорошего размера. Остальная часть конструкции сделана в основном из дерева и металлических скоб, которые легко найти в любом розничном магазине DIY. На задней части робота можно складывать пластины для установки электронных плат.


Картер сделан из черной пластиковой пластины, вырезан и склеен вручную (в следующий раз обязательно воспользуюсь 3D-печатью).


Аппаратное обеспечение

Внутри главного контроллера находится Raspberry Pi 3B под управлением Ubuntu и ROS. Доступ к Raspberry можно получить с внешнего компьютера через Wi-Fi и ssh, чтобы отдать приказ роботу. Программа ROS выполняет расчет одометрии, планирование навигации и картографирование с помощью Kinect. Raspberry Pi отправляет команду скорости на Arduino, который управляет двумя двигателями с помощью PID через Adafruit Motor Shield. Он считывает значение энкодера, вычисляет скорость каждого двигателя и отправляет значение обратно в Raspberry для расчета одометрии. Arduino и Raspberry Pi подключаются через USB, а программа Arduino действует как узел ROS (дополнительную информацию ищите в rosserial).

Я использовал разные типы Arduino, прежде чем остановился на хорошем. Сначала я использовал базовый Arduino Uno, но у меня не было достаточно выводов прерывания для чтения значений кодировщика (лучший способ сделать это с Arduino). Скорость и точность были ограничены, так как мне пришлось прибегнуть к другим программным приемам, чтобы заставить его работать. Я пробовал использовать Arduino Leonardo, но ограничивающим фактором была память, и мне пришлось наконец переключиться на Arduino Mega 2560. Благо замаскированное, так как у меня осталось много памяти и контактов для добавления новых функций.

Kinect 360 был частью проекта с самого начала, так как я хотел сделать SLAM (одновременная локализация и отображение), но не тратя кучу денег на лидар. Kinect - это, по сути, 3D-камера за 25 евро (конечно, не ожидайте такой же точности, как Hokuyo) и, помимо сканирования глубины, необходимой для SLAM, также может использоваться для компьютерного зрения, имеет акселерометр и микрофон. множество. Все это удобно на следующих этапах проекта.

Два преобразователя постоянного тока используются для преобразования напряжения. Двигатель работает напрямую от напряжения аккумулятора (более-менее 11,1 В). Командная часть (включая Raspberry Pi, Arduino и кодировщики) работает от напряжения 5 В, преобразованного от батареи. Kinect требуется стабилизированное напряжение 12 В, и преобразователь также обеспечивает его от батареи.

Программное обеспечение

Что касается программного обеспечения, я использовал ROS Kinetic. Единственный узел, который я действительно написал, - это «nox_controller», который, как на самом деле не подразумевает его имя, используется для вычисления одометрии на основе данных Arduino (скорости двигателя). Модель, используемую для расчетов, можно найти в статье «Об одометрии робота с дифференциальным приводом в применении к планированию пути» (на самом деле я сделал свои собственные формулы, но они такие же, в любом случае статью стоит прочитать). Матрицы ковариации приведены в одометрии, но в настоящее время не используются (однако они станут полезными, если я буду интегрировать IMU в одометрию).

В Arduino управление двигателем осуществляется через ШИМ. Предполагается, что ПИД-регулятор управляет каждой скоростью двигателя, но поскольку соотношение ШИМ / скорость двигателя очень линейно, я получил хороший результат с прямым управлением скоростью и отключил ПИД-регулятор на данный момент. Не волнуйтесь, хотя правильная реализация и калибровка ПИД-регулятора в процессе.

Подробнее:Nox - робот-блуждающий по дому (ROS)


Производственный процесс

  1. Как создать платформу для роботов Arduino + Raspberry Pi
  2. Робот, использующий Raspberry Pi и Bridge Shield
  3. Робот-бокс для компакт-дисков Raspberry Pi
  4. ЭНДИ:многоцелевой робот-гуманоид
  5. Робот с подвижной сигнализацией
  6. Создайте робота Minecraft Creeper
  7. Четвероногий автономный робот JQR
  8. Архимед:ИИ-робот-сова
  9. EMAR Mini - робот для экстренной помощи
  10. Робот, управляемый Wi-Fi и использующий Raspberry Pi