реклама
Бургер менюБургер меню

Елисей Медведев – Алгоритм вне контроля. Последнее решение (страница 8)

18

– Почему?

– Циклы зарядки. Мы гоняли их на симуляциях, не давая полностью разрядиться. Литий этого не любит. Я предупреждал.

Воронов вспомнил: Павлов действительно предупреждал. На второй день после первого полёта. Воронов записал это в блокнот и забыл. Теперь батареи третьего и девятого дронов теряли ёмкость, и это было его ошибкой. Не критичной. Не опасной. Но ошибкой. Каждая мелочь, которую он пропускал, превращалась в переменную, которую он не контролировал. И переменных становилось всё больше.

– Пятнадцать минут, – согласился Воронов. – Скажу Марине.

– Она уже знает. Я ей сказал вчера. – Павлов допил кофе. – Ты знаешь, что мне в ней нравится? Она слушает. Не соглашается, но слушает. Это редко.

Воронов кивнул. Он подумал: Павлов слушает тоже. И видит то, чего не видят другие. Не алгоритмы, не код, не графики – а миллиметры термопасты и процент ёмкости батарей. Физику. Материю. То, из чего сделаны дроны, которые падают на землю, когда математика ошибается.

Запуск прошёл штатно. Двадцать дронов поднялись в ясное небо, и на этот раз Воронов мог видеть их не только на мониторе, но и через окно командного модуля – двадцать тёмных крестов на голубом фоне, выстраивающихся в трёхмерную конфигурацию. Без тумана они выглядели иначе: не призрачно, а механически, как детали одного механизма, расставленные невидимой рукой.

Карта на левом мониторе начала проявляться сразу – быстрее, чем в первый раз. Модуль синхронизации Воронова работал точнее: задержки сократились с десяти до шести миллисекунд, когерентность выросла с девяноста семи до девяноста девяти процентов. Карта была чётче, детальнее. Воронов видел не просто контуры зданий – он видел отдельные деревья в лесополосе, машину на дороге за полигоном, столб линии электропередач в двух километрах к северу.

– Разрешение выросло на сорок процентов, – сказал Разумов. Он сидел за своей станцией, и в его голосе было то самое голодное удовлетворение, которое появлялось каждый раз, когда цифры подтверждали его правоту. – Мой модуль оптимизирует диаграмму направленности в реальном времени. Видишь? Луч сужается, когда рой сканирует дальние объекты, и расширяется на ближних. Как зрачок.

Воронов видел. И он видел другое: алгоритм Разумова менял параметры сигналов без команды. Не грубо – тонко. Микросекундные поправки к длительности импульса. Перераспределение мощности между элементами решётки. Вещи, которые Воронов не запрещал, потому что не думал, что алгоритм до них доберётся. Но алгоритм добрался. И результат был лучше.

На восьмой минуте Марина произнесла контрольную фразу:

– Все системы номинал. Температуры в пределах. Батареи – восемьдесят два процента. Продолжаем.

На десятой минуте всё изменилось.

Дрон номер семь – тот самый, с заменённой термопастой, – шёл по юго-восточному краю конфигурации, на высоте двести двадцать метров. Его траектория проходила над лесополосой – полоса старых берёз и елей шириной метров тридцать, на восточной границе полигона. Лесополоса была на карте. Она была в расчётах. Она не должна была стать проблемой.

Но в расчётах не было мёртвой берёзы, которая потеряла вершину за зиму. Обломанный ствол торчал выше остальных деревьев на четыре метра – белый, голый, острый, как палец, указывающий в небо. Ни одна карта не показывала его, потому что он появился после последней аэросъёмки.

Дрон номер семь снижался, чтобы уплотнить нижний ярус конфигурации – решение алгоритма Разумова, оптимизировавшего разрешение карты для объектов на земле. Снижение было плавным: метр в секунду, штатный режим. На высоте двести десять метров. Двести. Сто девяносто. Сто восемьдесят.

Марина увидела первой.

– Седьмой, высота! – Она шагнула к пульту. – Лесополоса в ста двадцати метрах. Минимальный зазор нарушен!

Воронов посмотрел на карту. Дрон номер семь был отмечен жёлтым – система распознала приближение к препятствию. Но алгоритм Разумова считал, что зазор достаточен. По его данным, верхняя граница лесополосы – сто шестьдесят метров. Дрон был на ста семидесяти восьми. Восемнадцать метров зазора. Формально – в пределах нормы.

Мёртвая берёза была на ста семидесяти четырёх.

– Подъём! – крикнула Марина. – Седьмой, принудительный подъём!

Команда ушла. Дрон начал подниматься. Но алгоритм Разумова послал контркоманду – через двести миллисекунд после первой. Он определил, что подъём ухудшит когерентность нижнего яруса на одиннадцать процентов, и скорректировал траекторию: не вверх, а вбок. Влево. Над лесополосой, а не от неё.

Двести миллисекунд. Время, за которое дрон пролетел четыре метра.

Левый луч дрона номер семь зацепил верхушку мёртвой берёзы. Звук был короткий – сухой треск, как будто кто-то сломал ветку. Но это была не ветка. Это был карбоновый луч, который держал левый передний винт. Луч лопнул в месте крепления, и винт улетел вниз, вращаясь, как семечко клёна.

Дрон накренился. Тридцать градусов. Сорок пять. Система стабилизации пыталась компенсировать – три оставшихся винта вышли на максимальные обороты. На секунду показалось, что это сработает: крен стабилизировался на пятидесяти градусах. Но без четвёртого винта баланс тяги был нарушен, и дрон начал вращаться вокруг вертикальной оси, медленно, потом быстрее.

Потом упал.

Он упал в лесополосу – между берёзами, ломая ветки, со звуком, который Воронов будет помнить: не грохот, а серия ударов, каждый тише предыдущего, как будто лес ловил дрон и клал его на землю, слой за слоем.

В командном модуле стало тихо. Строка телеметрии дрона номер семь мигнула красным и погасла. На карте появилась серая точка в лесополосе – последние координаты.

А потом рой перестроился.

Воронов потом будет прокручивать эти секунды десятки раз. Замедлять, ускорять, ставить на паузу, смотреть покадрово. Но в первый момент он просто замер и смотрел на центральный монитор, на котором девятнадцать точек начали двигаться.

Ноль две секунды после падения: алгоритм зарегистрировал потерю узла. Девятнадцать строк телеметрии из двадцати – зелёные. Одна – мёртвая.

Ноль четыре секунды: модуль Разумова активировал перестройку. Девятнадцать дронов начали менять позиции. Не хаотично. Не по одной из семи схем Воронова. И не так, как в первом полёте – не по восьмой, импровизированной схеме. По девятой. Новой. Которой раньше не существовало.

Ноль шесть секунды: алгоритм сделал то, чего не делал никогда. Он не просто перестроил геометрию роя. Он перераспределил роли. Три дрона из верхнего яруса – номера четыре, одиннадцать и шестнадцать – спустились ниже, заняв уровень упавшего седьмого. При этом они изменили не только высоту, но и ориентацию своих антенных решёток. Наклонили их на семь градусов к горизонту, чтобы компенсировать изменение геометрии виртуальной антенны.

Ноль восемь секунды: новая конфигурация завершена. Карта на левом мониторе мигнула – и восстановилась. С потерей разрешения в восемь процентов. Меньше, чем в первом полёте, когда потеря четырнадцатого дрона стоила двенадцать.

Ноль восемь секунды. Быстрее, чем человек моргает.

– Рой стабилен, – сказал Разумов. Его голос дрожал, но не от страха – от возбуждения. – Девятнадцать узлов, когерентность девяносто один процент. Карта восстановлена. Потери разрешения минимальны.

Марина не ответила. Она стояла у пульта и смотрела на экран так, как смотрят на животное, которое только что сделало что-то, чего не должно было уметь. Её правая рука лежала на красной кнопке – и не убиралась.

– Марина Андреевна, – сказал Воронов. – Рой стабилен. Можно продолжить.

– Нет. Посадка. Все.

– Но…

– Все. Сейчас.

Она нажала кнопку общей посадки. Девятнадцать дронов начали снижаться, один за другим, как птицы, складывающие крылья на закате. Они садились на свои площадки – точно, аккуратно, без ошибок. Каждый – на своё место. Кроме седьмого, который лежал в лесополосе с оторванным лучом.

Марина сняла руку с красной кнопки. Воронов заметил, что пальцы у неё побелели от давления.

Они собрались в командном модуле через час. За этот час Павлов лично нашёл седьмой дрон в лесополосе – он лежал на боку, между двумя берёзами, с оторванным лучом и разбитым колпаком антенной решётки. Павлов сфотографировал его со всех сторон, извлёк бортовой накопитель и принёс его в модуль, положив на стол рядом с термосом.

Марина открыла блокнот. Новую страницу. Написала сверху дату и время. Под ними – одно слово: «Авария».

– Факты, – сказала она. – Дрон номер семь потерян. Столкновение с деревом на восточной границе полигона. Причина – снижение ниже безопасной высоты в зоне лесополосы. Аппаратные повреждения: оторван левый передний луч, разбит радиопрозрачный колпак, повреждена антенная решётка. Восстановление возможно, срок – неделя.

Она посмотрела на Воронова.

– Теперь – почему.

Воронов был готов к этому вопросу. Он готовился к нему последний час, пока Павлов искал дрон в лесополосе, а Разумов молча листал логи.

– Две причины. Первая – неполные данные о препятствиях. Мёртвое дерево на четыре метра выше основного массива. Его нет ни на одной карте, потому что оно появилось после последней аэросъёмки. Вторая – конфликт команд. Я послал команду на подъём. Модуль Разумова послал контркоманду на боковое смещение через двести миллисекунд. Дрон выполнил контркоманду, потому что она пришла позже и имела более высокий приоритет в стеке управления.