🎯 Цель: Проводим профессиональные испытания наших роботов
⭐ Результат: Получаем аналитический отчет с рекомендациями
👨🏫 Учитель: Ахметов Рустам
🏫 Школа: ГБОУ № 1362
📅 Дата: 2025-06-14
⏰ Время: 105 минут
Полный цикл инженерных испытаний:
В реальной инженерии:
🏆 Сегодня вы станете настоящими инженерами-испытателями!
Функциональные тесты:
Тесты производительности:
Тесты надежности:
Основные показатели:
Шаг 1: Определяем параметры для измерения
Для транспортного робота:
Для манипулятора:
Шаг 2: Готовим испытательный полигон
Стандартные условия:
Контрольные точки:
Количество измерений: Для достоверных результатов нужно минимум 10 повторений каждого теста
Контроль условий:
Документирование:
Дизайн эксперимента (DOE - Design of Experiments):
Если мы хотим проверить влияние нескольких факторов:
Факторный план 2³:
\[\text{Количество экспериментов} = 2^n = 2^3 = 8\]Матрица планирования:
| Эксперимент | Скорость | Алгоритм | Освещение | Результат |
|---|---|---|---|---|
| 1 | - | - | - | Y₁ |
| 2 | + | - | - | Y₂ |
| 3 | - | + | - | Y₃ |
| 4 | + | + | - | Y₄ |
| 5 | - | - | + | Y₅ |
| 6 | + | - | + | Y₆ |
| 7 | - | + | + | Y₇ |
| 8 | + | + | + | Y₈ |
Анализ главных эффектов:
\[\text{Эффект скорости} = \frac{(Y_2 + Y_4 + Y_6 + Y_8) - (Y_1 + Y_3 + Y_5 + Y_7)}{4}\]Тест 1: Точность позиционирования
Задача: Робот должен доехать до точки (50, 50) от старта (0, 0)
Методика:
Таблица результатов:
| Попытка | X финал | Y финал | Отклонение | Время |
|---|---|---|---|---|
| 1 | 52.3 | 48.7 | 2.9 см | 12.4 с |
| 2 | 49.1 | 51.2 | 1.8 см | 12.1 с |
| 3 | 50.8 | 49.5 | 1.0 см | 12.6 с |
| … | … | … | … | … |
Расчет отклонения:
\[\text{Отклонение} = \sqrt{(X_{цель} - X_{факт})^2 + (Y_{цель} - Y_{факт})^2}\]Задача: Робот должен объехать препятствие и достичь цели
Критерии успеха:
Результаты из 20 попыток:
Надежность:
\[\text{Надежность} = \frac{\text{Успешные попытки}}{\text{Общее количество}} = \frac{17}{20} = 85\%\]Задача: Измерить скорость выполнения типовых операций
Операции для манипулятора:
Операции для мобильного робота:
Метрики производительности:
Статистические показатели:
Среднее арифметическое:
\[\bar{x} = \frac{1}{n}\sum_{i=1}^{n} x_i\]Среднеквадратичное отклонение:
\[\sigma = \sqrt{\frac{1}{n-1}\sum_{i=1}^{n} (x_i - \bar{x})^2}\]Доверительный интервал:
\[\bar{x} \pm t_{\alpha/2} \cdot \frac{\sigma}{\sqrt{n}}\]где $t_{\alpha/2}$ - критическое значение t-распределения
Для n=10 и уровня доверия 95%: $t_{0.025} = 2.26$
Пример расчета: Если среднее отклонение $\bar{x} = 2.1$ см, $\sigma = 0.8$ см, n = 10:
\[\text{Доверительный интервал} = 2.1 \pm 2.26 \cdot \frac{0.8}{\sqrt{10}} = 2.1 \pm 0.57\]Результат: отклонение составляет 2.1 ± 0.57 см с вероятностью 95%
Проверка гипотез:
H₀: Точность робота соответствует техническим требованиям (≤ 2 см)
H₁: Точность не соответствует требованиям (> 2 см)
t-статистика:
\[t = \frac{\bar{x} - \mu_0}{\sigma/\sqrt{n}} = \frac{2.1 - 2.0}{0.8/\sqrt{10}} = 0.395\]Поскольку t < 2.26, гипотеза H₀ не отвергается.
Шаг 1: Ввод данных
A1: Попытка B1: Отклонение_X C1: Отклонение_Y D1: Время
A2: 1 B2: 2.3 C2: -1.3 D2: 12.4
A3: 2 B3: -0.9 C3: 1.2 D3: 12.1
...
Шаг 2: Расчет основных статистик
Среднее отклонение X: =СРЗНАЧ(B2:B11)
Станд. отклонение X: =СТАНДОТКЛОН(B2:B11)
Минимум: =МИН(B2:B11)
Максимум: =МАКС(B2:B11)
Шаг 3: Построение графиков
График точности по попыткам:
Отклонение (см)
↑
4 | •
|
3 | • •
| • •
2 | • •
| • • • •
1 |__•_____________→ Попытка
1 2 3 4 5 6 7 8 9 10
Анализ тренда:
Гистограмма распределения:
Частота
↑
4 | ██
| ██
3 | ██ ██
| ██ ██
2 | ██ ██ ██
| ██ ██ ██
1 | ██ ██ ██ ██
|________________→ Отклонение (см)
0-1 1-2 2-3 3-4
Корреляционный анализ:
Есть ли связь между временем выполнения и точностью?
\[r = \frac{\sum (x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum (x_i - \bar{x})^2 \sum (y_i - \bar{y})^2}}\]Интерпретация:
Регрессионный анализ:
Модель зависимости точности от времени:
\[y = ax + b\]где:
\[a = \frac{\sum (x_i - \bar{x})(y_i - \bar{y})}{\sum (x_i - \bar{x})^2}\] \[b = \bar{y} - a\bar{x}\]Оценка качества модели:
\[R^2 = 1 - \frac{\sum (y_i - \hat{y_i})^2}{\sum (y_i - \bar{y})^2}\]R² = 0.8 означает, что 80% вариации объясняется моделью
Прогнозирование: На основе модели можем предсказать точность для новых условий
Проблема 1: Накопление ошибок
Наблюдение: Точность ухудшается с каждым движением
Причина: Ошибки одометрии накапливаются
Решение: Периодическая калибровка по внешним ориентирам
Проблема 2: Нестабильность на поворотах
Наблюдение: Большой разброс при выполнении поворотов
Причина: Проскальзывание колес, инерция
Решение: Снижение скорости поворотов, ПИД-регулятор
Проблема 3: Медленная реакция на препятствия
Наблюдение: Робот поздно обнаруживает препятствия
Причина: Низкая частота опроса датчиков
Решение: Увеличить частоту, улучшить алгоритм
Матрица проблем:
| Тип проблемы | Частота | Критичность | Сложность исправления |
|---|---|---|---|
| Точность позиционирования | Высокая | Средняя | Низкая |
| Столкновения | Низкая | Высокая | Средняя |
| Медленная работа | Средняя | Низкая | Низкая |
| Сбои программы | Низкая | Высокая | Высокая |
Приоритизация по матрице:
Критичность
↑
Высокая | Сбои Столкновения
|
Средняя | Точность
|
Низкая | Скорость
|___________________→ Частота
Низкая Средняя Высокая
Порядок исправления:
Метод “5 почему” (5 Whys):
Проблема: Робот часто промахивается мимо цели
Корневая причина: Алгоритм не адаптируется к условиям поверхности
Диаграмма Исикавы (рыбья кость):
Промах мимо цели
↑
Оборудование ←──────────────┼──────────────→ Программа
• Износ колес │ • Ошибки в коде
• Люфт в редукторе │ • Неточная калибровка
│
Среда ←────────────────────┼──────────────→ Метод
• Освещение │ • Алгоритм навигации
• Поверхность │ • Частота обновления
FMEA-анализ (Failure Mode and Effects Analysis):
| Вид отказа | Причина | Последствие | Вероятность | Тяжесть | Обнаружение | RPN |
|---|---|---|---|---|---|---|
| Сбой датчика | Помехи | Столкновение | 3 | 8 | 4 | 96 |
| Разрядка батареи | Не контролируется | Остановка | 6 | 5 | 2 | 60 |
RPN = Вероятность × Тяжесть × Обнаружение (чем больше, тем критичнее)
Рекомендация 1: Улучшение точности позиционирования
Проблема: Среднее отклонение 2.1 см при требовании ≤ 2.0 см
Решение: Внедрить фильтр Калмана для одометрии
// Простой фильтр для сглаживания данных одометрии
float filteredPosition = 0.8 * rawPosition + 0.2 * previousFiltered;
Ожидаемый результат: Снижение отклонения до 1.5 см
Рекомендация 2: ПИД-регулятор для поворотов
Проблема: Разброс углов поворота ±5°
Решение: Внедрить ПИД-регулятор
float pid_control(float target_angle, float current_angle) {
float error = target_angle - current_angle;
float correction = Kp*error + Ki*integral + Kd*derivative;
return correction;
}
Параметры: Kp=2.0, Ki=0.1, Kd=0.5
Рекомендация 3: Адаптивная скорость
Проблема: Постоянная скорость неэффективна
Решение: Переменная скорость в зависимости от ситуации
float adaptive_speed(float distance_to_obstacle, float distance_to_goal) {
if (distance_to_obstacle < 30) return 0.3; // медленно
if (distance_to_goal < 20) return 0.5; // умеренно
return 1.0; // быстро
}
Ожидаемый результат: Ускорение на 25% при сохранении безопасности
Рекомендация 4: Оптимизация циклов
Проблема: Медленное выполнение основного цикла
Текущий код:
void loop() {
delay(100); // слишком много ожидания
readSensors();
calculatePath();
moveMotors();
}
Оптимизированный код:
void loop() {
if (millis() - lastUpdate > 20) { // 50 Гц вместо 10 Гц
readSensors();
calculatePath();
moveMotors();
lastUpdate = millis();
}
}
Генетический алгоритм для настройки параметров:
class GeneticOptimizer {
struct Individual {
float kp, ki, kd; // параметры ПИД
float fitness; // качество (точность)
};
void evolve() {
// 1. Оценка приспособленности
for (auto& ind : population) {
ind.fitness = evaluateRobot(ind.kp, ind.ki, ind.kd);
}
// 2. Селекция лучших
sort(population.begin(), population.end(),
[](const Individual& a, const Individual& b) {
return a.fitness > b.fitness;
});
// 3. Скрещивание
for (int i = 0; i < population.size()/2; i++) {
Individual child = crossover(population[i], population[i+1]);
population[i + population.size()/2] = child;
}
// 4. Мутация
for (auto& ind : population) {
if (random(100) < mutationRate) {
mutate(ind);
}
}
}
};
Машинное обучение для адаптации:
Нейронная сеть для выбора оптимальной скорости:
float neural_speed_control(float sensors[4]) {
// Скрытый слой
float hidden[3];
for (int i = 0; i < 3; i++) {
hidden[i] = 0;
for (int j = 0; j < 4; j++) {
hidden[i] += sensors[j] * weights_input[j][i];
}
hidden[i] = tanh(hidden[i]); // активация
}
// Выходной слой
float output = 0;
for (int i = 0; i < 3; i++) {
output += hidden[i] * weights_output[i];
}
return sigmoid(output); // скорость от 0 до 1
}
Обучение с подкреплением (Q-Learning):
class QLearning {
float Q[STATES][ACTIONS]; // Q-таблица
int selectAction(int state) {
if (random(100) < epsilon) {
return random(ACTIONS); // исследование
} else {
return argmax(Q[state]); // использование знаний
}
}
void updateQ(int state, int action, float reward, int nextState) {
float maxQ = *max_element(Q[nextState], Q[nextState] + ACTIONS);
Q[state][action] += alpha * (reward + gamma * maxQ - Q[state][action]);
}
};
Правила игры:
Тесты:
Измерения:
⭐ Анализ: Сравнить результаты “человеческих роботов” с настоящими роботами!
1. Титульный лист
ОТЧЕТ ОБ ИСПЫТАНИЯХ
Робототехнической системы [Название]
Выполнили: [Имена участников]
Класс: 6
Дата: [Дата]
Школа: ГБОУ № 1362
2. Аннотация (150-200 слов)
3. Введение
4. Методика испытаний
5. Результаты экспериментов
Таблица основных метрик:
| Параметр | Среднее | Станд. откл. | Мин | Макс | Цель |
|---|---|---|---|---|---|
| Точность позиционирования | 2.1 см | 0.8 см | 1.0 см | 3.4 см | ≤ 2.0 см |
| Время выполнения | 12.3 с | 1.2 с | 10.8 с | 14.1 с | ≤ 15 с |
| Успешность | 85% | - | - | - | ≥ 90% |
Графики:
6. Статистический анализ
7. Анализ результатов
Соответствие требованиям:
Выявленные проблемы:
Накопление ошибок одометрии
Нестабильная работа на поворотах
8. Рекомендации по улучшению
Приоритет 1 (критический):
Приоритет 2 (высокий):
Приоритет 3 (средний):
SWOT-анализ робототехнической системы:
| Strengths (Сильные стороны) | Weaknesses (Слабые стороны) |
|---|---|
| • Стабильное время выполнения | • Низкая точность позиционирования |
| • Простота программирования | • Накопление ошибок одометрии |
| • Надежная механическая часть | • Нестабильные повороты |
| Opportunities (Возможности) | Threats (Угрозы) |
|---|---|
| • Внедрение ИИ-алгоритмов | • Ограниченные вычислительные ресурсы |
| • Улучшение датчиков | • Требования к энергопотреблению |
| • Оптимизация ПО | • Сложность отладки |
Матрица решений:
| Критерий | Вес | ПИД-регулятор | Фильтр Калмана | Адаптивная скорость |
|---|---|---|---|---|
| Влияние на точность | 0.4 | 8 | 9 | 5 |
| Сложность реализации | 0.3 | 6 | 4 | 8 |
| Стоимость вычислений | 0.2 | 8 | 6 | 9 |
| Универсальность | 0.1 | 9 | 7 | 7 |
| Итоговая оценка | 7.4 | 7.1 | 6.9 |
Рекомендация: начать с ПИД-регулятора
Время: 5 минут на команду
Структура презентации:
Содержание (60%):
Презентация (40%):
Таблица результатов:
| Команда | Точность | Скорость | Надежность | Итого |
|---|---|---|---|---|
| Alpha | 2.1 см | 12.3 с | 85% | 7.8/10 |
| Beta | 1.8 см | 13.1 с | 90% | 8.2/10 |
| Gamma | 2.4 cm | 11.9 с | 80% | 7.5/10 |
Номинации:
Инженерные навыки:
Аналитические навыки:
Цикл разработки продукта:
Идея → Проектирование → Разработка → Тестирование →
Анализ → Оптимизация → Повторное тестирование → Внедрение
Культура качества:
Где применяются эти навыки:
1. Завершение отчета Если не успели на уроке - завершить аналитический отчет со всеми разделами.
2. Реализация одной рекомендации Внести одно из предложенных улучшений в программу робота и протестировать результат.
3. Сравнительный анализ Провести повторные испытания после внесения изменений и сравнить результаты с исходными данными.
4. Разработка чек-листа Создать универсальный чек-лист для тестирования робототехнических программ.
5. Статистический анализ Применить продвинутые статистические методы:
6. Автоматизация тестирования Разработать программу для автоматического проведения испытаний и анализа результатов.
Практические результаты:
Новое понимание:
“Настоящая инженерия начинается не с создания чего-то нового, а с честного анализа того, что уже создано. Только понимая реальные характеристики системы, можно ее улучшить!”
Сегодня вы освоили:
🎯 Эти навыки востребованы во всех областях современной техники!
Методики тестирования:
Для школьников:
⭐ Для углубленного изучения:
Для статистического анализа:
Для документирования:
Поздравляем с освоением инженерного тестирования! 🧪🤖✨