Share This
Связаться со мной
Крути в низ
Categories
//Гоночный робомобиль врезался в стену из-за присвоения одной переменной NaN

Гоночный робомобиль врезался в стену из-за присвоения одной переменной NaN

04.11.2020Category : My Habr

Робомобиль Roborace, беспилотных автогонок в рамках этапов Формулы Е, врезался в бетонную стену во время прямой трансляции в Twitch. Инженеры из Сингапурского технологического института объяснили, почему все пошло не так.

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

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

NaN (Not a Number) — неопределенное значение, выводимое программой, которое не является действительным числом.

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

«По иронии судьбы значение NaN действительно отображалось на мониторах телеметрии, но оно обнаруживалось наряду с 1,5 тыс. других значений. Обычно операторы смотрели только на индикаторы, указывающие на отсутствие сбоев, а в нашем случае на все индикаторы были зелеными», — написал инженер.

Он объяснил, что проверки внедрили для наиболее распространенных сценариев отказа, а данный сценарий впервые проявился только во время старта, и не рассматривался на этапе анализа.

Если верить инженеру, то управление робомобилем написано на Matlab, а авария была вызвана тем, как программа обрабатывает ошибки с NaN.

  • 7 views
  • 0 Comment

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Связаться со мной
Close