Оглавление:

Стабилизатор ручной камеры: 13 шагов (с изображениями)
Стабилизатор ручной камеры: 13 шагов (с изображениями)

Видео: Стабилизатор ручной камеры: 13 шагов (с изображениями)

Видео: Стабилизатор ручной камеры: 13 шагов (с изображениями)
Видео: Стедикам за 1000р. Тех.обзор 2024, Июль
Anonim
Стабилизатор ручной камеры
Стабилизатор ручной камеры

Вступление

Это руководство по созданию 3-осевой портативной установки стабилизации камеры для GoPro с использованием платы разработки Digilent Zybo Zynq-7000. Этот проект был разработан для класса операционных систем реального времени CPE (CPE 439). Стабилизатор использует три сервопривода и IMU для коррекции движения пользователя, чтобы камера оставалась ровной.

Детали, необходимые для проекта

  • Плата для разработки Digilent Zybo Zynq-7000
  • Sparkfun IMU Breakout - MPU 9250
  • 2 сервопривода HiTec HS-5485HB (покупка движения на 180 градусов или программа от 90 до 180 градусов)
  • 1 сервопривод HiTec HS-5685MH (покупка движения на 180 градусов или программа от 90 до 180 градусов)
  • 2 стандартных кронштейна сервопривода
  • 1 макетная плата
  • 15 перемычек между мужчинами
  • 4 перемычки между мужчинами и женщинами
  • Горячий клей
  • Захват или ручка
  • Деревянный дюбель диаметром 5 мм
  • GoPro или другая камера и монтажное оборудование
  • Блок питания с выходом 5 В.
  • Доступ к 3D-принтеру

Шаг 1. Настройка оборудования Vivado

Настройка оборудования Vivado
Настройка оборудования Vivado

Начнем с создания базовой конструкции блока для проекта.

  1. Откройте Vivado 2016.2, щелкните значок «Создать новый проект» и нажмите «Далее>».
  2. Назовите свой проект и нажмите «Далее>».
  3. Выберите проект RTL и нажмите «Далее>».
  4. Введите в строку поиска xc7z010clg400-1, затем выберите деталь и нажмите «Далее>» и «Готово».

Шаг 2: Настройка блочного дизайна

Теперь мы начнем создавать дизайн блока, добавляя и настраивая IP-блок Zynq.

  1. На левой панели в разделе IP Integrator нажмите «Create Block Design», а затем «OK».
  2. Щелкните правой кнопкой мыши вкладку «Диаграмма» и выберите «Добавить IP…».
  3. Введите «ZYNQ7 Processing System» и щелкните выбор.
  4. Дважды щелкните появившийся блок Zynq.
  5. Нажмите «Импортировать настройки XPS» и импортируйте предоставленный файл «ZYBO_zynq_def.xml».
  6. Перейдите в «Конфигурация MIO» и выберите «Модуль прикладного процессора» и включите таймер 0 и сторожевой таймер.
  7. На той же вкладке в разделе «Периферийные устройства ввода-вывода» выберите ENET 0 (и измените раскрывающееся меню на «MIO 16.. 27», USB 0, SD 0, UART 1, I2C 0.
  8. В разделе «GPIO» отметьте GPIO MIO, сброс ENET, сброс USB и сброс I2C.
  9. Теперь перейдите к «Конфигурация часов». Выберите FCLK_CLK0 в PL Fabric Clocks. Затем нажмите «ОК».

Шаг 3: Создайте настраиваемый IP-блок PWM

Этот IP-блок позволяет плате посылать сигнал ШИМ для управления движением сервоприводов. Работа в значительной степени основана на учебнике Digitronix Nepal, который можно найти здесь. Была добавлена логика, чтобы замедлить тактовую частоту, чтобы импульс выводился с правильной скоростью. Блок принимает число от 0 до 180 и преобразует его в импульс от 750 до 2150 мкс.

  1. Теперь на вкладке «Инструменты» в верхнем левом углу нажмите «Создать и упаковать IP…» и нажмите «Далее».
  2. Затем выберите «Создать новое периферийное устройство AXI4» и нажмите «Далее».
  3. Назовите свой IP-блок PWM (мы назвали его pwm_core) и нажмите Next, а затем нажмите Next на следующей странице.
  4. Теперь нажмите «Редактировать IP» и нажмите «Готово». Это откроет новое окно для редактирования блока pwm.
  5. На вкладке «Источники» и в разделе «Источники дизайна» разверните pwm_core_v1_0 (замените pwm_core своим именем) и откройте файл, который станет видимым.
  6. Скопируйте и вставьте код из pwm_core_v1_0_S00_AXI.v в zip-файл внизу проекта. Ctrl + Shift + R и замените pwm_core своим именем блока ip.
  7. Затем откройте «name _v1_0» и скопируйте предоставленный код в файл «pwm_core_v1_0.v». Ctrl + Shift + R и замените pwm_core на имя.
  8. Теперь перейдите на вкладку «IP-адрес пакета» и выберите «Параметры настройки».
  9. На этой вкладке вверху будет желтая полоса со связанным текстом. Выберите это, и в поле появятся «Скрытые параметры».
  10. Теперь перейдите в «Настройка GUI» и щелкните правой кнопкой мыши на Pwm Counter Max и выберите «Редактировать параметр…».
  11. Установите флажки «Видно в пользовательском интерфейсе настройки» и «Указать диапазон».
  12. Измените раскрывающееся меню «Тип:» на «Диапазон целых чисел» и установите минимальное значение 0, а максимальное - 65535 и установите флажок «Показать диапазон». Теперь нажмите ОК.
  13. Перетащите Pwm Counter Max под дерево «Страница 0». Теперь перейдите в «Обзор и упаковка» и нажмите кнопку «Повторно упаковать IP».

Шаг 4: Добавьте IP-блок PWM в дизайн

Добавить IP-блок PWM в дизайн
Добавить IP-блок PWM в дизайн

Мы добавим IP-блок в конструкцию блока, чтобы пользователь мог получить доступ к IP-блоку PWM через процессор.

  1. Щелкните правой кнопкой мыши вкладку диаграммы и выберите «Настройки IP…». Перейдите на вкладку «Диспетчер репозитория».
  2. Нажмите зеленую кнопку с плюсом и выберите ее. Теперь найдите ip_repo в диспетчере файлов и добавьте его в проект. Затем нажмите «Применить», а затем «ОК».
  3. Щелкните правой кнопкой мыши вкладку диаграммы и выберите «Добавить IP…». Введите имя вашего IP-блока PWM и выберите его.
  4. В верхней части экрана должна появиться зеленая полоса, сначала выберите «Запустить автоматизацию подключения» и нажмите «ОК». Затем нажмите «Запустить автоматизацию блока» и нажмите «ОК».
  5. Дважды щелкните блок PWM и измените Pwm Counter Max на 1024 с 128.
  6. Наведите указатель мыши на PWM0 на блоке PWM. Когда вы это сделаете, должен появиться маленький карандаш. Щелкните правой кнопкой мыши и выберите «Создать порт…» и нажмите ОК, когда откроется окно. Это создает внешний порт для передачи сигнала.
  7. Повторите шаг 6 для PWM1 и PWM2.
  8. Найдите маленькую круглую иконку с двойной стрелкой на боковой панели и щелкните ее. Он восстановит макет, и ваш дизайн блока должен выглядеть как на картинке выше.

Шаг 5: Настройте HDL Wrapper и установите файл ограничений

Настроить оболочку HDL и установить файл ограничений
Настроить оболочку HDL и установить файл ограничений

Теперь мы собираемся сгенерировать дизайн высокого уровня для нашего блочного дизайна, а затем сопоставить PWM0, PWM1 и PWM2 с выводами Pmod на плате Zybo.

  1. Перейдите во вкладку «Источники». Щелкните правой кнопкой мыши файл дизайна блока в разделе «Источники дизайна» и выберите «Создать оболочку HDL…». Выберите «Копировать сгенерированную оболочку, чтобы пользователь мог редактировать» и нажмите «ОК». Это генерирует Высокоуровневый дизайн для созданного нами блочного дизайна.
  2. Pmod, в который мы будем выводить, - это JE.
  3. В разделе «Файл» выберите «Добавить источники…», выберите «Добавить или создать ограничения» и нажмите «Далее».
  4. Нажмите «Добавить файлы» и выберите включенный файл «ZYBO_Master.xdc». Если вы посмотрите в этот файл, вы заметите, что все не закомментировано, за исключением шести строк «set_property» под заголовком «## Pmod Header JE». Вы заметите, что аргументами для этих строк являются PWM0, PWM1 и PWM2. Они соответствуют контактам 1, 2 и 3 модуля JE Pmod.

Шаг 6: Генерация битового потока

Прежде чем мы продолжим, нам нужно сгенерировать поток битов для проектирования оборудования, чтобы экспортировать его в SDK.

  1. В разделе «Программа и отладка» на боковой панели выберите «Создать битовый поток». Это запустит синтез, затем реализацию, а затем сгенерирует битовый поток для дизайна.
  2. Исправьте все всплывающие ошибки, но предупреждения, как правило, можно игнорировать.
  3. Перейдите в File-> Launch SDK и нажмите OK. Это откроет Xilinx SDK.

Шаг 7. Настройка проекта в SDK

Эта часть может немного расстраивать. В случае сомнений сделайте новый BSP и замените старый. Это сэкономило нам кучу времени на отладку.

  1. Начните с загрузки последней версии FreeRTOS здесь.
  2. Извлеките все из загруженного и импортируйте FreeRTOS в SDK, нажав «Файл» -> «Импорт», а в разделе «Общие» нажмите «Существующие проекты в рабочую область», затем нажмите «Далее».
  3. Перейдите в «FreeRTOS / Demo / CORTEX_A9_Zynq_ZC702» в папке FreeRTOS. Импортируйте только "RTOSDemo" из этого места.
  4. Теперь сгенерируйте пакет поддержки платы (BSP), щелкнув Файл-> Новый пакет поддержки платы.
  5. Выберите «ps7_cortexa9_0», отметьте «lwip141» и нажмите «ОК».
  6. Щелкните правой кнопкой мыши синюю папку RTOSDemo и выберите «Ссылки на проект».
  7. Снимите флажок "RTOSDemo_bsp" и отметьте только что созданный новый BSP.

Шаг 8: Модификации кода FreeRTOS

Предоставляемый нами код можно разделить на 7 разных файлов. main.c, iic_main_thread.c, xil_printfloat.c, xil_printfloat.h, IIC_funcs.c, IIC_funcs.h и iic_imu.h. Код в iic_main_thread.c был адаптирован из библиотеки Криса Винера, которую можно найти здесь. В основном мы преобразовали его код, чтобы включить задачи и заставить его работать с доской Zybo. Мы также добавили функции для расчета коррекции ориентации камеры. Мы оставили несколько операторов печати, которые полезны для отладки. Большинство из них закомментированы, но если вы чувствуете необходимость, вы можете их раскомментировать.

  1. Самый простой способ изменить файл main.c - заменить код скопированным кодом из нашего включенного файла main.c.
  2. Чтобы создать новый файл, щелкните правой кнопкой мыши папку src в RTOSDemo и выберите C Source File. Назовите этот файл «iic_main_thread.c».
  3. Скопируйте код из включенного «iic_main_thread.c» и вставьте его во вновь созданный файл.
  4. Повторите шаги 2 и 3 с оставшимися файлами.
  5. требуется инструкция по связыванию в gcc. Чтобы добавить это в путь сборки, щелкните правой кнопкой мыши RTOSDemo и выберите «Параметры сборки C / C ++».
  6. Откроется новое окно. Перейдите в ARM v7 gcc linker-> Libraries. Выберите небольшой файл добавления в правом верхнем углу и введите «m». Это будет включать математическую библиотеку в проект.
  7. Создайте проект с помощью Ctrl + B, чтобы убедиться, что все работает. Проверьте генерируемые предупреждения, но вы можете их игнорировать.
  8. Есть пара мест, которые необходимо изменить, в основном это магнитное склонение вашего текущего местоположения. Мы объясним, как это изменить, в калибровочной части учебника.

Шаг 9: 3D-печать стабилизатора

3D-печать для стабилизатора
3D-печать для стабилизатора

Для этого проекта вам нужно напечатать на 3D-принтере пару деталей. Вероятно, можно будет купить детали, размеры / размеры которых аналогичны нашим печатным деталям.

  1. Используйте предоставленные файлы, чтобы распечатать кронштейн и кронштейн для GoPro.
  2. Вам нужно добавить строительные леса в файл.stl.
  3. Обрежьте / очистите части лишних лесов после печати.
  4. При желании вы можете заменить деревянный дюбель деталью, напечатанной на 3D-принтере.

Шаг 10: Сборка деталей

Сборка деталей
Сборка деталей

Это несколько частей для сборки стабилизатора. В купленные кронштейны входят 4 самореза и 4 болта с гайками. Поскольку имеется 3 сервопривода, на одном из рупоров сервопривода необходимо предварительно нарезать резьбу, чтобы через него прошли 2 болта.

  1. Припаяйте 8 контактов к разъему IMU, по 4 с каждой стороны.
  2. IMU прикреплен к 3D-печатному держателю для GoPro в центре кронштейна.
  3. Сориентируйте кронштейн так, чтобы монтажные отверстия сервопривода находились слева от вас. Поместите IMU на ближайший к вам край так, чтобы штифты свисали с края. Затем поместите крепление GoPro поверх IMU, прикрепив IMU и крепление к кронштейну.
  4. Прикрепите HS-5485HB к кронштейну сервопривода, который встроен в напечатанный на 3D-принтере рычаг.
  5. Вкрутите кронштейн GoPro в сервопривод, прикрепленный к руке, убедившись, что сервопривод установлен так, что он находится в середине диапазона его движения.
  6. Затем прикрепите сервопривод HS-5685MH к кронштейну сервопривода. Затем постучите по рожку сервопривода одним из винтов. Теперь прикрепите сервопривод к нижней части последнего кронштейна сервопривода.
  7. Теперь прикрепите последний сервопривод к кронштейну, в который ввинчивается сервопривод HS-5685MH. Затем ввинтите рычаг в сервопривод, убедившись, что рычаг прикручен так, чтобы он мог поворачиваться на 90 градусов в каждую сторону.
  8. Чтобы завершить сборку стабилизатора, добавьте небольшой кусок деревянного дюбеля, чтобы соединить кронштейн GoPro и напечатанный на 3D-принтере рычаг. Вы собрали стабилизатор.
  9. Наконец, вы можете добавить ручку, соединенную с нижним кронштейном сервопривода.

Шаг 11: подключение Zybo к стабилизатору

Подключение Zybo к стабилизатору
Подключение Zybo к стабилизатору

При этом следует остерегаться нескольких вещей. Вы должны быть уверены, что 5 В от источника питания никогда не попадут на плату Zybo, так как это может привести к проблемам с платой. Не забудьте дважды проверить свои перемычки, чтобы убедиться, что провода не переключаются.

  1. Чтобы прикрепить Zybo к стабилизатору, вам понадобится 15 прыгунов между мужчинами и женщинами.
  2. Сначала подключите две перемычки к источнику питания 5 В вдоль шин + и - макета. Они будут подавать питание на сервоприводы.
  3. Затем подключите 3 пары перемычек к шинам + и - макетной платы. Это будет мощность для каждого из сервоприводов.
  4. Другой конец перемычек + и - вставьте в каждый из сервоприводов.
  5. Подключите перемычку между шиной - макета и одним из выводов GND на Zybo JE Pmod (см. Рисунок шага 5). Это создаст общую землю между платой Zybo и источником питания.
  6. Затем подключите сигнальный провод к контактам 1, 2 и 3 модуля JE Pmod. Контакт 1 отображается на нижний сервопривод, контакт 2 отображается на сервопривод на конце рычага, а контакт 3 отображается на средний сервопривод.
  7. Подключите 4 розетки к контактам GND, VDD, SDA и SCL коммутационного блока IMU. GND и VDD подключаются к GND и 3V3 на контактах JF. Вставьте штырь SDA в штырь 8, а SCL в штырь 7 на JF (см. Изображение шага 5).
  8. Наконец, подключите компьютер к плате с помощью кабеля micro USB. Это позволит соединиться через uart и запрограммировать плату Zybo.

Шаг 12: Коррекция истинного севера

Коррекция истинного севера
Коррекция истинного севера

Калибровка магнитометра в IMU важна для правильной работы устройства. Магнитное склонение, которое корректирует магнитный север на истинный север.

  1. Чтобы исправить разницу между магнитным и истинным севером, вам необходимо использовать комбинацию двух сервисов, Google Maps и калькулятора магнитного поля NOAA.
  2. Используйте Карты Google, чтобы определить широту и долготу вашего текущего местоположения.
  3. Возьмите текущую долготу и широту и подключите их к калькулятору магнитного поля.
  4. Возвращается магнитное склонение. Вставьте это вычисление в код в строке 378 файла «iic_main_thread.c». Если ваше склонение на восток, вычтите из значения рыскания, если на запад, добавьте к значению рыскания.

* фотография была взята из руководства по подключению MPU 9250 от Sparkfun, которое можно найти здесь.

Шаг 13: Запуск программы

Запуск программы
Запуск программы

Момент, которого вы так долго ждали! Лучшая часть проекта - видеть, как он работает. Одна проблема, которую мы заметили, заключается в отклонении от значений, сообщаемых IMU. Фильтр нижних частот может помочь исправить этот дрейф, и возня с магнитометром, калибровкой ускорения и гироскопа также поможет исправить этот дрейф.

  1. Сначала соберите все в SDK, это можно сделать, нажав Ctrl + B.
  2. Убедитесь, что источник питания включен и установлен на 5 В. Дважды проверьте правильность расположения всех проводов.
  3. Затем, чтобы запустить программу, нажмите зеленый треугольник в верхнем центре панели задач.
  4. Когда программа запускается, все сервоприводы сбрасываются в свои нулевые положения, поэтому будьте готовы к перемещению установки. После инициализации программы сервоприводы вернутся в свое положение на 90 градусов.
  5. Будет запущена функция калибровки магнитометра, и направления будут распечатаны для терминала UART, к которому вы можете подключиться через последовательный монитор, такой как «замазка» или последовательный монитор, предоставленный в SDK.
  6. Калибровка заставит вас переместить устройство в виде цифры 8 примерно на 10 секунд. Вы можете удалить этот шаг, закомментировав строку 273 файла «iic_main_thread.c». Если вы закомментируете это, вам нужно раскомментировать строки 323–325 «iic_main_thread.c». Эти значения были первоначально получены из калибровки магнитометра, описанной выше, а затем вставлены в качестве значений.
  7. После калибровки код стабилизации инициализируется, и устройство будет поддерживать стабильность камеры.

Рекомендуемые: