В первой части этой серии блогов мы рассказали, как начать свой путь к тому, чтобы стать инженером автономных транспортных средств. Теперь вы можете узнать, какие языки программирования и программное обеспечение следует изучать, чтобы укрепить свое место в команде, создающей будущее транспорта.
Представьте, что вы едете по городской улице и замечаете пешехода, медленно приближающегося к бордюру в нескольких сотнях футов впереди. Пока они еще не на пешеходном переходе, вы нажимаете на тормоз, предсказывая, что они могут начать переход. Когда ваши пути пересекаются, человек делает шаг вперед, чтобы перейти дорогу. Подготовившись, вы останавливаетесь и пропускаете их.
Наша сквозная автономная система 4-го уровня создана для имитации процесса принятия решений аналогично человеческому водителю:смотри – думай – действуй.
Это означает, что мы внедряем все, от датчиков, которые «видят» пешехода, до алгоритмов, которые собирают данные датчиков и идентифицируют их как человека. Решение и действия, связанные с остановкой, снижением скорости или продолжением движения, основаны на поведении, запрограммированном в самой системе.
Эти простые сценарии становятся более сложными, когда вы учитываете окружающую среду (дождь, снег), другой трафик (кто-то собирается повернуть?) и выбор маршрута. Нам нужны команды с несколькими наборами навыков, чтобы создать надежную систему, способную справляться с различными ситуациями, которые могут возникнуть в дороге.
Активное обнаружение и объединение информации – Команда активных датчиков использует данные датчиков и создает алгоритмы для обнаружения и идентификации объектов для систем автономного вождения Torc, позволяя системе понимать и реагировать на окружающую среду вокруг автомобиля в режиме реального времени.
Машинное обучение – Наша команда по машинному обучению обучает нашу систему идентифицировать определенные объекты, которые она видит, более подробно, чем это можно было бы получить с помощью необработанных данных датчиков. Например, мы используем машинное обучение, чтобы научить нашу систему распознавать светофоры или определять разницу между пешеходом и фонарным столбом.
Отображение и локализация – Карты автономных транспортных средств должны быть намного более конкретными, чем типичные карты, которые человек использует для навигации. Наша команда картографов разрабатывает трехмерную среду и прокладывает маршруты для наших автономных автомобилей, а также работает с командой локализации, чтобы убедиться, что система знает, где она находится и как добраться до места назначения.
Поведение и планирование – Группа поведения фокусируется на том, как транспортное средство должно вести себя в той или иной ситуации. Например, при съезде с оживленной трассы транспортному средству необходимо определить подходящее место, чтобы «втиснуться» в поток движения, и отрегулировать ускорение для безопасного выполнения этой задачи.
Механический – Команда механиков создает концепцию дизайна автомобиля и интегрирует датчики, крепления и компьютеры в автомобиль.
Системная интеграция – Важную роль в команде играет обеспечение того, чтобы компоненты работали хорошо не только сами по себе, но и как система. Группа системной интеграции рассматривает высокоуровневое взаимодействие компонентов в целом.
Встроенные, элементы управления и электрические – Эта команда интегрирует программное обеспечение во всю систему компонентов и работает над электрической системой, которая управляет транспортным средством, включая ускорение, торможение и рулевое управление.
Отдел разработки – Команда Dev Ops управляет развертыванием программного обеспечения и поддерживает техническую инфраструктуру.
Безопасность и тестирование – Безопасность – главная цель нашей автономной системы, поэтому инженеры по безопасности и тестированию имеют решающее значение на каждом этапе нашей разработки. Команды по безопасности и тестированию работают над тем, чтобы мы могли тестировать и проверять новые возможности, а также стандартизировать протокол и методы безопасности для всех команд.
Как вы должны подготовиться? Мы спросили инженеров Torc, какие навыки и опыт работы с программным обеспечением помогли им добиться успеха в своей специальности в нашей команде AV.
C++ — это язык, ориентированный на производительность, который позволяет «открыть капот» и глубоко погрузиться в управление памятью.
Если кандидат хорошо владеет C++ и роботизированной операционной системой (ROS), то он уже инженер-робототехник. Чтобы стать инженером по картографии и локализации, им нужно сделать еще один шаг и понять общие преобразования координат и трехмерную геометрию. Если кандидат работал с одновременной локализацией и сопоставлением (SLAM), то он отлично подходит для этой роли.
Команде DevOps требуются навыки объединения разработки программного обеспечения и системного администрирования. Мы используем эти навыки в Torc для управления развертыванием программного обеспечения для транспортных средств. Правильное администрирование и управление компьютерами Linux также является важным навыком для автоматизации и повышения надежности наших систем.
Мы используем довольно сложные сети на наших автомобилях. Возможность проектировать хорошие сетевые проекты и отлаживать сложные проекты жизненно важна для нашей работы.
Типичными технологиями, которые член команды DevOps будет использовать для автоматического/повторяемого процесса, будут управление конфигурацией и конвейеры непрерывной интеграции. Вместо того, чтобы заставлять разработчика писать программное обеспечение, вручную компилировать его, а затем вручную копировать его на компьютер (и затем вручную настраивать), мы используем автоматизацию, чтобы гарантировать, что программное обеспечение создается, устанавливается и настраивается с минимальной вероятностью человеческой ошибки. насколько это возможно.
В области проектирования аппаратного обеспечения наиболее полезно знать различные программы автоматизированного проектирования (САПР) и пакеты моделирования. Они ежедневно используются для создания аппаратных средств, обеспечивающих работу этой технологии. Наиболее полезными языками программирования будут Python и MATLAB. Аппаратное обеспечение сосредоточено не столько на эффективности кода в реальном времени, сколько на манипулировании данными и визуализации.
C++ — это скомпилированный язык программирования, который поддерживает как объектно-ориентированное программирование, так и низкоуровневую работу с памятью. Torc использует C++ для повышения автономности, потому что хорошо написанный код C++ чрезвычайно быстр и расширяем.
Кандидат также должен быть знаком со стандартами кодирования. Промышленные стандарты кодирования запрещают определенные методы кодирования, которые могут привести к потенциально небезопасным ошибкам во время выполнения. При соблюдении этих ограничений код становится более безопасным, переносимым и надежным. Стандарты кодирования MISRA являются открытыми, и, несмотря на то, что документация обширна, основные идеи могут быть изучены довольно легко.
Самостоятельное вождение играет важную роль в принятии решений на высоком уровне о том, как транспортное средство должно вести себя на дорогах, учитывая, что существует множество других объектов, таких как автомобили, пешеходы и велосипеды. Чтобы иметь дело с этими различными объектами и разработать необходимые алгоритмы безопасности, нужно хорошо понимать, как кинематика и динамика транспортного средства влияют на его маневренность на дороге. Самое интересное в работе в Torc заключается в том, что ваша работа никогда не ограничивается одним компонентом. Вы можете работать над другими компонентами, такими как интерфейс автомобиля, который управляет приводами автомобиля. Из-за этой разнообразной работы полезно иметь представление об алгоритмах управления, а также иметь опыт разработки и настройки контуров управления.
Учитывая все вышесказанное, часто задают вопрос:«Где я могу узнать об этой технологии?» Существует значительное количество доступных симуляторов, с которыми вы можете поиграть. Всегда интересно исследовать что-то новое, и вы получаете другое удовлетворение, когда машина едет в симуляторе так, как вы хотите. Практический опыт и разработка нескольких алгоритмов управления или самостоятельного вождения с такими симуляторами — хорошее начало. Кроме того, свяжитесь со своими сверстниками, которые заинтересованы в беспилотных автомобилях. исходя из личного опыта, я бы сказал, что работа в групповых проектах и обучение у других очень помогают в понимании новых технологий.
—
Вернитесь в ближайшее время для третьей части, где инженеры Torc поделятся личными навыками, которые они считают столь же ценными, как кодирование, и сравнит свои ожидания от работы с реальностью.
Ищете работу в сфере беспилотных автомобилей? Torc — одна из самых опытных компаний-разработчиков программного обеспечения для автономных систем, и мы расширяем нашу команду, чтобы революционизировать транспорт. Посетите нашу страницу вакансий для получения дополнительной информации и следите за обновлениями в третьей части!
Безопасность:наш показатель успеха в разработке автономных транспортных средств
Стать инженером по автономным транспортным средствам – Часть 3:Помимо программирования
Деньги за драндулет, часть III:оставить, обменять или утилизировать свой драндулет?
Как будет выглядеть автономное техническое обслуживание транспортных средств?
Mine Rover является частью крупнейшего в стране парка автономных транспортных средств