Словарь терминов (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-скрипта.