От домашнего ПК до станции для ML и тест-установок — 9 кейсов о сборке интересного «железа»

В этой статье — 9 историй от ІТ-специалистов об интересном «железе», которое они сами собирали или улучшали. Кейсы самые разные — от сборки домашнего ПК, станции для машинного обучения до установок для тестирования устройств и embedded AI-системы.

Содержание

— Робот Валл-и (для тестирования датчика наклона и открытия дверей / окон)
— Робособака (для тестирования датчиков движения)
— Система для моніторингу відвідувачів виставки
— Миниатюрный ПК
— Компьютер для машинного обучения
— Обладнання для роботи з шиною CAN FD
— Компьютер-стенд для эстетики на рабочем месте
— Станция машинного обучения
— Комплекс для тестирования автомобильных устройств

Еще один кейс от инженера Wargaming мы опубликовали отдельно: Как мы создали UX-лабораторию для своих продуктов.

Георгий, Acting R&D Director в Ajax Systems

Робот Валл-и

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

Мы начали собирать тест-стенды и первым сделали стенд для датчика наклона и открытия дверей/окон DoorProtect Plus. В «стенд» входил электромагнит, вибромоторчик, движок, наклоняющий датчик под определенным углом, схема регулировки подачи напряжения на датчик и капсула, которую мы могли разогреть до +60 и охладить до —15 с помощью элементов Пельтье. Таким образом стенд проверял все: общение датчика с хабом в радиоэфире, реакцию на наклон или вибрацию, геркон, работу в разных температурных диапазонах и так далее.

Тест-стенд «Валл-и» для датчика DoorProtect Plus

Мы развели платы, собрали стенд, написали к нему софт, дописали что-то типа API, которое позволяло управлять стендом с компьютера, и начали описывать на Python тесты, которые раньше гоняли мануально. Спустя некоторое время получили стенд, прогоняющий за 15 часов весь регресс, на который раньше уходила неделя.

Нам понравилось, как он справлялся, и мы продолжили собирать стенды для остальных датчиков Ajax: построили искусственные объекты, на которых гоняются юзер-кейсы для каждого датчика, а софт проверяет, все ли работает как надо.

Для большинства эта история покажется смешной, потому что в мире софта все уже привыкли к автотестам и постоянно тестируют ими алгоритмы. Но попробуйте автоматизировать хард :) Не все так легко, как кажется.

Робособака

Датчики движения системы безопасности Ajax должны реагировать только на человека, а не на собак или кошек, поэтому QA-отделу пришлось придумывать, как тестировать движения животных в условиях офиса и без самих животных. Для этого у нас есть тестовое устройство «робособака».

Первый прототип выглядел не так, как сейчас. Это была 25-литровая пластиковая канистра для бензина, она стояла на деревянной платформе с 4 колёсиками и веревкой спереди. Для того чтобы нагреть канистру до температуры тела собаки, использовали обычный чайник и пирометр.

Первая версия

Когда надоело толкать эту «собачку», мы купили бэушную детскую машинку на радиоуправлении и начали думать, как ее модернизировать. Нужно было решить проблему циркуляции воды, нагрева канистры, зарядки аккумуляторов. Кроме того, мы хотели как-то усовершенствовать машинку, чтобы она ездила более плавно.

Для нагрева воды добавили в канистру аквариумные нагреватели и термодатчики. Они управлялись с STM-платы и поддерживали нужную температуру. Для того чтобы вода циркулировала по «собаке» и вся была одинаковой температуры, использовали циркулятор от большого аквариума. А чтобы эта громадина могла ездить достаточно быстро и резко поворачивать, переделали двигатели на более мощные.

Эта машинка прожила полтора года, но и у неё были изъяны: каркас не был рассчитан на постоянную нагрузку канистрой и аккумуляторами, поэтому начал разваливаться. А в протоколе связи машинки по-прежнему не было возможности увеличивать / уменьшать ее скорость настолько плавно, насколько мы хотели.

Тогда решили собрать что-то своё с нуля. То, что сможет удовлетворить все наши желания и прослужить долго. Вместо канистры использовали пластиковый куб с воздухом. Он подогревался током, текущим по проводам (если объяснять по-простому). Также решили добавить хорошую амортизацию, чтобы машина могла преодолевать неровные поверхности. Всю электронику и софт для нее тоже сделали своими руками, чтобы при необходимости менять что угодно.

Вторая версия

Так мы собрали каркас, поставили моторы, развели платы управления нагревом и моторами, развели плату пульта, подружили всю электронику друг с другом, вывели все управление скоростями, температурой и прочим на сенсорный экран на пульте и получили то, что хотели. Работы по сборке еще идут, но отдельно все работает, и мы этому очень рады.

Євгеній Карплюк, IoT Technical Lead, Ciklum

Система для моніторингу відвідувачів виставки

Ще у доковідні часи ми створили embedded AI-систему для виставок. Це обладнання мало моніторити кількість відвідувачів на нашому стенді та виявляти, що найбільше їх зацікавило. Система будувала «теплові карти» — схему та оцінку того, скільки людей перебуває на певній площі, а також у тестовому режимі визначала їхню стать, приблизний вік тощо.

Як ми зробили це. Склали «решітку» з недорогих бездротових камер, що побудовані на основі відомої нам платформи, мікроконтролера ESP32. Дані з них збираються на модуль NVIDIA Jetson TX2 та обробляються в реальному часі попередньо натренованою моделлю глибинного навчання. Зокрема, система вміє розпізнавати обличчя та рахувати кількість людей. Заради експерименту ми навіть перевіряли функцію eye tracking («відстеження погляду»), щоб зрозуміти, що саме приваблює увагу відвідувачів.

Як локальний датахаб застосували екосистему Home Assistant, що може працювати зі сторонніми девайсами та сенсорами, а також візуалізувати дані. З програмного боку додали дашборди в реальному часі, панель для доступу до вихідних даних, а також можливість інтеграції з аналітичними інструментами на кшталт PowerBI чи Grafana.

Запрацювало не все одразу. Спочатку ми хотіли використовувати SBC на основі SoM загального призначення на ARM Cortex A15. Утім вже на етапі розробки й тестування виявилося, що бракує продуктивності. Отримували суттєву затримку (низький FPS, що може спричинити втрату даних), або треба було б значно спрощувати натреновану модель глибинного навчання (а це призвело б до похибок розпізнавання). Після цього ми вирішили застосовувати саме спеціалізований SoM від NVIDIA з апаратним прискоренням.

Приклад роботи системи

Камери

Тепер ми з нетерпінням чекаємо можливості повернутися на виставки та до живого спілкування. Наша система поки що розгорнута на одному з поверхів офісу Ciklum на Амосова. Більшість спеціалістів працює у віддаленому режимі, тож системі майже нікого «трекати». Однак в нових обставинах AI-система теж корисна: вона може стежити за дотриманням соціальної дистанції та попереджувати про порушення.

Николай Литвинчук, Senior Java Developer в DataArt

Миниатюрный ПК

Еще до начала пандемии, когда существовало понятие «работа из дома» и не хотелось таскать с собой рабочий ноутбук, возникла идея собрать запасной недорогой компьютер. Я хотел, чтобы этот ПК не занимал много места дома и мог подстраховать при необходимости по работе. Также планировал использовать его как машину для ознакомления с новыми технологиями, без боязни ее «загадить», и если что — быстро переустановить ось.

Из первоначальной сборки до финального результата пришлось поменять все, кроме материнской платы и блока питания, но с модификацией. Изначально я купил корпус SFF-формата на 4,7 литра (это в 9 раз меньше стандартного объема компьютерного корпуса). Впоследствии получилось уменьшить его до 3,3 литра, так как часть пространства в первом отводилась для видеокарты, которая была мне не нужна.

Процессор Ryzen 3 3200G я поменял на Ryzen 5 3400G просто потому, что на вторичном рынке попался экземпляр по хорошей цене и был сильнее первого. Хотя коробочный вентилятор и влез в корпус после откручивания защитной рамки, его пришлось заменить на низкопрофильный от Noctua из-за неприятного шума при больших нагрузках. Материнскую плату выбрал единственного поддерживаемого формата — mini-ITX на чипсете B450 от ASRock.

Наибольшие проблемы вызвал блок питания, так как в такой корпус можно вставить только БП Flex-ATX формата. Этот формат предназначен для серверов. Изначально меня это слегка смутило, и не зря. Алгоритм контроля вентилятора был настроен так, что включался только при нагрузках. При первом старте компьютера все было идеально, пока не запустился ОН. Звук был настолько громкий и неприятный, что пришлось раскрутить БП и выбросить виновника. На решение ушло несколько недель, я даже переписывался с производителем в поисках рекомендаций. Закончилось все тем, что новый 40 мм вентилятор был напрямую подключен к материнской плате. Результат меня порадовал, так как при длительных и максимальных синтетических нагрузках температура была не выше 91 °С, а шум не превышал 55 dB.

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

Владимир Кубицкий, Head of AI в ЛУН

Компьютер для машинного обучения

Множество задач обработки данных в ЛУН мы решаем с помощью Machine Learning. В нашем проде сейчас активны около 30 обученных алгоритмов, они принимают различные решения: находят дубли объявлений и картинок, определяют фейки, распознают географию из текста, ставят точку на карту и так далее.

Для обучения всего этого мы пробовали разные варианты: от аренды мощностей на AWS до сборки собственных серверов для ML-инженеров.

Арендовать вычислительные ресурсы у того же AWS удобно и быстро, можно выбрать практически любую конфигурацию под свои нужды. Мы делали именно так с 2015-го по 2018 год. Когда средний чек только на обучение продакшн-алгоритмов регулярно стал превышать $2000 в месяц, мы поняли, что выгоднее содержать свою «железку» под нужды ML-инженеров, а арендными оставить только inference-серверы.

Так и поступили, и в 2019 году собрали наш первый комп для обучений, который назвали «Flair monster 0».

В сборке 2019 года мы попытались совместить все «хотелки» в одном месте: две видеокарты 1080 Ti, два процессора Intel Xeon E5, два диска (SDD и HDD на 2 Тб) и 128 Гб оперативки.

Длительное время нам этого вполне хватало. Но со временем проявились две проблемы:

  • рост команды требовал наличия больше двух GPU для параллельной независимой работы;
  • объёма видеопамяти 1080 Ti стало критически не хватать для экспериментов с новыми большими моделями.

Учитывая эти два фактора, в новой версии мы поставили уже три топовые на текущий момент карты GeForce RTX 3090 TURBO с объемом видеопамяти уже 24G, процессор оставили точно такой же, как и в прошлой сборке, и поставили пока 64 Гб оперативки.

Благодаря текущей сборке члены команды могут работать независимо друг от друга, а также можно проводить эксперименты с большими архитектурами сетей. Именно это нам и было нужно.

Неприятной неожиданностью стала шумность новой сборки. Особенно если работают все три карты на максимум одновременно и загружен процессор.

Пока нашли промежуточное решение: выставить комп в коридор, разместив его у центрального узла офисной вентиляции, которая шумит сильнее :)

Олексій Семенюк, Project Manager; Іван Коваленко, Junior Software Engineer; Сергій Передерій, Senior Software Engineer в GlobalLogic

Обладнання для роботи з шиною CAN FD

Кілька років тому ми розробляли софт для автомобільної електроніки й активно використовували різні логери та аналізатори для роботи з шиною CAN, світовим стандартом зв’язку між різними електронними блоками та датчиками в автомобільній галузі.

Звичайно, прогрес не стоїть на місці, і приблизно рік тому на нових автомобілях почали активно впроваджувати новий стандарт CAN FD, для роботи з яким потрібне було нове обладнання. Наявні на ринку зразки не влаштували нас ні ціною, ні параметрами, тому ми вирішили спроєктувати схожий прилад самотужки та адаптувати його під свої потреби.

Ми сформували команду з трьох інженерів GlobalLogic і протягом трьох місяців розробляли плату та програмне забезпечення з використанням стартового набору розробника GlobalLogic Embedded Starter Kit.

GlobalLogic Embedded Starter Kit

Ми виготовили кілька прототипів. Під час їхнього тестування виявили та усунули критичні проблеми програмного та апаратного дизайну, зокрема:

  • недостатню точність тактування CAN-інтерфейсу мікропроцесора;
  • неправильну комутацію апаратних драйверів CAN FD;
  • недостатню фільтрацію високочастотних перешкод.

Тестування сигналів шини CAN

Далі удосконалили механічний дизайн і підібрали корпус. Відтак замовили виробництво та монтаж партії друкованих плат в одного з українських виробників, а тоді самотужки зібрали та протестували обладнання на реальному проєкті.

І тут почалось найцікавіше: швидкість передачі даних виявилася недостатньою для наших цілей, тож довелося серйозно оптимізувати програмний код:

  • для мінімізації затримок передачі даних ми повністю переробили стандартні бібліотеки процесора STMicroelectronics для роботи з шиною CAN;
  • перенесли задачу планування CAN-пакетів з комп’ютерної програми у мікроконтролер;
  • оптимізували комунікацію в USB;
  • відтворили та оптимізували послідовність команд, яку використовує замовник для налаштування обладнання.

У результаті отримали програмно-апаратний комплекс, що складається із двох плат і кабелів з роз’ємами, змонтованих у міцному пластиковому корпусі, із програмного забезпечення для мікроконтролера, а також програмного забезпечення для комп’ютера з операційною системою Linux, яке дає змогу гнучко конфігурувати пристрій та задавати потрібні режими передачі даних.

На фото внизу зображено CAN FD Tool by GlobalLogic у розібраному вигляді та зразок інтерфейсу комп’ютерної програми.

CAN FD Tool by GlobalLogic

Найбільші переваги нашого CAN FD Tool — це:

  • три порти, які підтримують CAN і CAN FD;
  • приблизно у 5 разів менша ціна, ніж в аналогічних рішень;
  • можливість подальшого розширення як програмного функціонала, так і апаратного.

Отже, наша команда здобула цікавий досвід та отримала задоволення від розробки, а на додачу — чудовий інструмент для використання на реальних проєктах.

Илья Вовкодав, Graphic Designer, UI/UX в Uptarget.co

Компьютер-стенд для эстетики на рабочем месте

Свой первый ПК я собрал в 2016 году. В то время я еще учился и делал небольшие заказы на ноутбуке Lenovo V580. Как-то я получил серьезный заказ на фрилансе: разработку логотипа, каталога и дизайн сайта. Мне заплатили $600, но в процессе работы я заметил, что ноут уже «не вывозит» все необходимые задачи. Как серьезно подготовленный чувак, с $600 я пошел к своему товарищу — он работал в компьютерном магазине — и мы сделали заказ на сборку ПК.

Я купил себе материнку MSI B250 PC Mate, видеокарту Asus 1060 6 GB, Intel Core i5-6400, блок питания Chieftec на 600W, плашки HyperX Fury 2×8 DDR4-2400, SSD-диск на 120 Гб, HDD-диск на 1 Tб и корпус Vinga Volcano. Когда получил заказ — это было счастье. Возможностей того ПК мне хватало с головой: я спокойно запускал Illustrator, Photoshop в нескольких окнах и браузер с музыкой. В то время я начал работать и с более серьезными задачами, изучал Premiere Pro, делал проекты в After Effects, так что приходилось рендерить.

В начале 2020 года я понял, что пора что-то менять по деталям: программы стали новее, задач больше, а комп медленнее. Покупать видеокарту я не хотел (думал, что сразу перейду на серию NVIDIA 3060 или 3070), а процессор и другие планки памяти можно было бы заменить на более шустрые. Возник вопрос: на что менять? Я долго перечитывал форумы, советовался с друзьями и решил перейти на AMD. Брать какой-то топовый процессор не было смысла, так как ожидается выход новых линеек процессора и памяти на DDR5. Решил менять все по чуть-чуть, растянуть на ближайшее 3–4 года.

Но главное, что я хотел сделать, — это красивый стенд. Чтобы он стоял на столе, и я смотрел, как работает компьютер, как все крутится и светится, хотелось привнести эстетику в свое рабочее место. Вдохновлялся красивыми фото в Instagram. Там были шикарные снимки людей со Штатов и Европы, для которых ПК не просто «коробка», а красивая вещь. Я хотел сделать примерно так же: функциональную машину для работы днем и красивый компьютер, чтобы по вечерам играть со стримом на Twitch.

Спустя 4 месяца я нашел свой вариант апдейта. Выбрал процессор AMD Ryzen 5 3600 (он мощнее предыдущего и за очень приятную цену — 3500 грн по скидке), к нему купил материнку ASUS STRIX B450-F GAMING с хорошей звуковой картой (стоимость около 4000 грн), также приобрел охлаждающую башню be quiet! Dark Rock 4 (с запасом, если буду переходить на более требовательный процессор). Через месяц, после долгих поисков и раздумий, нашел подходящие плашки — Crucial Ballistix RGB Black DDR4 16 GB (2×8 GB) 3200 MHz (они меньше, чтобы не мешать башне гонять воздух, и с контролируемой RGB-подсветкой). Я смог разогнать их до нужной мне частоты и таймингов, и работать стало намного быстрее, комфортнее и приятнее.

Оставалось закрыть несколько моментов. Я хотел использовать слоты памяти М.2 в материнской плате, взял Samsung 970 Evo series 500GB M.2. Так как они любят греться, заказал на AliExpress радиатор, теперь ПК включается за 5–10 секунд, программы так же. Докупил еще жесткий диск на 2 Тб и поменял блок питания на VINGA Gold 650 Вт (он может выдерживать скачки напряжения, так я обезопасил свое «железо»).

Все уже выглядело красиво, светилось, нужен был только подходящий корпус, куда все может поместиться. Я долго смотрел на корпуса NZXT, они удобны для укладки проводов, но корпус за 5000 грн, а если какой-то Limited Edition, то и 10–15 тысяч, — это дорого. Купил GAMEMAX Paladin Black: у него большое закаленное стекло, есть дополнительная подсветка и контролер и, самое главное, запас под большую видеокарту. Дополнительно я заказал RGB-ленту, чтобы пустить подсветку по краю окна.

Теперь у меня не просто функциональная машина, но еще и красивая картинка сбоку. Я спокойно работаю в Adobe Illustrator, Photoshop и параллельно могу рендерить видео в Adobe Premiere Pro. Иногда как хобби собираю и обслуживаю ПК для друзей.

Пока эта сборка меня полностью устраивает (единственное, что хотелось бы поменять — это видеокарту), а дальше буду следить за интересными новинками.

Максим Татарьянц, AI Researcher в MobiDev

Станция машинного обучения

В жизни каждой компании, работающей с Machine Learning (ML), наступает момент, когда ресурсов старой-доброй видеокарты NVIDIA 1080 Ti, установленной на локальной машине, уже недостаточно для работы.

Стандартный рабочий набор ML-специалиста: Intel i5 7500, NVIDIA 1080 Ti, 32 GB DDR4 RAM. Image source

Работая из дома, можно засыпать и просыпаться под мерный гул кулеров перегревающейся видеокарты, но мир бизнеса диктует свои условия, и часто производительности рабочего компьютера оказывается недостаточно. Мы не можем потратить несколько дней на обучение очередной модели, просто чтобы узнать, что она работает не так хорошо, как ожидалось.

Быстрое прототипирование и возможность ставить много экспериментов за короткий промежуток времени — это практически необходимость в Data Science / Machine Learning, и ее нужно так или иначе удовлетворять.

Мы столкнулись с такой потребностью достаточно быстро. Буквально с первых серьёзных ML-проектов возникла дилемма: с одной стороны, заказчики рассчитывают на быстрый результат с удовлетворительно работающей моделью, а с другой — доступные тренированные модели иногда плохо подходят для решения задач клиента. Им может быть нужна дотренировка или тренировка с нуля на специфичных данных, характерных для сферы интересов заказчика.

Если дотренировку ещё можно осуществить ресурсами обычных локальных машин, то тренировка с нуля чаще всего или занимает слишком много времени (например, полная тренировка популярной модели для распознавания и локализации объектов в изображениях YOLOv3 может занимать 10+ дней), или нереализуема вообще (ведь просто для запуска некоторых моделей требуется большое количество видеопамяти (vRAM)). Хорошим примером может служить языковая модель GPT-2, потребляющая 16+ Гб видеопамяти, в зависимости от конфигурации, во время тренировки.

Есть несколько вариантов решения этой проблемы: можно использовать облачные сервисы, предоставляющие специальные решения для машинного обучения (такие как Amazon Web Services или Google Cloud Platform), арендовать полноценный сервер для машинного обучения или же приобрести и настроить собственный сервер.

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

  • полная настройка и кастомизация под нужды команды (у нас это больше 10 инженеров);
  • возможность планомерного расширения аппаратного обеспечения («железа») по мере необходимости;
  • отсутствие ежемесячной платы за аренду (при активном использовании месячные счета на облачных платформах иногда достигают значительных размеров, в тысячах USD);
  • да и приятно иметь такую машину в личном распоряжении, а не где-то в абстрактной серверной комнате на другом конце мира :)

Итоговая компоновка системы получилась внушающей: 128 GB RAM, процессор Intel Xeon E312xx и, что наиболее важно, два мощных графических ускорителя серверного класса NVIDIA Tesla V100 32 GB.

Помимо прочего, микроархитектура Volta (на основе которой и производится Tesla V100) включает в себя технологию Tensor Cores — специальных вычислительных единиц, сконструированных исключительно с целью повышения производительности устройства при работе с тензорными операциями, которые являются основой для функционирования любой современной нейронной сети. Tensor Cores также позволяет достичь значительного ускорения тренировки модели при использовании так называемых mixed-precision вычислений (использование преимущественно 16-битных чисел совместно с 32-битными вместо исключительно 32-битных значений).

NVIDIA Tesla V100 (Amazon Web Services), производительность в сравнении с другими ускорителями. Image Source

Как видно из графика, прирост по скорости работы для Tesla V100 в сравнении с 1080 Ti может быть 3-кратным или даже выше, и это только для одной видеокарты. Для двух ускорителей этот прирост будет ещё более значимым. Соответственно, задачи, которые раньше занимали больше недели, теперь можно выполнять за дни или даже часы. Это расширило наши возможности в разработке новых решений.

Прирост в производительности при использовании нескольких графических ускорителей для тренировки моделей машинного обучения. Image Source

Одним из первых применений нашего Machine Learning сервера стало обучение Generative Adversarial Network для генерации логотипов на основе нескольких датасетов с высокой вариативностью данных. Датасет специально подбирался шумный (разнородные типы логотипов в разных стилях), чтобы проверить, насколько устойчивой будет итоговая модель, обученная на таких данных. Поскольку в условиях реального мира шумные данные — это зачастую единственные доступные данные.

Идея заключалась в том, чтобы проверить, может ли генеративная модель быть полезным инструментом для графических дизайнеров. Возможно, даже служить источником вдохновения для создания новых дизайнов или производить частично готовые логотипы, которые можно немного доработать и использовать. Здесь наш сервер для машинного обучения пригодился как нельзя кстати: тренировка генеративных моделей — процесс длительный и не всегда стабильный, иногда он может зайти в тупик без всяких видимых причин. В результате нам удалось добиться генерации довольно разнообразных логотипов после 48–72 часов тренировки на двух видеокартах.

Пример случайных образцов логотипов, синтезированных с помощью генеративной модели

Второй пример — разработка коммерческой системы, использующей Computer Vision для обработки фотографий блок-схем. Система способна распознавать индивидуальные элементы схем (линии и блоки разных типов), определять их относительное местоположение и связи между ними. Итогом работы стала полностью оцифрованная диаграмма, которую пользователь может редактировать.

Изначально без ресурсов нашего сервера обучение модели для этого решения занимало 8–10 часов. После настройки сервера мы смогли добиться 2—3-кратного увеличения скорости тренировки (в этом случае она была очень важна, так как необходимо проводить много экспериментов). Также благодаря большим объёмам видеопамяти повысилась стабильность модели (мы смогли подавать в модель гораздо больше данных в пересчете на одну итерацию тренировочного процесса).

Уверен, что в дальнейшем найдется масса применений для нашей станции машинного обучения как коммерческого, так и исследовательского характера, ведь прогресс не стоит на месте и каждые несколько месяцев появляется информация о новых, ранее недоступных, а теперь уже вполне достижимых, высотах.

Василий Коршунов, Automotive Tech Lead / Architect в Luxoft

Комплекс для тестирования автомобильных устройств

Современные автомобили усложняются с каждым годом как механически, так и с точки зрения электроники. Количество новых функций растет с каждым релизом, и то, что было раньше роскошью, теперь стало обыденностью. Камеры заднего вида, круиз-контроль, ассистент парковки зачастую можно увидеть уже в базовых моделях. Интерфейсы взаимодействия водителя и автомобиля развиваются соответственно. Это включает и информационные панели, и органы управления.

Некоторые производители устанавливают в салон машины до трех больших экранов, куда можно вывести разнообразную информацию: датчики скорости, параметры двигателя, температуру, навигационные карты и даже видеочат. Использование технологий CarPlay и Android Auto стало стандартом индустрии.

Все это функциональное многообразие влечет за собой усложнение аппаратной части автомобиля. На сегодня это десятки, даже сотни отдельных электронных устройств, которые соединены в сложную автомобильную сеть посредством шин CAN и Automotive Ethernet. Над каждым устройством работает несколько команд инженеров. При таком положении вещей отладка и тестирование превращаются в нетривиальную задачу. Усугубляют ситуацию требования к безопасности и надежности отдельных узлов, от этого зависят человеческие жизни.

В идеале стенд для разработки должен включать все устройства. Это затратно, может даже превышать цену самого автомобиля, а также требует довольно много места. Самое распространенное решение — симуляция и эмуляция тех устройств и функций, которые должны взаимодействовать с разрабатываемым модулем. Для этого существует несколько подходов — MIL (model-in-the-loop), SIL (software-in-the-loop) и HIL (hardware-in-the-loop).

В нашем случае у заказчика был внушительный список разнообразных дисплеев, которые использовались как в инструментальном кластере, так и в качестве основной информационно-развлекательной панели. Тестовый стенд изначально должен был иметь все комбинации этих дисплеев, а переключение на нужный происходило в ручном режиме. Тут и возникла идея сделать устройство, которое сможет эмулировать любой из существующих дисплеев или даже тех, которые только на стадии создания спецификаций, а также выводить изображение на обычный HDMI-монитор и простой интерфейс для управления.

Задачу мы начали решать с создания прототипа. За основу был взят Devkit iMX6 hydrogen, который имел шину MIPI CSI для захвата видео. Для согласования видео интерфейса была спроектирована электронная плата, она преобразовывала видеосигнал в совместимый с CSI и включалась между автомобильным компьютером и iMX6 Devkit, на котором запускался Embedded Linux.

iMX6 hydrogen. Image Source

Следующим этапом стала эмуляция дисплей- и тач-контроллеров, которые в реальных дисплеях обычно висели на I2C-шине и являлись слейв-устройствами. Протокол был реализован в виде драйверов. Вот тут мы и столкнулись с ограничениями самого iMX6-чипа и Linux — дисплей- и тач-протоколы предполагали быструю реакцию на запросы в течение менее 1 мс. Прототипа хватило для грубой эмуляции и захвата видео с CSI-шины с последующим воспроизведением в нативном Linux-приложении.

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

Новая архитектура с отдельным микроконтроллером для эмуляции сразу себя оправдала и показалась довольно надежным решением. Сам эмулятор начинал работать практически мгновенно после включения питания, в то время пока Linux на iMX6 продолжал загрузку. Сложность самой печатной платы выросла — стек содержал четыре медных слоя, CSI-шина предполагала высокоскоростные дифференциальные пары, а также разнообразную периферию по типу HDMI, USB, Ethernet.

Первые прототипы мы заказали на одном из украинских заводов, но они оказались посредственного качества, плюс время изготовления и согласования были неприемлемыми. После этого печатные платы мы стали заказывать в Китае, а электронные компоненты — через централизованного украинского дилера, он использовал свои логистические каналы (прямая закупка за рубежом всегда приводила к большим задержкам на украинской таможне).

Следующим шагом было расширение ассортимента эмулируемых дисплеев. В какой-то момент нам понадобилось поддерживать дисплеи высокого разрешения, это выходило за рамки возможностей iMX6. Также возникла идея автоматизации тестирования самого HMI, который выводился на эмулируемые дисплеи. Это предполагало использование алгоритмов Computer Vision, которые довольно требовательны к возможностям аппаратуры. Системная архитектура хорошо себя зарекомендовала, поэтому было решено просто заменить iMX6-модуль на NVIDIA Jetson TX1, он в несколько раз производительнее и содержал готовые инструменты для Computer Vision.

NVIDIA Jetson TX1. Image Source

С новым чипом от NVIDIA мы прошли почти все те же этапы — начиная от прототипа на базе девкита и заканчивая готовой платой, в которую вставлялся модуль Jetson TX1. С этого момента у проекта началась новая жизнь. Заказчик на своих мощностях произвел несколько сотен устройств и начал поставки командам инженеров, а также в тестовые лаборатории.

Со своей стороны мы стали наращивать арсенал приложений: появилось веб-приложение, через которое можно получать удаленный доступ и передавать видео прямо в браузер средствами WebRTC. Это стало особо актуально в пандемию, когда закрылись офисы и практически все инженеры были вынуждены работать из дома. Идея с автоматизацией тестирования HMI на нашем устройстве тоже оказалась успешной, так как мы не использовали никакие бэкдор-интерфейсы, а работали только с тем, что автомобиль отображал на экране.

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

Похожие статьи:
Пол Гончар — айтишник с 20-летним опытом, большую часть которого получил в США. 9 лет работает в Apple, сейчас — Senior Domain Engineer. Мы решили...
Продуктова ІТ-компанія MacPaw створює новий кібербезпековий підрозділ Moonlock. Його завданням буде розробка продуктів для посилення...
Привіт, мене звати Остап. У сфері VFX (Visual Effects) я працюю близько 10 років. Починав у одній з найвідоміших у СНД компаній —...
[Об авторе: Михаил Завилейский — Organisational Architect в DataArt. Пришел в компанию в 1998 году, в 2002-м вошел в совет ее директоров....
Телекоммуникационный оператор МТС сообщил о завершении проекта по строительству собственной сети спутниковой связи...
Яндекс.Метрика