Малює робот

  • Час 25-08-2015, 16:58
  • Автор admin
  • Коментарів 0 Комент.
  • Силка url

Даний проект головним чином призначений для початківців радіоаматорів і дозволяє використовувати мікроконтролер arduino, засіб створення коду matlab і механічні компоненти, а також невелика кількість електронних елементів. Робот має механічну руку з 2 ступенями свободи і маніпулятором ручкою. У проекті використовується додаток інверсної кінематики і ефективний засіб виявлення контурів зображення.

Малює робот
Малює робот
Малює робот

1. Механічні компоненти

  • Набір Mechanix kit
  • Гайка і гвинти
  • Тримач ручки (прищіпка)
  • 2X коліщатка

2. Електронні компоненти

  • Модуль Arduino uno
  • Друкована плата або макетна плата
  • Джерело живлення (адаптер напругою 5В і струмом 2А)
  • USB кабель

3. Сервомотори

  • Сервомотори

4. Інструменти

  • Паяльник
  • Дротяний припій
  • Викрутка
  • Дриль

5. Програмне забезпечення

  • Середовище розробки Arduino IDE
  • Matlab (спільно з Arduino IO)

Всі вищевказані компоненти легко знайті у місцевому магазині радіокомпонентів.

Для проекту потрібно використовувати сервомотори з обертовим моментом 7кг / див. У разі використання макетної плати нам не буде потрібно паяльник і припій.

Малює робот

Малює робот

Малює робот

На малюнку вище показано приблизна конструкція даного робота та етапи її складання. Це схоже на гру з конструктором, коли вам було 5-6 років. Тепер більш детально розглянємо покрокову інструкцію збірки робота.

  1. Просвердлите два відчини в кожній плоскою шайбі так, щоб відстань між цими отворами було однаковим для всіх шайб, як показано на малюнку вище.
  2. Тепер ми повинні виготовити жорстку опору для одного кінця. Просвердлите чотири відчини на відповідній відстані для гвинтів сервомотора і прикріпіть сервомотор до квадратної стійці. Ми використовуємо дану конструкцію для створення жорсткої опори, необхідної в процесі установки.
  3. Підключіть дві алюмінієві пластини з конструктора до двох будь-яким шайб, як показано на малюнку так, щоб відстань між двома шайбами здатність становило близько 20 див.
  4. Тепер прикріпіть одну шайбу до сервомоторами з жорсткою опорою, і одного до іншого сервомоторами. Далі перед остаточним закріпленням шайб відкалібруйте сервомотори на кут повороту 90 градусів так, щоб сервомотор з жорсткою опорою розташовувався паралельно до пластин і вільний кінець сервомотора знаходився перпендикулярно до нього.
  5. Тепер візьміть найдовші пластини (довжиною 15 см) з конструктора і прикріпіть їх до нижнього кінця вільного кінця сервомотора паралельно йому.
  6. Потім прикріпіть коліщатка до нижньої частини механічної руки з ручкою, яку ми витворили на 5 кроці, для створення надійного рівноваги і опори.
  7. Останній сервомотор необхідно прикріпити до кінцевий точці кроку 5 за допомогою клею feviquick або пістолета для склеювання, щоб створити жорстку конструкцію.
  8. Разом з пластиною відповідної довжини і прищіпкою прикріпіть ручку до сервомоторами так, щоб відстань від вільного кінця плоскою шайби і кінчика ручки здатність становило близько 20 див.

При конструюванні робота необхідно враховувати вищевказане відстань величиною 20 см і правильність проведення калібрування. Частина, що залишилася конструкції залежить від доступності інших компонентів і вашого бажання. Наприклад, замість алюмінієвих пластин з конструктора можна використовувати лінійки для створення механічної руки і т. д.

Малює робот

На фото вище показана схема підключення використовуваних компонентів, які можна підключити як щит для arduino або використовувати для їх з'єднання єднання макетну плату.

Малює робот

Малює робот

Це найбільш цікава і важлива частина даного проекту.

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

Етап 1: З початку ми знаходимо піксель, позначений як логічна одиниця, оскільки тепер наше зображення складається з логічних нулів і одиниць, і далі перевіряємо навколишні його локальні пікселі, чи є який-небудь з них також логічною одиницею. Потім ручка досягає цей піксель і попередня логічна одиниця видаляється. Функція повторюється рекурсивно і створює плавні лінії.

Етап 2: На другому етапі використовується інверсна кінематика для досягнення необхідного конкретного пікселя. Нам потрібно знаті координати пікселя і обчислити відповідні кути для осей обертання; формули розрахунку показані на малюнку вище.

Вищевказане пояснення не використовується для виконання програмного коду, а служити для загального розуміння.

Тепер потрібно налаштування Matlab і arduino для виконання програмного коду.

Спочатку встановіть пакет arduino IO package для matlab (всі інструкції вказані разом з пакетом програм).

Далі замініть файл arduino.m на завантажений файл із цим же ім'я ям.

Скачати й зберегти finaldraw.m і draw.m в директорії matlab.

Завантажте файл adioes.ino, який був завантажений раніше, в модуль arduino.

Подивіться, який з портів вашого arduino підключений, далі перейдіть до файлу finaldraw.m і змініть COM3 на ваш порт.

Змініть розширення зображення, яке ви хочете намалювати, на * .png. Це можна зробити в будь-якому редакторі зображень. Далі збережіть зображення у директорії matlab. Відкрийте файл finaldraw.m і замініть файл emma.png на ваше зображення з розширенням .png. Збережіть файл finaldraw.m.

Як приклад було завантажено зображення Еммі Уотсон, тому ви можете його використовувати в процесі тестування. Також ви можете змінити параметри функції виявлення контурів зображення у відповідності зі своїми вимогами.

Тепер підключіть arduino до вашого ПК, включіть джерело живлення і введіть finaldraw в командному рядку matlab. Насолоджуйтесь процесом малювання зображення !!!

Якщо у вас виникли будь-які проблеми, тоді ознайомитеся з шагом 5.

Крок 5: Опис програмного коду

Малює робот

Нижче описується алгоритм малювання зображення.

Спочатку я перетворив зображення, яке необхідно намалювати, у формат png, використовуючи редактор зображень, далі я зберіг зображення в директорії matlab. Після цього наш алгоритм перетворює дані зображення, використовуючи функцію виявлення контурів зображення, як було показано на зображенні вище. Найзагадковіша частина проекту - це процес малювання даного зображення.

Принцип роботи алгоритму наступний: спочатку починається перевірка пікселів відконвертовано зображення і коли перебуває одиниця (1), яка позначається як білий піксель на зображенні вище, то кінчик ручки досягає цієї точки (процес досягнення цієї точки писань раніше) і опускається вниз, далі перевіряються сусідні 8 пікселів, і якщо виявляється одиниця, то ручка досягає цієї точки без підняття кінчика вгору і видаляє попередній піксель, щоб уникнути повторень. Цей процес триває, поки в оточенні вже не виявляється логічна одиниця (це рекурсивна функція), ручка малює плавну лінію і видаляє її «логічну складову» одночасно. Далі відбувається відтворення інших відгалужень ліній, які з'єднання є з намальованою лінії, оскільки йде перевірка шкірного сусіднього пікселя. Даний алгоритм створює повне зображення.

Tags

Коментарі до новини