AI-система управления автономной горнодобывающей техникой
Автономная горная техника — один из наиболее зрелых сегментов промышленной автономии. Komatsu FrontRunner, Caterpillar Command, Rio Tinto Mine of the Future работают в production с 2008. ML и RL расширяют возможности: адаптация к изменениям рудника, оптимизация загрузки флота, предиктивное обслуживание.
Стек автономной горной техники
Perception: LiDAR (Velodyne HDL-64E, Ouster OS2-128) для 360° сканирования. Stereo cameras. Millimeter-wave radar. GNSS (RTK GPS ±2 cm, GLONASS backup). IMU/INS. High-precision HD maps рудника обновляются ежедневно.
Связь: 5G Private Network или URLLC для low-latency управления. LTE backup. Mesh radio для зон без покрытия. TACS (Trolley-based Automation Control System) для подземных рудников.
Fleet Management: Autonomous Haulage System (AHS). Центральный диспетчер распределяет маршруты. Каждый грузовик (300+ тонн) — автономный агент.
RL для оптимизации флота
Задача диспетчеризации: N грузовиков + M экскаваторов + K разгрузочных пунктов. Минимизировать: простой экскаватора (ждёт грузовика), пробег порожняком, очереди на разгрузке.
Классический подход: детерминированное расписание. RL подход: real-time адаптация к поломкам, задержкам, изменениям плана добычи.
class MiningFleetEnv(gym.Env):
def __init__(self, n_trucks, n_shovels, n_dumps):
self.n_trucks = n_trucks
self.n_shovels = n_shovels
self.n_dumps = n_dumps
# observation: статус каждого грузовика + экскаватора + очереди
obs_per_truck = 6 # position, load_status, fuel, ETA, queue_wait, is_broken
obs_per_shovel = 4 # position, dig_rate, queue_length, availability
obs_per_dump = 3 # position, throughput, queue_length
self.observation_space = spaces.Box(
low=0, high=np.inf,
shape=(n_trucks * obs_per_truck +
n_shovels * obs_per_shovel +
n_dumps * obs_per_dump,))
# action: назначить грузовик на точку (экскаватор или разгрузка)
self.action_space = spaces.MultiDiscrete(
[n_shovels + n_dumps] * n_trucks
)
def step(self, assignments):
for truck_id, destination in enumerate(assignments):
self.trucks[truck_id].assign_destination(destination)
# advance simulation by time_step
self._simulate_step()
reward = -(self.shovel_idle_time +
0.5 * self.truck_idle_time +
0.3 * self.queue_wait_time)
return self._get_obs(), reward, False, False, self._get_info()
Path Planning в сложном рельефе
Горный рудник — динамичная среда: новые взрывы создают котлованы, осыпи блокируют дороги, влажность меняет проходимость.
HD Map обновление: После каждого взрыва (blasting) → LiDAR survey → обновление occupancy grid → пересчёт маршрутов.
# A* на взвешенном графе с учётом уклона
def mine_astar(start, goal, terrain_map, max_grade=10.0):
def heuristic(a, b):
return np.linalg.norm(np.array(a) - np.array(b))
def slope_cost(current, neighbor):
dz = terrain_map.elevation[neighbor] - terrain_map.elevation[current]
dx = terrain_map.cell_size
grade = abs(dz / dx) * 100 # %
if grade > max_grade:
return float('inf') # непроходимо для нагруженного грузовика
return 1.0 + grade * 0.1 # штраф за уклон
return a_star(start, goal, heuristic, slope_cost)
RL для низкоуровневого управления: На сложных участках (крутые повороты, мокрая глина) — RL контроллер адаптирует скорость/торможение лучше PID. Обучение в CARLA с кастомным terrain plugin.
Predicting Equipment Failures
Горная техника работает в экстремальных условиях. Внеплановая поломка карьерного самосвала → простой 6–24 часа, потери $100K+/час.
Предиктивное ТО через LSTM:
class TruckHealthPredictor(nn.Module):
def __init__(self, n_sensors=45, hidden_dim=128):
super().__init__()
# 45 датчиков: температуры, давления, вибрации, нагрузки
self.lstm = nn.LSTM(n_sensors, hidden_dim, 3, batch_first=True)
self.head = nn.Sequential(
nn.Linear(hidden_dim, 64), nn.ReLU(),
nn.Linear(64, 1), nn.Sigmoid() # вероятность отказа в 24ч
)
def forward(self, sensor_history): # [batch, 720, 45] — 12 часов @ 1 мин
out, _ = self.lstm(sensor_history)
return self.head(out[:, -1, :])
# деплой: threshold 0.7 → alert → плановое ТО на следующей смене
Anomaly detection через Autoencoder: Изолировать нормальный режим работы → любое отклонение — потенциальная проблема. Работает без labeled failure данных (которых всегда мало).
Blast Optimization с RL
Буровзрывные работы (drilling + blasting) — основа добычи. Оптимальный размер фрагментов влияет на производительность дробилок.
Задача: выбрать конфигурацию бурения (глубина/диаметр/сетка) и заряд для целевого гранулометрического состава.
Kuz-Ram модель + RL:
# Kuz-Ram: аналитическая модель фрагментации
def kuz_ram_mean_fragment(burden, spacing, hole_diameter, explosive_energy):
return A * (burden * spacing * hole_diameter) ** 0.8 / explosive_energy ** 0.6
# RL поверх: агент выбирает параметры бурения
# observation: геологический профиль + целевой гранулометрический состав
# action: [burden, spacing, hole_depth, explosive_type]
# reward: -|predicted_fragmentation - target_fragmentation| - drilling_cost
Интеграция с MES/Dispatch системами
Komatsu AHS API / Cat MineStar: REST API для получения статуса флота + передачи команд. RL диспетчер как microservice.
OSIsoft PI / Aspentech: Historian для хранения телеметрии. RL policy получает historical context через PI API.
Trimble Loadrite / Wenco: Системы учёта загрузки. Данные для reward расчёта (t/h выработки).
Безопасность и Safety Systems
Proximity Detection: Pedestrian Detection System — стоп при обнаружении человека в зоне 20м. Hardware override, вне контроля RL.
Virtual Barriers: Geofencing через GNSS. RL не может командовать за пределы зоны. Аппаратный failsafe.
Operator Override: Любой оператор может взять ручное управление. RL переходит в advisory mode.
Redundant Safety Architecture: Safety controller — независимый embedded system (ASIL-D), не связан с RL inference. Перекрывает команды RL при критических событиях.
Сроки: 24–48 недель
Fleet management RL поверх существующего AHS — 12–16 недель. Предиктивное ТО с IoT интеграцией — 16–20 недель. Autonomous path planning для нового рудника с safety системой и сертификацией — 36–48 недель.







