малює робот

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

Крок 1: Використовувані компоненти, інструменти та програмне забезпечення

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

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

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

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

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

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

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

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

Крок 2: Механічна конструкція

малює робот

малює робот

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

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

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

Крок 3: Електронні компоненти

малює робот

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

Крок 4: Програмний код

малює робот

малює робот

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

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

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

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

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

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

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

Далі замініть файл arduino.m на долучення до цього ж ім'ям.

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

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

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

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

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

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

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

малює робот

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

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

Прикріплені файли:

Схожі статті