Всего пять лет назад не было нормально работающих нейросетей для того же определения препятствий и краёв стеблестоя, поэтому не было и видеоаналитики. Были «слепые» GPS-методы, которые на практике оказались далеко не лучшими и сильно подмочили престиж автоматизации в сельском хозяйстве.
Через пять лет, как мы считаем, все комбайны будут автоматизированы именно визуальными автопилотами, чтобы смотреть из кабины и в стороны и контролировать все аспекты уборки урожая.
Мы находимся в том моменте, когда у нас уже есть готовые технологии, они отлично опробованы, дёшевы и имеют годовую практику эксплуатации, и крупные производители комбайнов с интересом на них смотрят. Скорее всего, будет как с автомагнитолами: сначала они ставятся в машины, а потом машины приходят с уже встроенными. Вот и мы сейчас модифицируем старые комбайны, но хотим занять место в экосистеме и ставить комплекс на все новые.
Такой проект мог стартовать у нас, в Бразилии и ещё в паре стран из-за особенностей рынка. Нужна страна с сельским хозяйством, разработчиками внутри, неэффективной уборкой (то есть чёткой болью сэкономить) и новым парком комбайнов. Повезло со всем, включая парк: после СССР всё развалилось, и сейчас мы наблюдаем машины примерно четырёх- пятилетней давности в основных хозяйствах.
В России 350 тысяч комбайнов, и поставляется ещё 35 тысяч в год. Это не рынок автомобилей, конечно, но, сделав правильное решение сейчас, пока туда ещё никто не пришёл, можно получить его весь.
Но давайте расскажу лучше, как именно это работает и как мы модифицируем комбайны в России.
Комбайнёр — оператор или механизатор — приходит в семь утра на поле. Если это не первый день, то машина стоит уже непосредственно посреди сельхозкультуры. Проводятся настройки под следующий участок, прогревание. В девять утра роса сходит с полей, можно начинать. Закончить нужно к темноте, когда влажность снова повысится. В дождь работать нельзя. Примерно за две недели надо успеть собрать всё зерно, пока оно не переспеет и не высыплется на землю: чем дальше, тем больше будут потери. Начинать раньше нельзя: зерно ещё не созрело. Поэтому именно в этот пик нагрузок любой простой, любая ошибка или авария стоят очень дорого.
Смена длится до 14 часов монотонной работы. Оператору нужно:
- Очень аккуратно и ровно рулить, стараясь двигаться по прямой параллельно скошенному участку. Это основной приоритет живого человека. Это муторная работа по наблюдению вбок.
- Следить за режимом уборки культуры: в зависимости от зрелости, высоты и частоты стеблестоя нужно менять 20–22 параметра, включая скорость движения на участке. Это работа по наблюдению за тем, как вращается шнек. Весь день.
- Смотреть за качеством зерна на выходе — надо иногда смотреть назад.
- Думать про транспорт для выгрузки зерна — когда и как его звать.
- Двигаться при этом согласованно с другими комбайнами.
Вот здесь мой коллега Эдуард рассказал подробнее про особенности того, почему в итоге операторы сосредотачиваются только на рулении, оставляют настройки по умолчанию в механизме сбора и часто пропускают опору ЛЭП или трактор впереди и врезаются на 10-й час смены.
Короткий итог: человек может или рулить, или следить за качеством уборки. Рулить у него получается плохо, потому что комбайн имеет габарит 12 метров по жатке, и часто остаются большие непрокошенные полосы из-за неидеальных поворотов.
Если снять нагрузку по рулению, то внезапно чудесным образом повышается сбор зерна. В нашей практике прошлого года с одного и того же участка — на 3 % за счёт того, что у оператора есть возможность точнее смотреть за тем, что творится впереди. И ещё примерно на 3–5 % — за счёт удержания захвата без «пупков» и больших непрокошенных частей. Плюс нет аварий.
В общем, это очень нужная вещь, которая давно была бы реализована, если бы имелась техническая возможность.
Техническая возможность появилась. Вот что делает автопилот:
- Ведёт комбайн так как надо по особенностям роста текущей культуры и по тому, как прошли комбайны до него.
- Позволяет работать вместе смешанному парку: как тем машинам, у кого есть автопилот, так и с ручным управлением. Автопилоту нет никакой разницы.
- Очень чётко держит расстояние между проходами, обеспечивая минимум непрокошенных.
- Ищет препятствия, классифицирует их и принимает решение, что делать: объезжать, тормозить или, пока есть время, предупреждать оператора.
- Поддержка оптимальной скорости для конкретной ситуации. Есть такая особенность: чтобы комбайн убирал чисто, нужно держать интервал от 6 до 6,5 километра в час для, скажем, пшеницы на конкретной модели. Если переходим через эту черту, то объём массы будет больше, бичи перестанут выбивать все зёрна, и дальше потери увеличиваются в геометрической прогрессии от скорости: семь километров — 0,2 %, восемь — 0,5 % и так далее.
Основная функция нашего оборудования сейчас — не автовождение, а исключение человеческого фактора из работы оператора. Базовый комплект нашего оборудования помогает исключать недозахват жаток и лишние прогоны.
Что в начинке
1. Камера 2 МП на кронштейн зеркала. Мы ориентируемся только по камере: это основной датчик. Больше ничего не требуется.
2. Дисплей в кабине: это интерфейс для оператора. Через него делаются предупреждения и настройки.
3. Блок управления под кабину: там NVIDIA TX2. Там крутится основной стек алгоритмов, обрабатывается видео, и оттуда отдаются команды на CAN-шину.
Блок 340х290х60 мм, 40 ватт.
Модуль для отдачи команд подключается к CAN-шине или другому системному вводу-выводу комбайна. Здесь есть пара засад, в частности, с тем, что не везде такое возможно, и не везде управление гидравликой возможно через этот интерфейс.
В случае комбайна последних пяти лет выпуска это почти всегда всё: коробка с мозгами, камера, дисплей в кабину.
Датчик поворота колёс нужен на тот случай, если комбайн старый или без подготовки, и мы не можем получить эти данные из системной шины. Нам нужны данные для одометрии (скорость движения и угол поворота колёс):
Насос-дозатор в систему гидравлики нужен для непосредственного управления гидравликой нашим ко-пилотом:
Первая засада с CAN-шиной в том, что не всегда есть понятная документация. В теории попадаются и другие варианты получения сигналов из шины, но на практике России это очень редкие случаи. В общем, в лучшем случае есть какое-то системное API и дырка для кабеля. В простом случае мы связываемся с производителем этой дырки и просим прислать описание протокола. Через пару недель переговоров они понимают, кто мы и что нужно, и присылают. Не все это воспринимают просто, но крупные производители нам отчасти рады, потому что знают: в прошлом году мы поставили наши решения в ряд хозяйств и крупных агрокомплексов, чем навели немного шума в СМИ.
И они часто тут же спрашивают, можно ли наши технологии интегрировать в комбайн будущего. Это отдельная история, но в результате первой части у нас есть протокол, и всё хорошо.
В идеальном мире этим бы и закончилось. К сожалению, иногда всё-таки попадаются случаи, когда документации нет или у производителя не удаётся получить внятного описания. В таком случае мы подключаемся и реверсим шину. Конечно, есть протокол J1939, которому производители должны бы следовать, вот только не все это делают. Обычно подключаешься с отладочной утилитой, получаешь все пакеты с переменными и просто сидишь с оператором, нажимающим на кнопки. Поехал — где-то ноль стал положительным числом. Ускорился — число выросло. Замедлился — снизилось. Ага, скорость попалась. И так — весь день. Дальше надо поймать корреляцию и подобрать коэффициенты преобразования. Один раз поймали очень неприятный баг с тем, что на тестовой площадке работало, а в поле — нет. Комбайн в мирном режиме слал одни пакеты, а со включёнными жаткой и мотовилом переходил в особый боевой режим и начинал в тех же отловленных пакетах слать свои особые боевые сообщения. Нам пришлось собирать адовыми способами признаки данных. Как оказалось, в те же пакеты в те же переменные жатка нормально давала свою информацию, а разработчик шины всё это дико соптимизировал, чтобы не задавать новые переменные. Наверное, он в конкурсе 256b-intro в свободное время участвует.
На гидравлике тоже были сюрпризы. Хоть в партнёрах есть Danfoss, хоть они и помогли всем, чем возможно, и дали подробные схемы, проверить всё можно, только запустив комбайн. Где-то комплектующие слегка встали на границе, поэтому система для заказчика приехала к уборке урожая (и это только один из случаев). То есть надо было ночью смонтировать это всё, запуститься, проверить и, если хоть что-то не так, снять, чтобы утром комбайн можно было использовать дальше. Приехали к восьми вечера и начали шаманить с гидравликой. Первый монтаж мы закончили в четыре часа ночи. Не знали, заведётся или нет. Если не получится, то надо будет разбирать и вернуть штатное состояние. Завели — работает. Рулит как надо. Это самый крутой hello world в нашей жизни. Я не так себе представлял работу с нейросетями, но куда без этого.
В комплект можно добавить сотовый модем для отправки телеметрии. При этом в комплекте не нужен GPS. Это огромный плюс. Чтобы обычное GPS-вождение нормально работало, нужно заранее составить карту, выставить RTK-станцию для поправок либо купить пакет сигналов и так далее. И ещё нажимать кнопки и менюшки, а механизаторы очень не любят пользовательские интерфейсы. У нас камера-коробка-сели-поехали. Не требуется картировать поле, чтобы нарезать его на загонки. Нужно подъехать к полю. Робот скажет: «О, ура, поле!» И просто поедет.
Почему только камера для вождения
В 2014 году мы взяли научный грант на прототип комплексной системы управления сельскохозяйственным предприятием с использованием ИИ. Погрузились в бизнес сельхозпроизводителей и посмотрели самые очевидные точки автоматизации. Россия — очень рисковое земледелие (один урожай в год, а в Бразилии — пять). Целый год возделываешь поле: дорогой посевной материал (это самое дорогое), потом прыскаешь дорогими химикатами (вторая статья расходов), проводишь цикл работ по подготовке почв, культур. Это целый год с марта по осень. И только осенью у тебя две недели, когда надо собрать урожай. Если что-то идёт не так, то плюс-минус день может быть 10 % потери урожая.
Комбайн не вышел, комбайнёр запил, криво покосил — сломал по дороге. Всё, простой часами и днями.
Именно с распознавания препятствий мы и начали. Сразу напрашивался лидар, но он дорогой, поэтому камера. Раз монокамера — нужно сразу распознавание образов. Потому что нужно не только увидеть, но и понять, что это, какого оно размера, как себя поведёт, чего ждать. Мы либо стоим на месте, либо движемся вперёд, а нужно знать относительное расстояние до объекта и ещё помнить про жатку 7,5 или 9 метров в разные стороны (и это не максимум, часто на ходовых моделях встречается и 12-13 метров). Всё равно на таких размерах можно на развороте случайно смолотить механизатора трактора или заправщика, вышедшего по малой нужде.
Нейросетки отлично справляются. Но всё же, поскольку у нас монокамера, можно обмануть алгоритм моделью комбайна 1:40 в редких случаях (потому что по монокамере в движении тоже можно получить геометрию). Но в поле такие попадаются редко.
В кукурузе (стеблестой три метра) важно искать столбы, к примеру. Раз у нас появилось определение, что тут — культура, а что — препятствие, то дальше можно было отличать, где какая культура находится.
Очень сложно было с самой культурой. На первых итерациях выездов мы приезжали в поле на новую культуру или специфично выглядевшую. Агроном плохо следил, например, не опрыскивали вовремя. Низкорослая культура с сорняками — нейросеть не скушает. Однажды было так, что мы приехали в хозяйство на испытания. А там резко другой климат, и ячмень выглядит совсем не так, как в справочнике агронома. А у нас сегментация не распознает нескошенную и скошенную части корректно. Данных для обучающей выборки было мало, мы же сами их снимали. Весь день до вечера катались с механизатором по полям, снимали новую выборку. Ночью сели в гостинице своим составом размечать эти данные. Поставили на дообучение сеть. На следующий день всё заездило на новом поле.
Вот так можно добрасывать целевую выборку:
Как говорит Эдуард, который это объясняет сельхозхозяйствам, люди сами прекрасно понимают, что уборка — это основная точка автоматизации. Там день год кормит. И они стараются всеми силами исключить человеческие ошибки. В итоге мы договариваемся на «посмотреть». До сезона приезжает сервисная группа наша или дилеров, устанавливают всё. Дальше проводят проверку-калибровку. Или перед уборочным периодом сразу калибруются, день-полтора займёт.
Если интересно, то дальше могу рассказать или про особенности распознавания всего того, что встречается на полях, или про то, как мы чудесно собираем обучающие выборки, потому что готовые отвратительны и не подходят для российских условий. Это ещё связано с тем, что мы первые, кто вообще что-то делает с этой темой по миру, и поэтому каких-то наработанных практик ещё нет.