Проектирование оборудования и схем ChefBot

Проектирование оборудования и схем ChefBotВ этой статье мы обсудим конструкцию, принципы работы оборудования ChefBot и выбор аппаратных компонентов. В предыдущей статье «Моделирование дифференциального привода робота, управляемого операционной системой ROS» была разработана базовая структура робота и сымитирована его работа в гостинице. Имитация производилась с использованием Gazebo и ROS. Мы протестировали несколько переменных, таких как масса тела робота, крутящий момент двигателя, диаметр колеса и другие параметры. Также создали модель автономной навигации ChefBot в гостиничной среде.

Серия статей на тему: «Создание с нуля автономного мобильного обслуживающего робота с использованием Python»

  1. Начало работы с операционной системой для робота (ROS)
  2. Основные понятия роботов с дифференциальным приводом
  3. Моделирование робота с дифференциальным приводом
  4. Моделирование дифференциального привода робота, управляемого операционной системой ROS
  5. Проектирование оборудования и схем ChefBot
  6. Согласование приводов и датчиков с контроллером робота
  7. Согласование датчиков зрения с ROS
  8. Создание аппаратного обеспечения ChefBot и интеграция ПО программного обеспечения
  9. Разработка графического интерфейса для робота с использованием Qt и Python

Теперь, чтобы создаваемый нами робот смог ориентироваться в окружающей среде, нам необходимо выбрать все аппаратные компоненты и определиться, как все эти компоненты соединить. Мы знаем, что основная функция данного робота – навигация. Робот должен перемещаться из исходного положения в конечную точку маршрута без каких-либо столкновений с окружающей средой. В этой статье мы обсудим датчики и аппаратные компоненты, необходимые для достижения этой цели. Нами будет рассмотрена и объяснена структура робота в блок-схемах. Также мы обсудим основной принцип работы робота. Кроме того, нам потребуется выбрать компоненты, необходимые для сборки робота. Также мы проведем обзор интернет-магазинов, где можно приобрести необходимые компоненты.

Если у вас TurtleBot уже есть, эту статью вы можете пропустить и перейти к следующей статье «Согласование приводов и датчиков с контроллером робота«. Данная статья предназначена для тех, кто оборудование для своего робота будет создавать самостоятельно. Давайте рассмотрим спецификации, соответствующие проекту нашего устройства. Робот состоит из шасси, датчиков, приводов, платы контроллера и ПК.

В этой статье мы рассмотрим следующие темы:

  • структурная схема и описание робота Chefbot;
  • выбор и описание компонентов робота;
  • работа оборудования Chefbot.

Технические условия

В этой статье описаны компоненты, необходимые для сборки робота. Вам необходимо приобрести эти компоненты или аналогичные им.

Спецификации оборудования Chefbot

В этой части статьи мы обсудим некоторые из важных спецификаций, упомянутых в третьей статье «Моделирование дифференциального привода робота». Окончательный прототип робота будет соответствовать следующим требованиям:

  • простая и рентабельная конструкция шасси робота: конструкция шасси, по сравнению с существующими роботами, должна быть простой и рентабельной;
  • автономная навигация: робот должен автономно перемещаться и определять себя в пространстве. Для этого он должен быть оснащен всеми необходимыми датчиками;
  • продолжительное время работы от батарей: робот должен работать непрерывно при питании от батарей не менее 1 часа;
  • обход препятствий: робот должен уметь обходить подвижные и неподвижные препятствия.

Конструкция и оборудование робота должны соответствовать всем этим требованиям. Давайте рассмотрим один из возможных вариантов соединения компонентов. В следующей части нашей статьи мы рассмотрим блок-схему робота и с ее помощью разберем принцип работы нашего робота.

Структурная схема робота

Робот приводится в движение двумя моторами постоянного тока со встроенными редукторами и энкодерами. Моторы управляются с помощью драйвера двигателей. Драйвер двигателя со встроенным контроллером с помощью команд, посылаемых моторам, контролирует движение робота. Энкодер считает количество оборотов вала двигателя и передает эти данные встроенному контроллеру. Это и есть данные одометрии робота. Кроме энкодера, к плате контроллера подключены ультразвуковые датчики. Они взаимодействуют с контроллером и определяют расстояние до препятствий. Кроме того, к плате контроллера подключены сенсоры, назначение которых – улучшение расчета данных одометрии. Встроенный контроллер подключен к персональному компьютеру, который выполняет в роботе все вычисления высокого уровня. Видеозрение и звуковые датчики подключаются к ПК, а для удаленных операций предусмотрен Wi-Fi.

Каждый блок робота показан на следующей схеме:

Блок-схема конструкции робота
Блок-схема конструкции робота

Двигатель и энкодер

Как уже было сказано ранее, проектируемый нами робот приводится в движение с помощью дифференциального привода. Поэтому нам потребуется два двигателя. В каждый двигатель встроен квадратурный энкодер, контролирующий вращение и обеспечивающий обратную связь (http://letsmakerobots.com/node/24031).

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

Выбор двигателей, энкодеров и колес для робота

Моделируя робота, мы получили представление о его параметрах. При моделировании мы учитывали, что необходимый для стабильного управления роботом крутящий момент равен 18 кг-см. Но расчетный крутящий момент будет меньше. Чтобы иметь запас мощности, был выбран повышенный крутящий момент. Требованиям нашей конструкции удовлетворяют двигатели с сайта Pololu. Мы можем выбрать мотор постоянного тока с высоким крутящим моментом и встроенным редуктором и энкодером. Напряжение питания этого двигателя – 12 В, скорость вращения – 80 об/мин. Для нашей конструкции мы выбираем следующий двигатель: https://www.pololu.com/product/1447.

Читать также:  Функции классификации и преобразования символов С++

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

Ниже показана фотография двигателя, предлагаемого на сайте Pololu. Двигатель снабжен встроенным квадратурным энкодером с разрешением 64 импульса на оборот вала двигателя, что соответствует 8400 импульсам оборота выходного вала редуктора.

Мотор постоянного тока со встроенным энкодером и колесом
Мотор постоянного тока со встроенным энкодером и колесом

Из мотора выходит 6 цветных проводов. Назначение и цвет этих проводов
описаны в следующей таблице.

Назначение и цвет проводов

Согласно нашей конструкции, было выбрано колесо диаметром 90 мм. Pololu предлагает колесо в 90 мм. Это колесо доступно по адресу: http://www.pololu.com/product/1439.
Альтернативу можно найти на сайте AliExpress.

На предыдущем рисунке это колесо показано в сборе вместе с выбранным мотором. Кроме того, для соединения колеса и двигателя нам потребуются следующие комплектующие:

  • ступица для крепления колеса на вал двигателя. Деталь доступна по адресу: http://www.pololu.com/product/1083.
  • кронштейн для крепления двигателя к шасси робота: http://www.pololu.com/product/1084.

Драйвер двигателя

Драйвер двигателя – это электрическая схема, управляющая направлением вращения двигателя. Под словосочетанием «управление двигателями» мы понимаем контроль напряжения, подаваемого на двигатели, и контроль скорости вращения и направления вращения вала двигателя. Изменение направления вращения вала двигателя производится изменением полярности на клеммах двигателя. Для этого используется схема стандартного H-моста, применяемого в регуляторах оборотов. H-мост представляет собой электрическую цепь, проводящую электрический ток в требуемом направлении. Сила тока, проходящая через контакты Н-моста, зависит от характеристик выбранной нами контактной группы. Следует отметить, что вместо реле можно применять электронные ключи.

Ниже показана стандартная схема Н-моста, собранная на переключателях.

Схема Н-моста
Схема Н-моста

Направление вращения вала двигателя определяется включением и выключением четырех переключателей.

Направление вращения вала двигателя

Нами были рассмотрены варианты коммутации переключателей Н-моста, с помощью которых мы управляем направлением вращения вала двигателя. Далее следует выбрать сам контроллер двигателя и обсудить принцип его работы.

Выбор контроллера двигателя

Контроллер двигателя – это плата, на которой смонтирована электронная схема управления. Данный контроллер совместим с выбранным нами двигателем и доступен на сайте Pololu. На следующем рисунке показан один из драйверов, который будет использован в нашем роботе.

Двухканальный контроллер двигателя Dual VNH2SP30 Motor Driver Carrier MD03A
Двухканальный контроллер двигателя Dual VNH2SP30 Motor Driver Carrier MD03A

Данное устройство доступно на http://www.pololu.com/product/708.

Драйвер может управлять двумя двигателями с суммарным максимальным током потребления 30 А. Драйвер состоит из двух микросхем. Одна микросхема управляет правым двигателем, другая – левым двигателем. Описание контактов для подключения драйвера приведено ниже.

Входные контакты

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

Входные контакты

Выходной контакт

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

Выходной контакт

Контакты для подачи питания

Ниже перечислены выводы для подключения питания.

Контакты для подачи питания

Встроенный контроллер

Плата контроллера – это устройство ввода/вывода, которое получает данные от ультразвукового датчика, инфракрасного датчика, энкодера, акселерометра и гироскопа, сигналы управления от бортового компьютера, обрабатывает полученные данные и отправляет управляющие импульсы на H-мост драйвера управления двигателями.

Основные функциональные возможности платы контроллера следующие:

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

В следующих статьях мы рассмотрим платы ввода-вывода и их взаимодействие с различными компонентами. Это такие популярные устройства, как Ардуино (https://www.arduino.cc/) или Tiva C LaunchPad (http://www.ti.com/tool/EK-TM4C123GXL) Texas Instruments. Мы для нашего робота остановим свой выбор на плате ввода-вывода Tiva C LaunchPad. Это устройство отличается от Ардуино следующими параметрами:

  • Тива C launchpad содержит микроконтроллер на основе 32-разрядного ядра Cortex-M4 с 256 КБ флеш-памяти, 32 КБ ОЗУ и 80 МГц; технические
    характеристики Arduino гораздо ниже;
  • высокая производительность обработки данных в сочетании с быстрой обработкой прерываний;
  • 12 таймеров;
  • 16 выходов PWM (ШИМ – широтно-импульсный модулятор);
  • есть два входа для подключения квадратурных энкодеров;
  • восемь универсальных асинхронных приемников/передатчиков (UART);
  • контакты 5 В общего назначения ввода/вывода (GPIO);
  • низкая стоимость и меньший, по сравнению с Arduino, размер платы;
  • легко программируемый интерфейс IDE с названием Energia (http://energia.nu/). Код, написанный в Energia, совместим с платой Arduino.

На следующем рисунке показана плата Texas Instrument’s Tiva C LaunchPad.

Плата контроллера Tiva C LaunchPad
Плата контроллера Tiva C LaunchPad

Распиновку данной серии Texas Instrument Launchpad можно легко найти в Интернете.

Данная распиновка совместима со всеми сериями контроллера на плате ввода-вывода Tiva C LaunchPad. И все они программируются в IDE Energia.

Ультразвуковые датчики

Ультразвуковые датчики, также называемые пинг-датчиками, в нашей конструкции используются для измерения расстояния между роботом и объектом. Основное применение для пинг-датчиков – обнаружить препятствие и предотвратить с ним столкновение. Ультразвуковой датчик излучает высокочастотные звуковые волны и принимает отраженное от препятствия эхо. Зная скорость движения звуковой волны и время между моментом излучения звуковой волны и моментом получения отраженного от препятствия эха, можно вычислить расстояние от робота до данного препятствия.

Одним из главных моментов в проектировании робота является условие, чтобы робот не получил повреждения от столкновений с препятствиями. В следующей части статьи будут показаны числовые значения, получаемые от ультразвукового датчика. Можно установить несколько датчиков и разместить их не только в передней части робота, но и по бокам и в задней части устройства. Эти датчики позволят обнаруживать препятствия со всех сторон робота.

Читать также:  Указатели и операции с указателями в C++

Датчик Kinect в основном используется для обнаружения препятствий и избежания столкновений с ними. Kinect может обнаруживать препятствия на расстоянии от 0,8 м. Поэтому пространство на расстоянии от 0 до 0,8 м может быть проконтролировано только с помощью ультразвукового датчика. Ультразвуковой датчик позволит понизить опасность столкновений робота с препятствиями.

Выбор ультразвукового датчика

Одним из самых популярных и дешевых ультразвуковых датчиков является датчик НС-SR04. Мы выбираем этот датчик для нашего робота из-за следующих факторов:

  • дальность обнаружения составляет от 2 см до 4 м;
  • рабочее напряжение 5 В;
  • рабочий ток не более 15 мА.

Данный датчик предназначен для точного обнаружения препятствий. Как уже упоминалось ранее, напряжение питания датчика равно 5 В. Ниже показана фотография датчика НС-SR04, еще ниже – его распиновка.

Ультразвуковой датчик HC-SR04
Ультразвуковой датчик HC-SR04

Описание контактов ультразвукового датчика НС-SR04:

Описание контактов ультразвукового датчика НС-SR04

Инерциальный блок измерения (акселерометр и гироскоп)

В этом роботе используется инерциальный измерительный модуль (IMU), назначение которого – получение точных значений одометрии и уточнения положения робота. Одометрия – это использование данных о движении приводов для оценки перемещения. Значения одометрии, получаемые только от одного датчика, могут содержать ошибки, и вследствие этих ошибок точность измерения может понизиться. Чтобы компенсировать ошибки измерения и как следствие – движения робота, мы в этом роботе будем использовать IMU. Для нашей конструкции мы выбираем блок измерения MPU 6050 для IMU по следующим причинам:

  • встроенный в одну микросхему акселерометр и гироскоп;
  • высокая точность и чувствительность;
  • интерфейс для подключения дополнительного датчика, в нашем случае – магнитометра;
  • простая установка и подключение;
  • модуль MPU 6050 подключается напрямую к микропроцессору;
  • напряжение питания – 3,3 В;
  • для упрощенного взаимодействия MPU 6050 и LaunchPad доступны библиотеки с программным обеспечением.

На следующем рисунке показан модуль MPU 6050.

Устройство MPU 6050
Устройство MPU 6050

Ниже приведено описание контактов данного устройства.

Описание MPU 6050
Описание MPU 6050

Модуль можно купить здесь: https://amperkot.ru/products/modul_giroskopa_akselerometr_trehosnyiy_mpu6050_6dof_gy521/23867419.html.

Kinect/Orbbec Astra

Kinect – это бесконтактный сенсорный игровой контроллер. Состоит из видеокамеры и двух сенсоров, расположенных в верхней части устройства. Мы используем Kinect для организации трехмерного зрения робота. Робот с помощью Kinect будет получать трехмерный образ окружающей его среды. Трехмерные изображения преобразуются в мелкие точки, называемые облаками точек (point cloud). Данные облака точек будут иметь все 3D-параметры окружающей среды.

В основном в роботе Kinect используется вместо лазерного сканера. Данные лазерного сканирования алгоритм SLAM использует для строительства карты окружающей среды. Лазерный сканер – это очень дорогое устройство. Поэтому вместо лазерного сканера мы применим Kinect как виртуальный лазерный сканер.

Kinect
Kinect

Основные датчики, используемые в Kinect, – это ИК-камера, ИК-прожектор и RGB-камера. С помощью ИК-камеры, ИК-прожектора и RGB-камеры генерируется трехмерное облако точек окружающей среды. Также Kinect оснащен микрофонами и моторизированной станиной, обеспечивающей наклон датчика.

Kinect можно приобрести здесь: https://www.ebay.com/sch/-/117044/i.html?_nkw=kinect+xbox+360&Brand=Microsoft&_dcat=117044.

Orbbec Astra
Orbbec Astra

Альтернативой Kinect является Orbbec Astra (https://orbbec3d.com/product-astra/). Astra работает с тем же программным обеспечением, которое использует Kinect. Преобразование облака точек в данные лазерного сканирования выполняется этим же программным обеспечением, поэтому при использовании Astra нам необходимо только заменить драйвер устройства. После создания карты робот может перемещаться по окружающей среде.

Центральный процессор

Управление роботом осуществляется с помощью бортового ПК, на котором выполняется навигационный алгоритм. В качестве бортового компьютера можно использовать ноутбук, мини-ПК или ноутбук. Компания Intel выпускает миникомпьютер под названием Intel Next Unit of Computing (NUC). Этот компьютер имеет очень маленький размер, малый вес и благодаря процессору Intel Celeron Core i3 или Core i5 обладает хорошими вычислительными возможностями. Компьютер работает с объемами оперативной памяти до 16 ГБ и имеет встроенный модуль Wi-Fi/Bluetooth. Мы выбираем Intel NUC потому, что он обладает хорошей производительностью, очень маленькими размерами. Кроме того, он очень легкий. Мы не будем рассматривать популярные микрокомпьютеры, такие как Rasberry pi (http://www.raspberrypi.org/) или BeagleBone (http://beagleboard.org/), потому что вычислительные мощности этих микрокомпьютеров ниже, чем у Intel Next Unit of Computing.

NUC использует процессор Intel DN2820FYKH. Далее представлена детализация этого компьютера:

  • процессор Intel Celeron Dual Core с тактовой частотой 2,39 ГГц;
  • 4 ГБ оперативной памяти;
  • жесткий диск 500 ГБ;
  • интегрированная графика Intel;
  • разъем наушников/микрофона;
  • питание 12 В.

На следующем рисунке показан мини-компьютер Intel NUC.

Intel NUC DN2820FYKH
Intel NUC DN2820FYKH

Вы можете купить NUC на Amazon: http://a.co/2F2flYl.

Учтите, модель NUC, ссылка на приобретение которой указана выше, устаревшая. Если этого микрокомпьютера в продаже уже нет, вы можете попробовать подобрать похожий по техническим требованиям NUC, используя следующие ссылки:

  • Intel NUC BOXNUC6CAYH (https://www.intel.com/content/www/us/en/products/boards-kits/nuc/kits/nuc6cayh.html);
  • Intel NUC KIT NUC7CJYH (https://www.intel.com/content/www/us/en/products/boards-kits/nuc/kits/nuc7cjyh.html);
  • Intel NUC KIT NUC5CPYH (https://www.intel.com/content/www/us/en/products/boards-kits/nuc/kits/nuc5cpyh.html);
  • Intel NUC KIT NUC7PJYH (https://www.intel.com/content/www/us/en/products/boards- kits/nuc/kits/nuc7pjyh.html).

Читать также:  Двусвязный список структуры данных в C++

Динамики/микрофон

Основная функция робота – автономная навигация. Мы добавим дополнительную функцию, при которой робот может взаимодействовать с пользователями с помощью речи. Робот может получать голосовые команды и отвечать пользователю с помощью синтезатора речи (TTS). Синтезатор речи преобразовывает текст в речевой формат (звук). Для получения голосовых команд и для ответов пользователю роботу необходимы микрофон и динамики. Это стандартные аппаратные средства. Единственное к ним требование – возможность подключения к компьютеру через USB. Динамики и микрофон можно заменить Bluetooth-гарнитурой.

Источник питания/аккумулятор

Одним из наиболее важных компонентов является питание. В техническом задании было обусловлено, что робот должен непрерывно работать не менее часа. Желательно, чтобы напряжение, отдаваемое аккумуляторной батареей, соответствовало напряжению питания всех компонентов компьютера. Немаловажную роль играют габаритные размеры и вес аккумуляторной батареи. Чем меньше вес и габариты при заданной емкости, тем лучше. И еще одно немаловажное требование, которое следует учесть при выборе источника питания. Это максимальный ток батареи. Максимальный ток, необходимый для всей цепи, не должен превышать максимальный ток источника питания робота. В нашем случае – аккумуляторной батареи. Максимальный ток и напряжение питания компонентов робота приведены в следующей таблице.

Максимальный ток и напряжение питания компонентов робота

Чтобы соответствовать этим требованиям, мы для нашего робота выбираем аккумуляторную батарею 12 В, 10 А·ч.

Загерметизированная свинцовокислотная батарея
Загерметизированная свинцовокислотная батарея

Мы эту батарею можем купить по адресу http://a.co/iOaMuZe. Вы можете выбрать другую батарею. Основное требование – напряжение питания 12 В, емкость не менее 10 А·ч, максимальный ток батареи – не менее 5,5 А.

Как работает оборудование ChefBot?

Мы можем объяснить работу оборудования ChefBot, используя следующую блок-схему. Это более детализированная версия нашей первой блок-схемы. В ней указываются напряжение питания для каждого компонента и взаимосвязь между этими компонентами.

Детализированная блок-схема оборудования Chefbot
Детализированная блок-схема оборудования Chefbot

Основная цель этой статьи состоит в том, чтобы разработать аппаратное обеспечение для ChefBot со всеми аппаратными компонентами и изучить взаимосвязи между ними. Как уже говорилось ранее, основная задача этого робота – автономная навигация. Поэтому все аппаратное обеспечение оптимизировано на выполнение этой задачи.

Ходовая часть робота основана на системе дифференциального привода, состоящего из двух двигателей и двух колес. Для поддержки робота предусмотрены опорные колеса. Моторы перемещают робот в любом направлении в двухмерной плоскости, регулируя скорость перемещения и направление движения.

Для управления скоростью и направлением вращения колес используется драйвер двигателя. Выбранный нами драйвер двигателя одновременно управляет двумя двигателями, изменяя скорость вращения и направление вращения каждого двигателя.

Драйвер двигателя подключен к микроконтроллеру Tiva C Launch Pad, который вырабатывает команды для управления двигателями дифференциального привода. Драйвер двигателя взаимодействует с Launch Pad с помощью преобразователя напряжения, который преобразует напряжение от 3,3 до 5 В и наоборот. Мы используем этот преобразователь, потому что рабочее напряжение драйвера двигателя равно 5 В, а напряжение на контактах микроконтроллера LaunchPad равно 3,3 В.

Каждый двигатель оборудован встроенным датчиком обратной связи, вырабатывающим импульсы в зависимости от скорости и направления вращения вала двигателя. Этот датчик называется энкодером. Энкодер – датчик, преобразующий подконтрольную величину в электрический сигнал. Подсчитывая количество полученных от энкодера импульсов, можно высчитать количество оборотов, произведенных двигателем, и рассчитать текущее положение робота. Датчики подключаются к LaunchPad с помощью преобразователей напряжения.

Остальные датчики, такие как ультразвуковой датчик и IMU, также взаимодействуют с LaunchРad. Ультразвуковой датчик предназначен для обнаружения объектов, которые расположены рядом с роботом и которые не способен обнаружить сенсор IMU, для уточнения данных используется совместно с энкодерами. Все значения датчиков поступают на LaunchPad и отправляются через USB на бортовой ПК. LaunchPad получает все значения датчиков и отправляет их на обработку бортовому ПК.

Кроме LaunchPad, бортовой компьютер взаимодействует с Kinect, микрофоном и динамиком. На бортовом персональном компьютере установлен ROS, который получает данные с Kinect и преобразует их в данные, эквивалентные данным лазерного сканирования. С помощью этих данных SLAM создает карту окружающей среды. Динамик и микрофон используются для связи пользователя и робота.

Команды для управления двигателями, созданные в узлах ROS, отправляются на LaunchPad. После обработки в LaunchPad эти команды отправляются в широтно-импульсный модулятор и далее поступают на схему драйвера двигателей.

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

Итоги

В этой статье мы рассмотрели особенности конструкции разрабатываемого нами робота. Главная задача данного робота – это автономная навигация. Робот должен перемещаться в окружающей его среде, анализируя все препятствия с помощью данных, получаемых от датчиков. Нами были рассмотрены блок-схема и назначение каждого блока. Далее нами были выбраны необходимые компоненты, отвечающие всем техническим требованиям. Также были предложены альтернативные компоненты. В следующей статье «Согласование приводов и датчиков с контроллером робота» будет представлена более подробная информация о приводах, используемых в конструкции, и их взаимодействии.

За основу данной статьи взята книга Д. Лентина «Изучение робототехники с использованием Python» 

С Уважением, МониторБанк

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