Как может такая система, как AutoPilot от Tesla, идти в ногу с постоянно меняющимися запросами для нескольких процессов? - PullRequest
0 голосов
/ 02 декабря 2018

Как разработчик программного обеспечения, я пытаюсь понять, как система могла бы работать так быстро и достаточно эффективно и работать с постоянной и безупречной точностью с такой точностью для всех текущих действий, которые необходимо учитывать в такой системе, как Tesla.Автопилот (автономная система управления автомобилем) ...

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

Как все это совершается сентиментально?И обрабатывать ли отчеты так быстро, что он почти умышленно может ответить (без резервного копирования запросов)?

1 Ответ

0 голосов
/ 02 декабря 2018

Я ничего не знаю о коде Тесла, но я прочитал другой код в реальном времени и проанализировал временные ошибки в нем.Основная идея заключается в том, что если вы проверяете что-то каждую миллисекунду, вы всегда будете реагировать на изменения в течение миллисекунды.Самая простая из возможных систем реального времени имеет «циклический руководитель», построенный на основе повторяющегося графика, который говорит ему, что делать, когда он разработан таким образом, что во всех возможных случаях все, с чем нужно иметь дело, решается в установленные сроки.Традиционно вы беспокоитесь о времени процессора здесь, но не обязательно.Система, на которую я смотрел, больше всего пострадала от расписания для последовательной шины под названием 1553 (https://en.wikipedia.org/wiki/MIL-STD-1553)-, почти не было достаточно времени, чтобы все передать и получить вовремя.

Этослишком прост, потому что он не справляется с редкими событиями, с которыми нужно иметь дело очень быстро, такими как реакция на прерывания. Умные схемы для обработки прерываний не имеют такого большого преимущества, как вы ожидаете, потому что часторедкий наихудший случай, когда умная схема не справляется с циклическим исполнением, а код реального времени должен работать в худшем случае, но на практике вам нужно что-то с обработчиками прерываний и процессами с высоким приоритетом, которые должны выполняться по требованию и с процессами с низким приоритетомэто может быть проигнорировано, когда другие вещи должны установить крайние сроки, но будут выполняться иначе. Существуют различные схемы и методологии для утверждения, что эти более сложные системы всегда будут выполнять свои крайние сроки. Одна из самых известных - https://en.wikipedia.org/wiki/Rate-monotonic_scheduling. См.также https://en.wikipedia.org/wiki/Earliest_deadline_first_scheduling.

Операционная система с открытым исходным кодом в реальном времени, которая использовалась в реальной жизни: https://en.wikipedia.org/wiki/RTEMS.

...