Начальник: У тебя что, не предусмотрена защита от такой ситуации?
Я: Нет.
Начальник: А почему?
Я: Потому что у меня ещё много каких защит не предусмотрено. Придумать и реализовать все необходимые защиты -- это ещё месяц работы. Сейчас обрабатываются только частые проблемы. Такой проблемы никогда не случалось.
Начальник: Ну, надо сделать защиту на этот случай.
И я сделал программную защиту на этот особый случай. После этого с об'екта стали звонить и жаловаться, что защита срабатывает ложно.
Смотрю, что там с запасом расстояния. Общее расстояние езды составляло примерно 30 см. Остановка обычно происходит грубо говоря за 5 мм до стенки. Я записал критерий так, что если расчётная конечная координата ближе, чем 4 мм от стенки -- стоп-машина. Как же происходило срабатывание защиты? У неё получилось, что до стенки расстояние будет 3.997-3.999 мм. То есть, превышение критерия стопа составляло несколько мирон! Естественно, такое превышение было нормальным, просто я неправильно настроил критерий. Я понизил критерий до 3.9 мм. Ложные срабатывания пропали. Прошёл месяц -- опять звонят по поводу ложного срабатывания.
Я изучил логи. ОКАЗЫВАЕТСЯ, это был повтор той необычной ситуации, с которой всё началось. Наконец-то защита отработала не ложно, а штатно -- и предотвратила пиздец. Йу-ху!