Словарь терминов (Pybricks)

Короткий справочник по базовым терминам, которые часто встречаются в робототехнике и в Pybricks.

Колонка "Где в Pybricks" показывает, в каком модуле/классе/методе это обычно используется.

Основы программирования (Python в Pybricks)

Термин Что это значит Где в Pybricks
Алгоритм Пошаговый план действий программы для решения задачи (например: поехать, измерить, повернуть, остановиться). Это не отдельный объект Pybricks; алгоритм пишется обычным Python-кодом в ваших .py файлах
Цикл Повторение блока кода несколько раз или пока выполняется условие. Python: for, while (используется в программах на Pybricks повсюду)
Итерация Один проход цикла. Любой for / while в Python-коде
Бесконечный цикл Цикл, который работает постоянно, пока программа не остановлена. Обычно while True: (часто с wait(...), чтобы не перегружать CPU)
Условие Проверка True/False, от которой зависит поведение программы. Python: if, elif, else; часто с данными датчиков
Ветвление Выбор одного из нескольких путей выполнения по условию. Python: if / elif / else
Переменная Имя для хранения данных (числа, текста, состояния, показаний датчика и т.д.). Обычный Python (distance = drive_base.distance())
Логический тип (bool) Тип данных с двумя значениями: True или False. Часто используется в условиях и флагах состояния. Обычный Python (if drive_base.done(): ...)
Функция Переиспользуемый блок кода с именем. Помогает не дублировать действия. Python: def ...; см. docs/func.md
Параметр Имя переменной в определении функции. Python: def drive_distance(distance_mm, speed):
Аргумент Конкретное значение, которое передают в функцию при вызове. Python: drive_distance(500, 200)
Возврат значения (return) Команда, которая возвращает результат из функции. Python: return; часто для обработки показаний датчиков
Класс (class) Шаблон/тип объекта, который описывает данные и методы. Python и API Pybricks: Motor, DriveBase, PrimeHub и т.д.
Объект (экземпляр) Конкретный созданный экземпляр класса. left_motor = Motor(...), drive_base = DriveBase(...)
Метод Функция, принадлежащая объекту/классу. drive_base.straight(...), motor.run(...)
Модуль Файл/библиотека с кодом, который можно импортировать. import / from ... import ..., например from pybricks.tools import wait
Импорт Подключение модуля, класса или функции в текущий файл. Python: import, from ... import ...
Конечный автомат (FSM, state machine) Способ организации логики, где робот находится в одном из состояний и переключается между ними по условиям. Пользовательская логика на Python (часто полезно в сложных миссиях)

Базовые объекты Pybricks (для чтения примеров)

Термин Что это значит Где в Pybricks
Хаб (Hub) "Мозг" робота: запускает программу, содержит IMU, кнопки, дисплей/индикаторы (зависит от модели). PrimeHub, InventorHub, TechnicHub и др.
Порт (Port) Разъем хаба, к которому подключают моторы и датчики. pybricks.parameters.Port
Направление мотора (Direction) Указывает, какое вращение считать положительным для конкретной установки мотора. pybricks.parameters.Direction, Motor(..., Direction.CLOCKWISE/COUNTERCLOCKWISE)
Задержка (wait) Пауза в коде (в миллисекундах), полезна в циклах опроса датчиков. pybricks.tools.wait(ms)

Датчики и ориентация

Термин Что это значит Где в Pybricks
Датчик Устройство, которое измеряет что-то из окружающей среды или состояния робота (цвет, расстояние, сила, угол, скорость и т.п.). pybricks.pupdevices (ColorSensor, UltrasonicSensor, ForceSensor), а также IMU в PrimeHub
Гироскоп Датчик угловой скорости. Помогает понимать, как робот поворачивается. В составе IMU хаба: PrimeHub().imu; также используется через DriveBase.use_gyro()
IMU Инерциальный модуль (обычно включает гироскоп и акселерометр). Дает данные об ориентации/движении хаба. PrimeHub().imu
Акселерометр Часть IMU, измеряет ускорение. Полезен для оценки наклона/рывков/движения. PrimeHub().imu
Ориентация (orientation) Как повернут робот/хаб в пространстве. В плоских задачах часто важен только поворот вокруг вертикальной оси. Чаще через IMU хаба (PrimeHub().imu) и/или DriveBase.angle()
Yaw / Pitch / Roll Три угла ориентации: рыскание, тангаж и крен. Для движения по полу чаще всего важен yaw (поворот влево/вправо). Термины IMU/робототехники; в Pybricks относятся к данным хаба с IMU
Энкодер Датчик внутри мотора, который считает вращение вала (угол/скорость). Основа для точного движения. В Motor (энкодер используется методами мотора и DriveBase)
Калибровка Подстройка параметров робота, чтобы движение в мм/градусах было точнее. Для базы: параметры wheel_diameter, axle_track, методы DriveBase.settings() и практическая настройка
Порог (threshold) Значение, выше/ниже которого программа считает, что произошло событие (например, "линия найдена", "слишком близко"). Пользовательская логика с if, обычно по данным датчиков (ColorSensor, UltrasonicSensor и т.д.)
Шум (noise) Случайные колебания измерений датчика, из-за которых показания немного "прыгают". Наблюдается у любых датчиков; учитывается в логике чтения/обработки
Фильтрация (filtering) Обработка данных датчика для уменьшения шума и ложных срабатываний. Пользовательская логика (например, усреднение нескольких измерений)
Сглаживание / усреднение (smoothing, averaging) Простая форма фильтрации: несколько измерений объединяют в одно более стабильное значение. Пользовательская логика в Python (циклы, списки, вычисление среднего)
Гистерезис порога Использование двух порогов (вкл/выкл), чтобы значение не "дребезжало" около границы. Пользовательская логика с if и состоянием (bool)
Дребезг (debounce) Короткие повторные срабатывания кнопки/датчика, которые нужно игнорировать или сгладить. Циклы опроса + wait(...), проверки времени/состояния
Частота опроса датчика / дискретизация (sampling rate) Как часто вы читаете датчик. Слишком редко — медленно реагирует, слишком часто — больше шума/нагрузки. Пользовательская логика с wait(ms) и циклом опроса

Движение и геометрия

Термин Что это значит Где в Pybricks
DriveBase (приводная база) Абстракция для двухколесного робота: движение в мм и градусах вместо "оборотов мотора". pybricks.robotics.DriveBase
Радиус дуги Расстояние от робота до центра окружности, по которой он едет. DriveBase.arc(radius, ...), DriveBase.curve(radius, angle)
Дуга Движение по части окружности, а не по прямой. DriveBase.arc(...)
Поворот на месте Робот вращается вокруг своей оси, почти не смещаясь по прямой. DriveBase.turn(angle)
Колея (axle_track) Расстояние между левым и правым колесом (по центрам). Сильно влияет на точность поворота. Параметр при создании DriveBase(..., axle_track=...)
Диаметр колеса (wheel_diameter) Используется для пересчета вращения мотора в миллиметры пути. Параметр при создании DriveBase(..., wheel_diameter=...)
Скорость (линейная) Насколько быстро робот едет вперед/назад (обычно в mm/s). DriveBase.drive(speed, turn_rate), DriveBase.settings(straight_speed=...)
Скорость поворота (turn_rate) Насколько быстро робот поворачивает (обычно в deg/s). DriveBase.drive(speed, turn_rate), DriveBase.settings(turn_rate=...)
Ускорение Как быстро меняется скорость. Слишком большое значение может быть недостижимо физически. DriveBase.settings(straight_acceleration=..., turn_acceleration=...)

Навигация, состояние и измерения

Термин Что это значит Где в Pybricks
Одометрия Оценка пройденного пути и поворота робота по энкодерам (и иногда с помощью гироскопа). DriveBase.distance(), DriveBase.angle(), DriveBase.state(), DriveBase.reset()
Телеметрия Текущие данные о состоянии робота во время работы (скорость, угол, дистанция, показания датчиков и т.п.). Нет отдельного "класса телеметрии"; обычно используют DriveBase.state(), distance(), angle(), чтение датчиков и print()
Состояние (state) Набор текущих параметров движения базы (дистанция, скорость, угол, скорость поворота). DriveBase.state()
Дистанция (distance) Сколько база прошла с момента последнего сброса одометрии. DriveBase.distance()
Угол (angle) Накопленный угол поворота базы с момента reset(). DriveBase.angle()
Курс (heading) Текущее направление, куда "смотрит" робот. В простых проектах часто оценивают по одометрии/гироскопу. Обычно пользовательская логика на основе DriveBase.angle() и/или IMU
Сброс одометрии Обнуление (или установка) текущих значений дистанции и угла. DriveBase.reset()
Завершена ли команда Проверка, закончила ли база текущий маневр. DriveBase.done()
Застревание (stalled) Ситуация, когда робот уперся/не может выполнить движение как задано. DriveBase.stalled()

Управление движением (команды и режимы)

Термин Что это значит Где в Pybricks
Блокирующий режим Команда ждет завершения движения, и код идет дальше только после этого. DriveBase.straight(...), turn(...), arc(...) (по умолчанию wait=True)
Неблокирующий режим Команда запускает движение и сразу возвращает управление, пока робот еще едет. ... , wait=False + проверка через DriveBase.done()
Опрос (polling) Периодическая проверка состояния в цикле (например, done() или показаний датчика). Циклы while + wait(...), DriveBase.done(), методы датчиков
Период цикла / частота цикла Как часто выполняется цикл управления/опроса (например, каждые 10 мс). Влияет на задержку и плавность реакции. Пользовательская логика с wait(ms)
Остановка накатом (coast) Моторы перестают активно удерживать/тормозить, робот докатывается. DriveBase.stop(), Stop.COAST
Торможение (brake) Пассивное торможение моторов для более быстрой остановки. DriveBase.brake(), Stop.BRAKE
Удержание (hold) Активное удержание позиции моторами после завершения движения. Stop.HOLD (часто режим по умолчанию для маневров)
Режим остановки (then=Stop...) Что делать после straight/turn/arc: держать, тормозить или накат. pybricks.parameters.Stop, аргумент then=
Команда drive() Непрерывное движение с заданной линейной и угловой скоростью до stop()/brake(). DriveBase.drive(speed, turn_rate)

Мини-подсказка по чтению примеров

Если в коде встречается:

  • distance, angle, state -> это обычно про одометрию/телеметрию базы.
  • use_gyro(True) -> база использует гироскоп (IMU) хаба для поворотов/удержания курса.
  • wait=False + done() -> это неблокирующий режим движения.

Продвинутые робототехнические термины

Эти термины чаще встречаются в общей робототехнике, ROS, компьютерном зрении и автономной навигации.
В Pybricks многие из них не представлены как готовые классы, но идеи полезно понимать.

Навигация и карты

Термин Что это значит Где в Pybricks
SLAM Simultaneous Localization and Mapping: робот одновременно строит карту и определяет свое положение на ней. Нет готового SLAM в Pybricks; это обычно внешние фреймворки/ПК
Локализация (localization) Определение положения робота на карте/в пространстве. Частично вручную через одометрию (DriveBase.distance/angle/state) и датчики
Картографирование (mapping) Построение карты окружающей среды. Нет встроенного API; реализуют самостоятельно/вне Pybricks
Поза (pose) Положение и ориентация робота (например, x, y, угол). В Pybricks напрямую не хранится как объект; можно вычислять из одометрии
Маршрутная точка (waypoint) Промежуточная точка, через которую робот должен проехать. Обычно логика пользователя (список точек в Python)
Планирование пути (path planning) Поиск пути от точки A к точке B с учетом препятствий. Нет встроенного планировщика; пользовательская логика
Планирование траектории (trajectory planning) Планирование пути плюс профиля скоростей/времени движения. Частично вручную через DriveBase.settings() и последовательности команд
Карта занятости (occupancy grid) Сетка, где ячейки отмечены как свободные/занятые/неизвестные. Нет встроенной поддержки в Pybricks
Замыкание петли (loop closure) Распознавание, что робот вернулся в уже известное место, чтобы исправить накопленные ошибки карты/позиции. Нет встроенной поддержки в Pybricks

Оценка состояния и сенсоры (продвинутый уровень)

Термин Что это значит Где в Pybricks
Слияние датчиков (sensor fusion) Объединение данных нескольких датчиков для более точной оценки состояния. Частично возможно вручную (IMU + энкодеры + датчики), но без готового фреймворка
Dead reckoning Оценка текущего положения по предыдущему положению и измеренному движению (без внешних ориентиров). По сути близко к одометрии DriveBase
Дрейф (drift) Накопление ошибки измерений/оценки положения со временем. Наблюдается в одометрии и гироскопических измерениях
Ковариация (covariance) Численная оценка неопределенности измерений/оценки состояния. Не представлена как стандартный объект Pybricks
EKF (Extended Kalman Filter) Расширенный фильтр Калмана для оценки состояния в нелинейных системах. Нет встроенной поддержки в Pybricks
UKF (Unscented Kalman Filter) Вариант фильтра Калмана для нелинейных систем (через sigma points). Нет встроенной поддержки в Pybricks
LiDAR Лазерный дальномер/сканер для измерения расстояний и построения карты. Для стандартных наборов Pybricks обычно не используется напрямую
Облако точек (point cloud) Набор 2D/3D точек, полученных сенсором (например, LiDAR/камера глубины). Нет встроенной поддержки в Pybricks
VO (Visual Odometry) Оценка перемещения по изображениям с камеры. Нет встроенной поддержки в Pybricks
VIO (Visual-Inertial Odometry) Одометрия по камере + IMU. Нет встроенной поддержки в Pybricks

Управление и регулирование

Термин Что это значит Где в Pybricks
PID-регулятор Алгоритм управления по ошибке: пропорциональная, интегральная и дифференциальная части. Концептуально используется в робототехнике; в Pybricks можно реализовать вручную
Уставка (setpoint) Целевое значение (скорость, угол, дистанция), к которому стремится система. В пользовательской логике и в командах движения (straight, turn, drive)
Обратная связь (feedback) Управление на основе измерений датчиков/состояния. Чтение датчиков, DriveBase.state(), IMU, энкодеры
Упреждение (feedforward) Добавка к управлению на основе модели/ожидаемого поведения, без ожидания ошибки. Обычно реализуют вручную в пользовательском коде
Перерегулирование (overshoot) Когда система превышает целевое значение перед стабилизацией. Может проявляться в поворотах/движении при агрессивных настройках
Устойчивость (stability) Способность системы возвращаться к нужному режиму без раскачки/разгона ошибки. Общая теория; влияет на настройку алгоритмов управления
Задержка (latency) Время между измерением, вычислением и действием. Есть в любых циклах опроса датчиков и управления (wait(...), частота цикла)
MPC (Model Predictive Control) Управление по модели с прогнозом будущего поведения на горизонте времени. Нет встроенной поддержки в Pybricks

Кинематика и механика

Термин Что это значит Где в Pybricks
Кинематика Описание движения без учета сил (положения, скорости, углы). Полезно для DriveBase, манипуляторов и расчетов движения
Прямая кинематика (forward kinematics) Вычисление положения механизма по известным углам/положениям приводов. Обычно пользовательские расчеты
Обратная кинематика (inverse kinematics) Вычисление углов/команд приводов для достижения нужного положения. Обычно пользовательские расчеты
Степени свободы (DOF) Количество независимых направлений/осей движения системы. Общая робототехника; полезно при описании манипуляторов
Дифференциальный привод (differential drive) Двухколесная схема управления, где поворот задается разницей скоростей колес. pybricks.robotics.DriveBase
Skid-steer (танковый / бортовой поворот) Поворот за счет разницы скоростей левой и правой стороны (часто 4 колеса или гусеницы), обычно с проскальзыванием. Можно реализовать вручную через несколько Motor; отдельного класса уровня DriveBase обычно нет
Ackermann steering (автомобильное руление) Схема как у автомобиля: отдельное руление передних колес и привод на ось(и). Обычно пользовательская логика: рулевой мотор + приводной мотор(ы)
Омни-привод (omni drive) База с omni-колесами, позволяющая двигаться в нескольких направлениях (в зависимости от конфигурации). Нет готового универсального класса; нужна своя кинематика и управление моторами
Mecanum drive База с mecanum-колесами для движения вбок/по диагонали и вращения на месте. Нет встроенной поддержки в DriveBase; реализуется вручную через кинематику колес
Swerve drive Каждое колесо (или модуль) может отдельно поворачиваться и крутиться, что дает очень гибкое движение. Нет встроенной поддержки в Pybricks; сложная пользовательская кинематика
Гусеничный привод (tracked drive) Движение на гусеницах вместо колес; хорошо для проходимости, но часто с большим проскальзыванием. Может управляться как skid-steer через моторы; DriveBase не всегда дает точную модель
Holonomic / Nonholonomic Может/не может двигаться мгновенно в любом направлении из текущего состояния (например, mecanum часто holonomic, differential drive — nonholonomic). DriveBase (дифференциальный) — nonholonomic
Передаточное отношение (gear ratio) Соотношение между скоростью/моментом на входе и выходе передачи. Влияет на тягу и скорость. Практически важно при проектировании механики и интерпретации движений моторов
Редуктор Механическая передача (обычно шестерни), которая меняет скорость и крутящий момент. В конструкции робота; влияет на поведение Motor и всей базы
Крутящий момент (torque) "Сила вращения" на валу. Чем выше момент, тем легче двигать нагрузку. Практическое понятие при выборе передачи/мотора и настройке движения
Проскальзывание колес (wheel slip) Колеса вращаются, но фактическое движение меньше расчетного. Практически влияет на точность DriveBase и одометрии
Люфт (backlash) Механический зазор в передаче, вызывающий задержку/неточность при смене направления. Практически влияет на точность движений и позиционирования
Гистерезис (hysteresis) Отклик системы зависит от предыстории движения/нагрузки. Практически наблюдается в механике и датчиках

Как использовать эти термины в контексте Pybricks

  • Для учебных проектов на Pybricks чаще всего достаточно: одометрия, дрейф, PID, уставка, обратная связь, дифференциальный привод, проскальзывание.
  • Термины вроде SLAM, EKF, MPC, VIO полезны для понимания "куда дальше расти", но обычно выходят за рамки базового хаба и MicroPython-скрипта.