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

Smart Pen: Отслеживание почерка и движений в реальном времени с Raspberry Pi и IMU

Введение

В современную цифровую эру захват рукописного ввода обычно требует емкостных сенсорных экранов или стилусов. Хотя они точны, эти решения ограничены требованиями к поверхности и лишены истинной пространственной свободы. Наш Smart Pen устраняет эти ограничения, сочетая Raspberry Pi с инерциальным измерительным блоком (IMU) для отслеживания движения и мгновенной реконструкции траекторий. Система опирается исключительно на гироскоп и акселерометр IMU, передавая данные беспроводно на Pi. Пользовательские алгоритмы затем восстанавливают ориентацию и позицию устройства, сохраняют данные и визуализируют их в реальном времени на TFT-дисплее Pi через pygame. Одиночная кнопка запускает и останавливает запись, позволяя гибкое использование на ручках, роботах или носимых приложениях. Этот подход дает универсальное, не зависящее от поверхности решение для захвата почерка, анализа движений и не только.

Цель

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

Калибровка IMU

Производственные толерантности часто дезалинируют оси акселерометра и гироскопа IMU, приводя к расхождениям в вычисленных углах Эйлера. Мы применяем шестипозиционную калибровочную рутину для cuantificación и коррекции этих смещений. Кастомная калибровочная приспособность (Рисунок XX) держит IMU в каждой ориентации, записывая сырые показания сенсоров. Калибровочная матрица, полученная из этих шести измерений, затем применяется к каждому измерению акселерометра:

\[\mathbf{A}_{\text{cal}} = \begin{bmatrix}A_x\\A_y\\A_z\end{bmatrix}, \quad \mathbf{a}_{\text{raw}} = \begin{bmatrix}a_x\\a_y\\a_z\end{bmatrix}\]

После калибровки скорректированный вектор ускорения \(\mathbf{A}_{\text{cal}}\) заменяет сырые данные для дальнейшей обработки.

Сенсорный фьюжн для сырых данных

Для получения надежной оценки ориентации мы фьюзим выходы гироскопа и акселерометра с использованием кватернионной математики. Кватернионы предлагают сингулярности-свободное представление вращения и упрощают векторные трансформации. Преобразование между кватернионом \(q\) и углами Эйлера \((\alpha,\beta,\gamma)\) задается:

\[\displaystyle q = \cos\frac{\theta}{2} + \sin\frac{\theta}{2}\bigl(\cos\alpha\,\mathbf{i} + \cos\beta\,\mathbf{j} + \cos\gamma\,\mathbf{k}\bigr)\]

Для фиксированного вектора \(\mathbf{V} = V_x\mathbf{i} + V_y\mathbf{j} + V_z\mathbf{k}\), кватернионное вращение выполняется как \(\mathbf{V}' = q \circ \mathbf{V} \circ q^{-1}\).

Поскольку гироскоп одиноко дрейфует во времени, мы постоянно корректируем его смещение, сравнивая измеренный вектор гравитации от акселерометра с гироскопо-производной оценкой гравитации. Рутина UpdateIMU выполняет 2000 итераций пока сенсор неподвижен, строя пропорционально-интегральный (PI) цикл обратной связи, минимизирующий угловую ошибку. Ядро алгоритма показано ниже:

def UpdateIMU(self, Gyr, Acc):
    if np.linalg.norm(Acc) == 0:
        warnings.warn("Accelerometer magnitude is zero. Algorithm update aborted.")
        return
    Acc = np.array(Acc / np.linalg.norm(Acc))
    v = np.array([[2*(self.q[1]*self.q[3] - self.q[0]*self.q[2])],
                  [2*(self.q[0]*self.q[1] + self.q[2]*self.q[3])],
                  [self.q[0]**2 - self.q[1]**2 - self.q[2]**2 + self.q[3]**2]])
    error = np.cross(v, np.transpose([Acc]), axis=0)
    self.IntError += error
    Ref = Gyr - np.transpose(self.Kp*error + self.Ki*self.IntError)
    pDot = 0.5 * self.quaternProd_single(self.q, [0, Ref[0,0], Ref[0,1], Ref[0,2]])
    self.q += pDot * self.SamplePeriod
    self.q /= np.linalg.norm(self.q)
    self.Quaternion = self.quaternConj(self.q)

Скорректированные данные гироскопа (Ref) подаются в обновление кватерниона, давая стабильную оценку ориентации, которая питает реконструкцию траектории, отображаемую на Pi.

Читать далее: Smart Pen: Final Project for ECE5725

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

  1. Идеи сенсорных проектов для выпускников инженерных специальностей
  2. Умное производство 2021: 10 الناشивающих трендов, меняющих производство
  3. Умное освещение: краеугольный камень по-настоящему связанного города
  4. Журнал проекта FirePick Delta: создание открытого микрозавода с OpenPnP
  5. Робот «Уходи!» — простой стартовый набор Arduino для детей
  6. Health Band: умный браслет для мониторинга пожилых людей на Arduino Nano и DPS310
  7. Топ умных домашних апгрейдов для модернизации вашего жилого пространства
  8. Максимизация ROI в умном производстве: окупаемость и успех на основе данных
  9. Революционный ультратонкий сенсор расширяет функциональность умных контактных линз
  10. Выбор правильного проекта автоматизации: стратегическое руководство