
Вот и весь комплект, если есть CAN-шина.
Всего пять лет назад не было нормально работающих нейросетей для того же определения препятствий и краёв стеблестоя, поэтому не было и видеоаналитики. Были «слепые» GPS-методы, которые на практике оказались далеко не лучшими и сильно подмочили престиж автоматизации в сельском хозяйстве. Через пять лет, как мы считаем, все комбайны будут автоматизированы именно визуальными автопилотами, чтобы смотреть из кабины и в стороны и контролировать все аспекты уборки урожая.
Мы находимся в том моменте, когда у нас уже есть готовые технологии, они отлично опробованы, дёшевы и имеют годовую практику эксплуатации, и крупные производители комбайнов с интересом на них смотрят. Скорее всего, будет как с автомагнитолами: сначала они ставятся в машины, а потом машины приходят с уже встроенными. Вот и мы сейчас модифицируем старые комбайны, но хотим занять место в экосистеме и ставить комплекс на все новые.
Такой проект мог стартовать у нас, в Бразилии и ещё в паре стран из-за особенностей рынка. Нужна страна с сельским хозяйством, разработчиками внутри, неэффективной уборкой (то есть чёткой болью сэкономить) и новым парком комбайнов. Повезло со всем, включая парк: после СССР всё развалилось, и сейчас мы наблюдаем машины примерно четырёх- пятилетней давности в основных хозяйствах.
В России 350 тысяч комбайнов, и поставляется ещё 35 тысяч в год. Это не рынок автомобилей, конечно, но, сделав правильное решение сейчас, пока туда ещё никто не пришёл, можно получить его весь.
Но давайте расскажу лучше, как именно это работает и как мы модифицируем комбайны в России.

Как проходит рабочий день оператора комбайна с нашим Agro Pilot.
Комбайнёр — оператор или механизатор — приходит в семь утра на поле. Если это не первый день, то машина стоит уже непосредственно посреди сельхозкультуры. Проводятся настройки под следующий участок, прогревание. В девять утра роса сходит с полей, можно начинать. Закончить нужно к темноте, когда влажность снова повысится. В дождь работать нельзя. Примерно за две недели надо успеть собрать всё зерно, пока оно не переспеет и не высыплется на землю: чем дальше, тем больше будут потери. Начинать раньше нельзя: зерно ещё не созрело. Поэтом�� именно в этот пик нагрузок любой простой, любая ошибка или авария стоят очень дорого.
Смена длится до 14 часов монотонной работы. Оператору нужно:
- Очень аккуратно и ровно рулить, стараясь двигаться по прямой параллельно скошенному участку. Это основной приоритет живого человека. Это муторная работа по наблюдению вбок.
- Следить за режимом уборки культуры: в зависимости от зрелости, высоты и частоты стеблестоя нужно менять 20–22 параметра, включая скорость движения на участке. Это работа по наблюдению за тем, как вращается шнек. Весь день.
- Смотреть за качеством зерна на выходе — надо иногда смотреть назад.
- Думать про транспорт для выгрузки зерна — когда и как его звать.
- Двигаться при этом согласованно с другими комбайнами.
Вот здесь мой коллега Эдуард рассказал подробнее про особенности того, почему в итоге операторы сосредотачиваются только на рулении, оставляют настройки по умолчанию в механизме сбора и часто пропускают опору ЛЭП или трактор впереди и врезаются на 10-й час смены.
Короткий итог: человек может или рулить, или следить за качеством уборки. Рулить у него получается плохо, потому что комбайн имеет габарит 12 метров по жатке, и часто остаются большие непрокошенные полосы из-за неидеальных поворотов.
Если снять нагрузку по рулению, то внезапно чудесным образом повышается сбор зерна. В нашей практике прошлого года с одного и того же участка — на 3 % за счёт того, что у оператора есть возможность точнее смотреть за тем, что творится впереди. И ещё примерно на 3–5 % — за счёт удержания захвата без «пупков» и больших непрокошенных частей. Плюс нет аварий.
В общем, это очень нужная вещь, которая давно была бы реализована, если бы имелась техническая возможность.
Техническая возможность появилась
Вот что делает автопилот:

То есть:
- Ведёт комбайн так как надо по особенностям роста текущей культуры и по тому, как прошли комбайны до него.
- Позволяет работать вместе смешанному парку: как тем машинам, у кого есть автопилот, так и с ручным управлением. Автопилоту нет никакой разницы.
- Очень чётко держит расстояние между проходами, обеспечивая минимум непрокошенных.
- Ищет препятствия, классифицирует их и принимает решение, что делать: объезжать, тормозить или, пока есть время, предупреждать оператора.
- Поддержка оптимальной скорости для конкретной ситуации. Есть такая особенность: чтобы комбайн убирал чисто, нужно держать интервал от 6 до 6,5 километра в час для, скажем, пшеницы на конкретной модели. Если переходим через эту черту, то объём массы будет больше, бичи перестанут выбивать все зёрна, и дальше потери увеличиваются в геометрической прогрессии от скорости: семь километров — 0,2 %, восемь — 0,5 % и так далее.
Агротехническая оценка одного из комбайнов по результатам лабораторно-полевых испытаний
Как влияет скорость на эффективность сбора
| Показатель | Значение показателя по данным испытаний | ||||||||
| Пшеница | Рапс | Соя | |||||||
| Фон 1 | Фон 2 | Фон 3 | |||||||
| Режим работы | |||||||||
| Скорость движения агрегата, км/ч | 4,1 | 5,4 | 6,3 | 4,5 | 5,6 | 7 | 2,8 | 3,6 | 4,3 |
| Рабочая ширина захвата адаптера, м | 4,8 | ||||||||
| Установочная высота среза, см | 14 | 23 | 6 | ||||||
| Показатели качества выполнения техпроцесса | |||||||||
| Высота среза: | |||||||||
| — средняя фактическая, см | — | 13 | 13 | 22 | 22 | 22 | 5 | 5 | 5 |
| — | 1,4 | 1,42 | 1,65 | 1,86 | 3,37 | 1,35 | 1,47 | 1,19 | |
| — стандартное отклонение, см | — | 9,6 | 9,5 | 8 | 8,6 | 14,8 | 12,2 | 12,1 | 9,4 |
| — коэффициент вариации, % | |||||||||
| Потери зерна за адаптером при полеглости хлебов до 20%, всего, % | — | 0,13 | 0,17 | 0,27 | 0,35 | 0,36 | 0,56 | 0,62 | 0,74 |
| В том числе зерном: | |||||||||
| — свободным | — | 0,08 | 0,11 | 0,2 | 0,24 | 0,25 | 0,29 | 0,32 | 0,31 |
| — в срезанных колосьях | — | 0,05 | 0,06 | 0,07 | 0,11 | 0,11 | 0,24 | 0,27 | 0,4 |
| — в несрезанных колосьях | — | 0 | 0 | 0 | 0 | 0 | 0,03 | 0,03 | 0,03 |
| Производительность, т/ч | 10,7 | 15,3 | 16,1 | 2,7 | 3,4 | 4,5 | 3,6 | 4,1 | 6,1 |
| Подача фактическая, кг/с | 5,28 | 6,75 | 7,72 | 2,09 | 2,68 | 4,84 | 4 | 5,3 | 7 |
| Подача приведённая, кг/с | 3,85 | 4,15 | 5,37 | 2,23 | 2,87 | 5,99 | 5 | 7 | 8,7 |
| Потери зерна за молотилкой, всего, %, | 0,83 | 0,93 | 1,01 | 0,39 | 0,44 | 0,5 | 0,33 | 0,49 | 0,53 |
| в том ч��сле: | 0,24 | 0,37 | 0,42 | 0,27 | 0,32 | 0,37 | 0,26 | 0,42 | 0,45 |
| — за соломотрясом | |||||||||
| — за очисткой | 0,43 | 0,41 | 0,45 | 0 | 0 | ||||
| — из-за недостаточного уплотнения молотилки комбайна | — | 0,003 | — | не определялись | не определялись | ||||
| — потери зерна распылом, % | 0,16 | 0,15 | 0,14 | 0,12 | 0,12 | 0,13 | 0,06 | 0,07 | 0,08 |
| Качество зерна из бункера комбайна, %: | |||||||||
| — дробление | 1,56 | 1,5 | 1,41 | 1,18 | 1,2 | 1,27 | 0,62 | 0,6911,27 | 0,83 |
| — сорная примесь | 0,42 | 0,5 | 0,57 | 0,88 | 0,89 | 1,09 | 1,32 | 98,04 | 1,72 |
| — содержание зерна (семян) основной культуры | 98,02 | 98 | 98,02 | 97,94 | 97,91 | 97,64 | 98,06 | 97,45 | |
| Ширина валка при укладке соломы в валок, мм | 1052 | 1048 | 1063 | не определялась | не определялась | ||||
Основная функция нашего оборудования сейчас — не автовождение, а исключение человеческого фактора из работы оператора. Базовый комплект нашего оборудования помогает исключать недозахват жаток и лишние прогоны.
Что в начинке
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 в редких случаях (потому что по монокамере в движении тоже можно получить геометрию). Но в поле такие попадаются редко.
В кукурузе (стеблестой три метра) важно искать столбы, к примеру. Раз у нас появилось определение, что тут — культура, а что — препятствие, то дальше можно было отличать, где какая культура находится.

А это уже автопилот второго уровня:


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

Как говорит Эдуард, который это объясняет сельхозхозяйствам, люди сами прекрасно понимают, что уборка — это основная точка автоматизации. Там день год кормит. И они стараются всеми силами исключить человеческие ошибки. В итоге мы договариваемся на «посмотреть». До сезона приезжает сервисная группа наша или дилеров, устанавливают всё. Дальше проводят проверку-калибровку. Или перед уборочным периодом сразу калибруются, день-полтора займёт.
Если интересно, то дальше могу рассказать или про особенности распознавания всего того, что встречается на полях, или про то, как мы чудесно собираем обучающие выборки, потому что гот��вые отвратительны и не подходят для российских условий. Это ещё связано с тем, что мы первые, кто вообще что-то делает с этой темой по миру, и поэтому каких-то наработанных практик ещё нет.
P. S. Если вашего агронома нет на Хабре, а ему это интересно, то можно вот тут вот найти контакты: promo.cognitivepilot.com и предметно обсудить, для какого комбайна какой конкретно набор техники нужен, сколько примерно стоит, и как это можно быстро посмотреть-испытать.
