👥 Коллектив • 🔄 Координация • 📡 Коммуникация • 🧠 Роевой интеллект
7 класс • Технология • 45 минут
mw285748 • 15.06.2025
💡 Изучим:
🤖 Результат: Модель взаимодействия роботов для решения общей задачи
🏗️ Строительство:
🔥 Пожаротушение:
📦 Склады Amazon:
Эффективность группы:
\[E_{group} = n \times E_{single} \times k_{coordination}\]где:
Время выполнения задачи:
\[T_{group} = \frac{T_{single}}{n \times k_{parallel}} + T_{coordination}\]💡 Вывод: Группа эффективнее при правильной координации!
🐜 Муравьи:
🐝 Пчелы:
🐦 Стаи птиц:
🔬 Принципы из биологии применяются в робототехнике!
Структура:
[ЦЕНТРАЛЬНЫЙ КОНТРОЛЛЕР]
/ | \
/ | \
[Робот 1] [Робот 2] [Робот 3]
Принцип работы:
Преимущества:
Недостатки:
Структура:
[Робот 1] ←→ [Робот 2] ←→ [Робот 3]
↕ ↕ ↕
[Робот 4] ←→ [Робот 5] ←→ [Робот 6]
Принцип работы:
Преимущества:
Недостатки:
Структура:
[КООРДИНАТОР]
/ | \
[Группа 1] [Группа 2] [Группа 3]
/ \ / \ / \
[Р1] [Р2] [Р3] [Р4] [Р5] [Р6]
Принцип работы:
Применение:
Принцип:
class LeaderFollowerSystem:
def __init__(self):
self.leader = Robot("leader")
self.followers = [Robot(f"follower_{i}") for i in range(3)]
def execute_mission(self):
# Лидер планирует маршрут
path = self.leader.plan_path()
# Последователи следуют за лидером
for follower in self.followers:
follower.follow_leader(self.leader.position)
# Адаптация при смене лидера
if self.leader.is_disabled():
self.elect_new_leader()
Применение:
Статусные сообщения:
{
"sender_id": "robot_01",
"timestamp": 1703520000,
"position": {"x": 12.5, "y": 8.3, "heading": 45},
"battery": 78,
"status": "active",
"current_task": "exploration"
}
Запросы помощи:
{
"sender_id": "robot_02",
"message_type": "help_request",
"priority": "high",
"task": "object_transport",
"required_robots": 2,
"location": {"x": 15.2, "y": 7.1}
}
Координационные команды:
{
"sender_id": "coordinator",
"message_type": "task_assignment",
"target_robots": ["robot_03", "robot_04"],
"task": {
"type": "formation_flight",
"leader": "robot_03",
"formation": "triangle"
}
}
Проблемы коммуникации:
Решения:
class ReliableCommunication:
def send_message(self, message, recipient):
# Добавление контрольной суммы
message.checksum = self.calculate_checksum(message)
# Повтор при отсутствии подтверждения
for attempt in range(3):
if self.transmit(message, recipient):
if self.wait_for_ack(timeout=1000):
return True
return False # Сообщение не доставлено
def receive_message(self, message):
# Проверка целостности
if self.verify_checksum(message):
self.send_acknowledgment(message.sender)
return message
else:
return None # Поврежденное сообщение
Звезда:
[R2]
|
[R1]─[C]─[R3] # C = центральный узел
|
[R4]
Кольцо:
[R1]─[R2]
| |
[R4]─[R3]
Полносвязная сеть:
[R1]─[R2]
|\ /|
| X |
|/ \|
[R4]─[R3]
Mesh-сеть:
[R1]─[R2]─[R3]
|\ /|\ /|
| X | X |
|/ \|/ \|
[R4]─[R5]─[R6]
По функциям:
По физическим характеристикам:
Алгоритм аукциона:
class TaskAuction:
def __init__(self, robots):
self.robots = robots
self.tasks = []
def assign_task(self, task):
# Запрос ставок от всех роботов
bids = {}
for robot in self.robots:
if robot.can_perform(task):
bid = robot.calculate_bid(task)
bids[robot.id] = bid
# Выбор лучшей ставки
if bids:
winner = min(bids.keys(), key=lambda x: bids[x])
self.robots[winner].assign_task(task)
return winner
return None # Задачу некому выполнить
def calculate_bid(self, robot, task):
# Учитываем расстояние, загрузку, специализацию
distance_cost = robot.distance_to(task.location)
workload_cost = robot.current_workload * 2
specialization_bonus = -10 if robot.specialized_for(task) else 0
return distance_cost + workload_cost + specialization_bonus
Проблема: Некоторые роботы перегружены, другие простаивают
Решение - миграция задач:
def balance_workload(robots):
# Находим перегруженных и недогруженных роботов
overloaded = [r for r in robots if r.workload > 0.8]
underloaded = [r for r in robots if r.workload < 0.3]
# Перераспределяем задачи
for busy_robot in overloaded:
for free_robot in underloaded:
# Ищем задачи, которые может выполнить свободный робот
transferable_tasks = busy_robot.get_transferable_tasks()
for task in transferable_tasks:
if free_robot.can_perform(task):
busy_robot.transfer_task(task, free_robot)
break
Обнаружение отказа:
class FailureDetector:
def __init__(self, robots):
self.robots = robots
self.heartbeat_timeout = 5.0 # секунд
def monitor_robots(self):
for robot in self.robots:
time_since_heartbeat = time.now() - robot.last_heartbeat
if time_since_heartbeat > self.heartbeat_timeout:
self.handle_robot_failure(robot)
def handle_robot_failure(self, failed_robot):
# Перераспределяем задачи отказавшего робота
for task in failed_robot.active_tasks:
self.reassign_task(task)
# Уведомляем остальных роботов
self.broadcast_failure_notification(failed_robot.id)
# Перестраиваем формацию если нужно
if failed_robot.role == "leader":
self.elect_new_leader()
🔥 Сценарий 1: “Команда пожарных роботов”
🏗️ Сценарий 2: “Строительная бригада”
🗺️ Сценарий 3: “Исследователи пещеры”
Обязательные компоненты:
1. Состав команды:
2. Архитектура взаимодействия:
3. Протоколы связи:
4. Распределение задач:
Этап 1: Планирование (5 мин)
• Выбор сценария
• Определение состава команды
• Распределение ролей в группе
Этап 2: Проектирование (15 мин)
• Разработка архитектуры взаимодействия
• Создание протоколов коммуникации
• Планирование распределения задач
Этап 3: Моделирование (7 мин)
• Проверка модели на разных ситуациях
• Анализ возможных проблем
• Оптимизация решения
Этап 4: Подготовка презентации (3 мин)
• Оформление схемы
• Подготовка объяснения
План выступления (3 минуты на группу):
❓ Вопросы для обсуждения:
📊 Оценочная матрица (12 баллов):
| Критерий | Максимум | Описание |
|---|---|---|
| Содержание модели | 5 | Полнота, логичность, проработанность |
| Практичность | 3 | Реализуемость, масштабируемость, устойчивость |
| Оригинальность | 2 | Творческий подход, нестандартные решения |
| Презентация | 2 | Понятность объяснения, качество оформления |
🎯 Перевод в оценки:
Amazon Warehouse:
Автомобильные заводы:
Сельское хозяйство:
Рой дронов:
Поисково-спасательные операции:
➕ Плюс (что понравилось/было полезным):
➖ Минус (что вызвало затруднения):
❗ Интересно (что удивило/хочется узнать больше):
Оценка своей работы (1-5): ___
Найти реальный пример взаимодействующих роботов:
Изучить одну из систем:
📋 План описания:
Доработать свою модель:
✅ Изучили:
🧠 Поняли:
“Синергия роботов создает интеллект, превышающий сумму индивидуальных возможностей”
🚀 Будущее: Роевой интеллект и самоорганизующиеся системы роботов
💡 Команда роботов умнее самого умного робота в одиночку!