Регистрация данных с помощью мозга VEX и датчиков с использованием Python

Введение

В этой статье мы обсудим, как создать проект регистрации данных, который предписывает роботу VEX собирать данные с помощью VEX Brain и сохранять их в файле CSV на SD-карте для анализа данных.

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

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

Навыки кодирования, необходимые для разработки проекта регистрации данных

  • Используйте различные команды для сбора данных с помощью VEX Brain/Sensors и добавления их в структуру данных.
  • Запишите данные в файл значений, разделенных запятыми (CSV) на SD-карте.

Оборудование, необходимое для регистрации данных:

  • Мозг VEX (IQ, V5, EXP)
  • SD-карта
  • Датчик или несколько датчиков (опционально, в зависимости от необходимых данных)

Получение данных от датчика

Мы можем запрограммировать робота VEX (IQ, V5, EXP) для сбора данных со следующих датчиков:

  • Инерционный датчик
  • Датчик расстояния
  • Оптический датчик
  • Датчик зрения
  • Датчик вращения (V5, EXP)
  • GPS-датчик (V5)

Примечание: Мозг VEX IQ (2-го поколения) и Мозг VEX EXP имеют встроенный инерционный датчик. Мы можем собирать данные инерционного датчика с помощью этих мозгов VEX.

В этой статье мы разработаем проект регистрации данных, который собирает данные об ускорении с помощью VEX IQ Brain (2-го поколения) и сохраняет их на SD-карту. 

Во-первых, нам нужно написать короткую программу для получения показаний таймера и инерционного датчика, встроенных в мозг VEX IQ (2-го поколения).

  • В начале этой программы нам нужно будет импортировать модули Python для управления VEX IQ Brain (2-го поколения) и получить из него данные. Итак, начните с добавления этих инструкций в проект.

    Схема, иллюстрирующая компоненты и функции робота V5, используемая в учебных пособиях по Python для образовательных целей по робототехнике.

  • Затем добавьте код для объявления переменной numOfDataEntries для хранения количества записей данных для записи, объявите переменную polling_delay_msec для хранения значения временного интервала для чтения данных и создайте пустую строковую переменную data_buffer для хранения данные, считанные с датчика.

    Схема, иллюстрирующая, как сохранять данные, считанные с датчика в VEX V5, с использованием Python, с фрагментами кода и визуальными представлениями потока данных и методов хранения.

  • Поскольку мы будем использовать текущее значение таймера для добавления отметки времени к данным, нам необходимо сбросить значение таймера обратно на 0 секунд, прежде чем начать сбор данных.

    Снимок экрана, показывающий процесс сброса таймера VEX V5 на Python, иллюстрирующий, как установить значение таймера обратно на 0 секунд перед сбором данных.

  • Прежде чем использовать инструкцию, которая извлекает данные из VEX IQ Brain (2nd) и записывает данные в буфер, нам необходимо сначала понять ее.
    Следующая инструкция добавляет текущее значение таймера к переменной data_buffer в определенном формате.

    Диаграмма, иллюстрирующая формат переменной в Python, используемая в описании категории V5 в руководствах по Python, показывающая структуру и компоненты переменной.

    Давайте разберем строку формата «%1.3f»

    • «%»: представляет спецификатор преобразования.
    • «1»: указывает минимальное количество цифр, которое должно присутствовать в строке.
    • «.3»: указывает количество десятичных знаков, включаемых в форматируемое число.
    • «f»: указывает, что форматируемое значение представляет собой число с плавающей запятой.

    Таким образом, мы можем использовать строку формата «%1.3f» для форматирования числа с плавающей запятой с минимальной шириной в 1 цифру и точностью до 3 десятичных знаков.

  • Теперь мы можем прочитать значение таймера и ускорения инерционного датчика, встроенного в мозг VEX IQ (2-го поколения), а затем добавить данные в переменную data_buffer в указанном формате.

    Диаграмма, иллюстрирующая формат переменных в Python, часть описания категории V5 в разделе «Учебники по Python». Изображение наглядно демонстрирует структуру и использование переменных в программировании на Python.

    Примечание: «\n» — это символ новой строки. Это указывает на то, что линия заканчивается здесь и начинается новая строка.

  • Затем, чтобы записать определенное количество записей данных в переменную data_buffer , мы можем использовать цикл for для многократного выполнения инструкций, которые извлекают данные и добавляют данные в переменную data_buffer для нескольких итераций. Наша стратегия — использовать значение переменной numOfDataEntries для определения количества итераций.

    График, иллюстрирующий количество итераций в учебнике VEX V5 Python, показывающий точки данных и тенденции, связанные с итерациями программирования в робототехнике.

  • Пока что наша программа записывает данные настолько быстро, насколько это возможно. Однако мы хотим записывать данные через определенные промежутки времени. Следовательно, мы можем использовать функцию wait() в цикле for , чтобы приостановить программу и добавить определенный интервал времени между двумя показаниями. Мы используем значение переменной polling_delay_msec для определения значения временного интервала.

    График, иллюстрирующий процесс определения значения временного интервала в Python, демонстрирующий ключевые переменные и их взаимосвязи. Соответствует руководствам по Python V5.

Поздравляем! Мы завершили программу получения показаний (данных об ускорении) от инерционного датчика, встроенного в мозг VEX. Далее мы рассмотрим, как записать данные в файл CSV на SD-карте.

Диаграмма, иллюстрирующая структуру категорий V5 для учебных пособий по Python, показывающая ключевые компоненты и взаимосвязи в экосистеме VEX Robotics.




Подключение SD-карты к VEX Brain

Прежде чем записывать данные в файл на SD-карте, сначала вставьте SD-карту в слот для SD-карты VEX Brain.

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

Примечание: Отформатируйте SD-карту в FAT32 для записи данных. Мы рекомендуем использовать SD-карты объемом 32 ГБ или меньше.

Чтобы гарантировать, что запись данных в файл на SD-карте может выполняться при соответствующих условиях, нам нужно будет добавить код, проверяющий, правильно ли вставлена ​​SD-карта в VEX IQ Brain (2-го поколения).

  • Используйте функцию () , чтобы проверить, вставлена ​​ли SD-карта. Если SD-карта не вставлена, отобразите соответствующее сообщение на экране VEX IQ Brain Screen и удерживайте программу.

    Screenshot of VEX IQ Brain screen displaying a message indicating that the SD card is not inserted, with instructions for holding the program. Relevant to Python tutorials in the V5 category.


    Примечание: brain.sdcard.is_inserted() функция возвращает True, если SD-карта вставлена в Brain.

Запись данных в файл CSV на SD-карте.

На данный момент наша программа может собирать данные с помощью VEX IQ Brain (2-го поколения). Чтобы завершить проект регистрации данных, нам необходимо записать данные в файл значений, разделенных запятыми (CSV) на SD-карте для дальнейшего изучения и анализа.

  • При записи различных типов данных в файл CSV мы хотим знать, какой тип данных содержит каждый столбец. Для этого мы можем добавить текст заголовка CSV к переменной data_buffer перед записью данных.
    Таким образом, добавьте код для объявления переменной csvHeaderText для хранения текста заголовка CSV, чтобы указать имена столбцов для файла CSV, и объявите переменную sd_file_name для хранения имени файла CSV для записи в SD Card.

    Диаграмма, иллюстрирующая описание категории V5 для руководств по Python, демонстрирующая ключевые компоненты и их взаимосвязи в визуальном формате.

Примечание: Убедитесь, что заголовки расположены в том же порядке, что и данные, хранящиеся в переменной data_buffer.

  • Затем добавьте текст заголовка CSV к строке data_buffer перед строкой for цикла для сбора данных.

    Диаграмма, иллюстрирующая среду программирования Python V5, демонстрирующая ключевые компоненты и их функции, соответствующие описанию категории V5 и руководствам по Python.

  • Прежде чем записывать данные в файл на SD-карте, давайте сначала разберемся, как использовать функцию Brain.sdcard.savefile().

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


    Эта инструкция записывает данные, хранящиеся в переменной data_buffer , в именованный файл CSV на SD-карте.
    Давайте разберем:
    • Brain.sdcard.savefile(): функция сохраняет массив байтов в именованный файл на SD-карте. Функция возвращает количество байт, записанных в файл.

    • sd_file_name: первый параметр функции. Указывает имя файла для записи. В этом проекте имя файла хранится в переменной sd_file_name.

    • bytearray(datat_buffer,'utf-8'): второй параметр функции. Представляет массив байтов, который будет записан в файл.

        • bytearray(): метод создает изменяемый байтовый массив. В этой инструкции мы используем ее для преобразования строки в массив байтов, указав кодировку.
        • data_buffer: первый параметр метода. Указывает источник, который необходимо преобразовать в байтовый массив. В этом проекте источником являются данные, хранящиеся в переменной data_buffer. 
        • 'utf-8': второй параметр метода. Указывает указанную кодировку, используемую для кодирования строки. В этой инструкции используется кодировка «utf-8». 
  • После для цикла для сбора данных используйте функцию Brain.sdcard.savefile() , чтобы записать данные, хранящиеся в переменной data_buffer , в файл CSV на SD-карте. Кроме того, добавьте код для проверки возвращаемого значения из функции brain.sdcard.savefile() , чтобы убедиться, что данные были успешно записаны в файл, и отобразить соответствующее сообщение на экране VEX IQ Brain Screen, чтобы получить обратную связь в реальном времени.

    Diagram illustrating the V5 robot's components and their functions, used in Python tutorials for educational purposes.


    Примечание: Функция brain.sdcard.savefile() возвращает количество байтов, записанных в файл. В этом проекте мы используем его для записи собранных данных в файл CSV, поэтому количество байтов, записываемых в файл, должно быть больше нуля. Другими словами, если функция Brain.sdcard.savefile() возвращает 0, мы можем сделать вывод, что данные не были успешно записаны в файл. В противном случае данные были записаны в файл.

Поздравляем! Мы разработали проект регистрации данных, который собирает данные об ускорении с помощью VEX IQ Brain (2-го поколения) и сохраняет их в файл CSV на SD-карте. Далее мы рассмотрим, как открыть файл CSV для анализа данных. 

Схема, иллюстрирующая компоненты робота V5 и их функции, используемая в учебных пособиях по программированию робототехники VEX на языке Python. Изображение дает учащимся наглядное представление о настройке оборудования.

Открытие файла CSV для анализа данных

После того, как данные записаны в файл CSV на SD-карте, мы можем использовать приложение для работы с электронными таблицами, чтобы открыть файл для чтения и анализа данных. 

Примечание. Два наиболее распространенных приложения для работы с электронными таблицами — это Google Sheets и Microsoft Excel. В этой статье мы будем использовать Google Таблицы (веб-интерфейс), чтобы открыть файл CSV на SD-карте. Процесс использования других приложений аналогичен.

  • Извлеките SD-карту из слота SD-карты VEX IQ Brain. Если в компьютере есть встроенный слот для карты Micro SD, мы можем вставить SD-карту непосредственно в этот слот. В противном случае вставьте SD-карту в адаптер SD-карты, а затем подключите адаптер к компьютеру. 
  • Войдите в нашу учетную запись Google и откройте Google Таблицы. Создайте новую электронную таблицу.
  • В электронной таблице откройте меню «Файл» , выберите «>» «Загрузить» кнопку «> Обзор» , затем выберите файлна компьютере. После загрузки CSV-файла нажмите кнопку «Импортировать данные». После импорта данных нажмите «Открыть сейчас» чтобы просмотреть собранные данные в файле CSV.

    Обзорное изображение учебника VEX V5 Python, иллюстрирующее ключевые концепции и ресурсы для программирования с использованием робототехники VEX.

  • (Необязательно) Один из простых способов анализа данных — нарисовать график, а затем найти тенденции в данных. В электронной таблице откройте меню «Вставить» и выберите «Диаграмма» , чтобы построить график, используя данные из файла CSV. Следующий график является результатом данных об ускорении, собранных с помощью VEX IQ Brain (2-го поколения).

    Diagram illustrating the V5 Python tutorial structure, showcasing various components and their relationships in a clear and organized manner, designed to aid users in understanding the programming framework for VEX robotics.


    Примечание: Мы можем использовать редактор диаграмм для выбора другого типа диаграммы или редактирования диаграммы в соответствии с нашими потребностями.

На данный момент мы завершили проект регистрации данных, который собирает данные с помощью VEX IQ Brain (2-го поколения) и сохраняет их в файле CSV на SD-карте. Также мы научились читать CSV-файл на SD-карте с помощью Google Sheets и даже создавать график для дальнейшего анализа. Что дальше? Давайте попробуем спланировать более увлекательные эксперименты с использованием робота VEX для регистрации данных, чтобы понаблюдать, как изменяющиеся факторы окружающей среды влияют на различные типы данных, и получить более глубокое понимание окружающего нас мира.

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: