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

Введение

В следующих разделах мы разберем инструменты, которые используют инженеры автономных транспортных средств, по их назначению. Опять же, эти инструменты постоянно меняются, а новые добавляются ежедневно. В соответствии с нашей методологией, при тщательном просмотре каждой страницы вакансий от 31 компании, занимающейся автономными транспортными средствами, мы перечислили все инструменты или навыки, которые использовались более чем в 3 компаниях, и выделенные жирным шрифтом те, которые были обнаружены более чем в 10. Мы написали заметку о некоторых из наиболее распространенных. Не имело значения, сколько раз он появлялся в конкретной компании, мы хотели, чтобы инструмент использовался во всей отрасли, чтобы включить его. Следовательно, инструмент, который ваша компания использует ежедневно, может не подойти.

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

Инструменты торговли

Дизайн автомобиля - концепция

Если вы хотите стать лицом, ответственным за разработку концепции автомобиля или, может быть, за создание маркетинговых материалов, то это лучшие инструменты для вас:

Sketch , Adobe Illustrator, Adobe Photoshop, Microsoft Paint (Шучу)

Adobe Illustrator - это среда, в которой пользователи могут создавать и редактировать 2D-изображения. Считается одним из самых популярных программных продуктов для создания концептуальных изображений автомобилей и общих маркетинговых изображений.

Дизайн автомобиля - CAE / CAD / PLM / FEA

Если вас интересует механическая конструкция автомобиля и его различных компонентов, вам необходимо знать хотя бы один из них. Все эти инструменты представляют собой инструменты автоматизированного проектирования (CAE). То, что раньше делалось ручкой, бумагой и линейкой для слайдов, теперь делается на компьютере с помощью фантастических инструментов визуализации. Компьютерное проектирование (САПР) - это двухмерное и трехмерное моделирование автомобиля и его частей. Product Lifecyce Management (PLM) - это комплексный набор инструментов, позволяющий организовать все детали, которые вы разрабатываете и покупаете. Анализ методом конечных элементов (FEA) - это программа с интенсивными вычислениями, которая позволяет вам тестировать напряжение и деформацию тел в программном обеспечении, когда к ним применяются различные силы и моменты.

CATIA, Solidworks, Pro / E, Autodesk 360, Enovia, STAR-CCM +, ANSA, Altair HyperWorks и OptiStruct, ANSYS, MSC NASTRAN, Abaqus, Polarion

CATIA - очень популярный инструмент трехмерного инженерного проектирования. Он позволяет вам создавать и редактировать 3D-изображения, а затем моделировать их построение и подчеркивание. Особенно популярен он в автомобильной промышленности.

Динамика многотельных транспортных средств и моделирование моделей транспортных средств

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

LS-DYNA , MSC ADAMS, CarSim, CarMaker, Dymola, OptimumG, SusProg3D, Oktal СКАНЕР

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

Разработка аналогового и цифрового оборудования

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

LTSpice, Altium

Разработка программного обеспечения для транспортных средств - общие знания

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

Docker, CMake, Shell, Bash, Perl , JavaScript, Node.js, React, Go, Rust, Java, Redux, Scala, R, Ruby, Rest API, gRPC, protobuf, Julia, HTML5, PHP

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

Разработка программного обеспечения для автомобилей - Программирование ROS

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

РВИЗ, ПКЛ

Разработка программного обеспечения для транспортных средств - Программирование процессоров / микроконтроллеров

Если вы программируете центральный процессор (ЦП) или микроконтроллер (MCU) для управления автономным транспортным средством, важно иметь следующие навыки:

C, MISRA C, встроенный C , RTOS

RTOS означает «Операционная система реального времени» и представляет собой архитектуру операционной системы, которая позволяет процессам происходить детерминированно или всегда с заданным интервалом без задержек. Это необходимо для высоконадежных систем CPU / MCU, потому что задержка и дрожание могут быть разницей между своевременным выполнением спасательного маневра или нет.

Разработка программного обеспечения для транспортных средств, программирование ПЛИС / ASIC

Если вы программируете ПЛИС для управления системой управления на вашем автомобиле, важно понимать хотя бы один из этих языков описания оборудования (HDL), который является языком программирования низкого уровня, который позволяет вам напрямую управлять оборудованием. Многие из этих инструментов используются при разработке крошечных специализированных кремниевых микросхем, называемых интегральными схемами для конкретных приложений (ASIC):

Verilog, VHDL, DSP, Cadence, Synopsys, Xilinx Platform Studio (ISE и XPS)

Velilog - это программный язык, который позволяет разработчику прямой доступ к аппаратным регистрам, что делает его HDL. Он используется для разработки и тестирования аналоговых и цифровых схем для FPGA, ASIC и даже некоторых MCU.

Разработка программного обеспечения для транспортных средств - Программирование графических процессоров (GPGPU)

В последнее время графические процессоры привлекают много внимания прессы из-за их способности обрабатывать изображения и облака точек в массовом параллельном процессе. Часто в предложениях о работе рекламируется навык «Универсальные вычисления на графических процессорах» (GPGPU). Эти инструменты помогут вам в этом:

CUDA, OpenCL, OpenGL, DirectX, DirectCompute, Vulkan

CUDA (Compute Unified Device Architecture) - это набор инструментов NVIDIA, который программисты используют для программирования своих графических процессоров. Это платформа и API, которые предоставляют пользователю прямой доступ ко всем функциям графического процессора. CUDA работает с C и C ++ и интегрируется с OpenCL. Если вы занимаетесь обработкой изображений, вам необходимо знать CUDA.

Разработка программного обеспечения для транспортных средств - лидары, радары, камеры, Perception Sensor Fusion

Как ваш беспилотный автомобиль «видит» мир? Это лиДАР, радар или просто фотоаппараты? Может еще что-то вроде ультразвуковых датчиков? Ниже перечислены наиболее распространенные программные инструменты и навыки, связанные с аппаратным обеспечением, которое позволяет вам взять то, что датчик «видит», и превратить его в полезную информацию для остальной части программного стека:

Комплект разработчика Velodyne, ZED Stereo Camera SDK, Scanse LIDAR SDK (завершение работы) , SLAM

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

Разработка программного обеспечения для транспортных средств - машинное обучение, искусственный интеллект, глубокое обучение

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

TensorFlow, Keras , Torch / PyTorch, CAFFE, Apache MXNet, Theano, CNTK

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

Платформы тестирования программного обеспечения

Итак, вы написали все свое программное обеспечение, как вы убедитесь, что оно работает. Часто инженеры создают свои собственные «Среды модульного тестирования», чтобы вводить смоделированные данные в свое программное обеспечение и проверять свои ответы. Они подчеркивают все угловые случаи, чтобы ничего не сломалось. Вот несколько инструментов, которые промышленность использует, чтобы упростить эту задачу:

Мокко, SysML, Жасмин, Шутка

Игровые и физические движки для моделирования

Вот еще одна очень популярная область для работы. Часто инженеры хотят увидеть, как их программное обеспечение работает на автономном транспортном средстве в качестве моделирования. Они хотят физически увидеть, как автомобиль движется в смоделированной среде. Это непростая задача - взять переменные данных и превратить их в картинки и движущиеся изображения. Еще сложнее смоделировать физику реального мира. Эти мощные инструменты позволяют инженерам выполнять моделирование и тестировать созданное ими программное обеспечение с реалистичными визуальными эффектами:

Unity 3D, Unreal Engine, CryEngine, Lumberyard, Bullet, Havok, PhysX

Unity 3D - игровой движок для 2D и 3D визуализации. Это часто используется для разработки видеоигр, но очень применимо для моделирования в реальном мире, поскольку включает в себя «физический движок». Этот физический движок позволяет создавать сценарии реального мира и тестировать автомобили, не решая всех математических задач в каждой точке. Это также помогает создать репрезентативную визуализацию того, как автомобиль будет перемещаться по дороге.

Протоколы связи автомобиля

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

CAN, LIN, FlexRay, Ethernet (автомобильный Ethernet), SPI / I2C, TSN (сеть с учетом времени), TCP / IP, WLAN (Wi-Fi), Bluetooth , 5G , Примитивы криптографии и криптосхемы

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

Хранение данных

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

Избыточный массив независимых дисков (RAID), сетевое хранилище (NAS)

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

Базы данных

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

HBase , NoSQL, MongoDB, PostgreSQL, SQL, MySQL, DynamoDB, HDP, Cloudera, EMR, Cassandra, Vertica

NoSQL - это нереляционная база данных, используемая для облачного хранения и извлечения данных. NoSQL часто используется вместо SQL из-за его производительности и способности обрабатывать большие объемы данных в реальном времени.

Технологии потоковой передачи

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

Apache Kafka, Storm, Flink, Spark Streaming

Apache Kafka - это распространенная потоковая технология, написанная на Java и Scala, используемая для обработки данных в реальном времени с высокой пропускной способностью и малой задержкой. Поскольку производительность является ключевым фактором для потоковых платформ, многие пользователи также используют приложения для мониторинга вместе с Kafka.

Пакетные технологии

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

Apache Hadoop, MapReduce, Apache Spark, Hive, Presto, Impala

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

Вот хорошая простая статья Пакетные или потоковые технологии, написанная Гаутами Васикараном.

Сериализация

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

Авро, Паркет, JSON

Тест автомобиля - MIL, SIL, HIL, тест в автомобиле

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

NI LabVIEW, NI TestStand, NI VeriStand , dSpace HIL Simulation Systems, dSpace RTMaps, Proemion PETools CAN Tools, Vector CANalyzer, Vector CANape, Vector Capl

dSpace HIL Simulation Systems - это программный и аппаратный набор инструментов для использования программного обеспечения, моделей или оборудования и создания входных и выходных данных для этой тестируемой «вещи». Это может быть смоделировано как поддельные данные в программном обеспечении или даже как реальные электрические сигналы и физические входы / выходы для HIL. dSpace настолько популярны в этой сфере, потому что они так долго присутствуют в автомобильном пространстве и неразрывно связаны с дизайном автомобильных блоков управления двигателем.

Визуализация и анализ данных

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

Microsoft Excel, NI DIAdem, Splunk, Datadog, Logz.io, ELK Stack, Looker, Tableau

Microsoft Excel используется всеми, и много раз, когда это не должно быть. Часто есть более эффективные инструменты для агрегирования и визуализации данных, но люди склонны использовать знакомого им дьявола ...

Веб-службы

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

Azure и Azure ML, Google Cloud и Google AI, Amazon Web Services (AWS)

Amazon Web Services (AWS) - это платформа облачных вычислений по запросу. Он настолько популярен, потому что его можно расширять от индивидуального использования до использования большой корпорацией.

Контроль исходного кода (прочее)

В дополнение к Git, о котором уже говорилось, эти два инструмента управления исходным кодом являются следующими наиболее распространенными:

Perforce, Subversion (SVN)

Продукты для отслеживания проблем

Jira - это, безусловно, самый распространенный инструмент для отслеживания проблем. Он используется для отслеживания ошибок, запросов на обслуживание и управления проектами. Это платный продукт.

Управление требованиями

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

Rational DOORS, JAMA, Rhapsody

IBM Rational Doors (динамическая объектно-ориентированная система требований) представляет собой группу инструментов управления требованиями, которые позволяют фиксировать, отслеживать, анализировать и управлять изменениями на протяжении жизненного цикла разработки (Источник). Со временем он стал стандартом для управления требованиями к крупным и сложным программным проектам.

Другие автомобильные темы

Вот несколько автомобильных тем, правил и стандартов, о которых вам следует знать, чтобы убедиться, что вы можете грамотно говорить о транспортных средствах в целом:

Automotive SPICE, SixSigma (DFMEA, HARA, FTA, FMEA), AUTOSAR, ASPICE, ISO26262, другие стандарты (ISO, IEEE, ANSI, ASTM, SAE, NHTSA и т. Д.)

AUTOSAR (AUtomotice Open System ARchitecture) - это конгломерат компаний, объединившихся для стандартизации архитектуры программного обеспечения ЭБУ. Это позволило производителям Tier 1 и даже OEM-производителям разрабатывать свои электронные блоки управления и заставлять их работать со стандартными инструментами для тестирования и обслуживания.

Заключение

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

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

Есть несколько отличных онлайн-программ, а именно Самоуправляемая программа Nanodegree от Udacity (платная, доступны два уровня) и« Глубокое обучение для самоуправляемых автомобилей Массачусетского технологического института (бесплатная, для самостоятельного обучения). программа Лекс Фридман.

Сообщите нам, что мы забыли, и удачного кодирования!

Какое программное обеспечение используют инженеры по автономным транспортным средствам? Часть 1/2