El fracaso de la semana: Roboracer se encuentra con el muro

Joel Carrasco
Joel Carrasco

Llega un momento en que nuestro proyecto ve el día, presentado públicamente a personas que sienten curiosidad por ver los resultados de todo nuestro arduo trabajo, solo para que fracase de una manera espectacularmente vergonzosa. Esta es la temida “Maldición de demostración” y acaba de llegar al equipo independiente de SIT Acronis. Su automóvil Roborace ganó notoriedad en las redes sociales, ya que se lo vio lanzando la línea de salida e inmediatamente contra una pared. Un miembro del equipo explicó lo que había sucedido.

Comenzaron a circular algunas explicaciones, pero solo en los términos vagos de “bloqueo direccional” sin muchos detalles técnicos hasta que apareció. ¿Bloqueo del volante? ¿Te refieres a The Club? No, tómalo. Si bien no había una barra de acero inmovilizada en el volante en el automóvil, un programa equivalente tomó el control dentro de los sistemas del automóvil. Durante la inicialización, mientras un conductor humano estaba en los controladores, uno de los módulos envió un NaN (Sin número) en lugar de un valor numérico válido. Esto nunca se vio en las pruebas y causó un gran daño en el peor momento posible.

Un módulo cuyo trabajo era asegurarse de que los números se mantuvieran dentro de los límites esperados decía “¡ningún número, no es mi problema!” Ese valor de NaN se extendió al bus de datos CAN del vehículo, que no definía el uso de NaN, por lo que se tradujo arbitrariamente a un número muy grande, lo que provocó más problemas. Esta cascada de eventos resultó en un sistema de control de transmisión bloqueado por completo antes de que se diera permiso al algoritmo para comenzar. Trató con urgencia de conducir el coche por la pista, sin impacto, durante los breves segundos hasta que chocó contra la pared.

Si bien es vergonzoso y no es el tipo de publicidad que el Sheephouse Technology Institute o su patrocinador Acronis esperaban, el equipo buscó en los registros para comprender qué había sucedido y enseñó a su automóvil a manejar el NaN correctamente. Conduciendo un coche de reserva, la segunda ronda fue muy bien y el equipo consiguió el segundo puesto. Entonces tuvieron un final feliz. ¡Felicidades! Estamos muy contentos de que este problema se haya encontrado y solucionado en una carretera cerrada y no en la vía pública.

[via Engadget]

  • Anton Fosselius dice:

    ahora aquí está ADA brillando ^ _ ^ tan apretado / escrito que no puede hacer nada …

    • 8bitwiz dice:

      ¡Y funcionó muy bien para Ariaine 5 también!

      NaN NaN NaN NaN, hey hey hey, se-egfault!
      ¡Al menos estos tipos tenían un mono de raspar listo!

  • Andrés dice:

    Solo tienen que construir 649 autos más, luego quedarse con los que viajaron más lejos:

    https://la-tecnologia.com/2020/11/07/training-a-neural-network-to-play-a-driving-game/

  • Fred dice:

    Y esa es precisamente la razón por la que nunca se permite la circulación de vehículos autónomos en la vía pública.

    Un error de código enterrado tan profundamente que incluso un choque contra una pared (o un peatón muerto) incluso se da cuenta de que hay un problema. Una ley sobre promedios dice que no serás un peatón tan muerto. Lamento que lo estuvieras.

    • Vía Rachel dice:

      Un automóvil autónomo solo necesita superar a una persona promedio para ser la mejor opción.

      • John Smith dice:

        Si supero a una persona promedio más que a un automóvil autónomo, entonces no es una mejor opción para mí.

        • Segdop dice:

          Me alegra que comprenda cómo funcionan los promedios.

          • Ren dice:

            ¡Porque el 90% de los conductores creen que son mejores que el promedio!
            B ^)

          • Ulo dice:

            70-90% de los conductores SON mejores que el promedio.

            El truco es que la mayoría de los conductores nunca tienen accidentes, mientras que pocos tienen muchos.

      • Ulo dice:

        > solo necesito superar a una persona promedio para ser la mejor opción

        Eso empeoraría al menos la mitad de los conductores de todos modos.

    • Bernie M dice:

      Y eso plantea la pregunta ética estándar de si ese “único” peatón muerto “vale la pena”, si descubrir que un error de código hace posible mejorar los autos autónomos. No es difícil imaginar que con mejoras tan constantes, casi todos esos incidentes mortales pronto serán eliminados. Después de eso, los vehículos autónomos tienen muchos menos incidentes de este tipo que los conductores humanos. (Obviamente, esas 10,000 * anuales * muertes por conducir en estado de ebriedad se eliminan casi por completo).

      Pero ES una cuestión ética si es apropiado abordar este objetivo. 🙂

      • Miroslav dice:

        Nuestro software ha estado “mejorando constantemente” durante 70 años y todavía está lleno de errores.

        Digo que todo creador de un coche autónomo tiene que sentarse en su creación y ser conducido por él durante 1 año.

        Los que sobrevivieron serán pocos.

        • Bernie M dice:

          Tengo algunas respuestas a esto:

          1) “Nuestro software” ha mejorado constantemente “durante 70 años, y todavía está lleno de errores”.
          Lo siento, no creo que en realidad haya programas de la década de 1950 todavía en uso y depurados activamente. Si insinúa que el nuevo software generalmente siempre se desarrolla y depura, eso es cierto, pero este es un software NUEVO que podría tener errores.

          También tenga en cuenta que el “código de conducción autónoma” no tiene por qué ser 100% gratuito para ser esencialmente un conductor impecable. Si el software toma una decisión que hace que el automóvil comience a acelerar, pero luego, 10 milisegundos más tarde, se da cuenta de que cometió un error (por cualquier motivo) y luego comienza a aplicar pausas, lo más probable es que no haya habido un daño real. Mientras tanto, el software marcará este “evento excepcional” para volver al equipo de desarrollo para una revisión y solución adecuada. Y así, un error real, no causa daños y, sin embargo, se corrige.

          2) “Digo que todo creador de un automóvil autónomo debe sentarse en su creación y ser conducido por él durante 1 año.
          Los que sobrevivieron serán pocos. “

          Interesante. Me pregunto si la misma lógica obliga a todos los profesores de conducción a ser conducidos por sus alumnos durante un año.

          Sobre el comentario sobre “Los que sobrevivieron serán pocos”, sospecho que no tiene un conocimiento íntimo del estado de la conducción autónoma. Hay algunas empresas (al menos 4 que yo sepa) que tienen un código de conducción autónoma que funciona excepcionalmente bien.

          Y, para lidiar con la hipérbole, la * gran * mayoría de los accidentes automovilísticos no provocan la muerte o incluso lesiones graves. 🙂

          • victronics dice:

            Por “nuestro software” probablemente se refería a nuestro desagradable programa húmedo allá arriba …

            (Por cierto, “No creo que en realidad haya ningún software de los años 50 todavía en uso y depurado activamente” – dígaselo a los chicos de COBOL en la industria bancaria :-P)

          • Cierto dice:

            @victroniko
            Se encontró un COBOL interesante durante la búsqueda de errores Y2K en un banco inglés sin nombre que usaba libras, chelines y centavos en las unidades fundamentales de su sistema y ese código se reparó en 1971 cuando el Reino Unido diezmó para manejar el dinero.
            (FYI: Hay 12 peniques en un chelín, 20 chelines o 240 peniques en una libra).

            Un código tan extraño puede durar unos 30 años.

      • Arne dice:

        ¡Aplique el mismo pensamiento a la conducción humana y la única velocidad legal sería muy lenta!

    • Ag dice:

      Pero la gente literalmente cae muerta o pierde el conocimiento al volante y esa es una falla comparable.

      La gente también se duerme, bebe, hace maniobras peligrosas para divertirse, etc.

      • pelrun dice:

        Al menos en el software, puede corregir el error en toda la flota después de que se descubra. La gente sigue fallando de la misma manera diabólica y nadie hace nada al respecto.

    • Ameyring dice:

      Los vehículos autónomos tendrían más sentido en carreteras exclusivas con excelentes marcas en las aceras. No me siento cómodo en la ciudad. Estoy seguro de que el tiempo conducirá a mejoras y si se acabó para evitar muertes debido a un conductor ebrio, estoy en condiciones de hacerlo.

    • Ben dice:

      Suenas como la persona más aburrida de Internet.

    • Fred dice:

      Estoy de acuerdo en que un vehículo autónomo (en el futuro algún día) adelantará a un humano, pero ¿quién es el responsable?
      ¿Es el conductor quien no tiene nada que ver con escribir el código?
      ¿Es el fabricante quien no puede controlar el hecho de que ha brotado barro en el sensor?
      ¿Fue el ingeniero de software quien firmó el código pero luego siguió adelante (o fue anulado por su propio código “aprobado”)?

      Creo que no es realista esperar que el conductor “siempre esté * completamente * listo para hacerse cargo” (como adoptan ahora todos los fabricantes de automóviles con piloto automático) cuando el piloto automático tiene problemas.
      ¿De qué sirve tener un coche autónomo?

      Bueno, la razón es la responsabilidad legal: pasar la culpa del fabricante / diseñador a otra persona.

      • pelrun dice:

        Quizás encontrar a alguien a quien culpar deja de ser una preocupación cuando los accidentes se vuelven poco frecuentes.

        • magia efervescente dice:

          ¿Cómo funcionó eso para formas más seguras de viajar, como el avión y el tren? No. La responsabilidad es importante y la industria del software, que está protegida contra ella, está generando productos desagradables.

      • CampGareth dice:

        Siempre que sea propietario o conduzca un automóvil, usted es responsable del riesgo, es decir, la posición predeterminada. Esto cambia cuando el fabricante toma el control de usted sin su consentimiento, p. Ej. Se produce un error de programa y el pedal del freno ahora es un acelerador. Sin embargo, la conducción autónoma y el exceso de velocidad requieren su consentimiento para activarse, por lo que aún tiene el control y, por lo tanto, la responsabilidad le pertenece. Ese será el caso hasta que cualquiera de esas funciones se desactive cuando intente controlar un controlador o los controladores de rostro humano desaparezcan por completo, lo que solo pude ver como un taxi.

        • Ulo dice:

          > entonces todavía gobiernas y por eso la responsabilidad te pertenece

          Conducir en automóvil puede volverse obligatorio tanto que es “más seguro que el promedio”, lo que genera el riesgo promedio para todos. Entonces la responsabilidad ya no puede recaer en el conductor porque no tuvo otra opción.

        • mac012345 dice:

          > por tanto, la responsabilidad es tuya.

          No, ya se ha asentado en la corte (volvo).
          En este caso, Volvo no puede probar que se realizó un retiro obligatorio debido a una falla de los frenos en un automóvil involucrado en una fatalidad (un conductor perdió el control de un automóvil y mató a un niño).
          Tenga en cuenta que una conductora también fue responsable porque no tomó medidas para evitar al grupo de niños (que por cierto no estaban en la calle).

    • Mate dice:

      Recomendaría hablar con algunos ingenieros de la industria automotriz sobre lo que deben hacer para demostrar la seguridad de los vehículos en la vía pública.

    • Stanson dice:

      > Error de codificación enterrado tan profundo que incluso un choque contra una pared (o un peatón muerto) incluso se da cuenta de que hay un problema.

      Es por eso que el código del automóvil debe ser lo más simple posible. También debe ser completamente demostrable. No debe haber ningún lugar donde un error de código pueda quedar “enterrado”. Eso debe ser completamente legible, comprensible y analizable por una sola persona en un día. Por lo tanto, nada de redes neuronales u otras tonterías “modernas” impredecibles e inestables. Si su código, incluidas las bibliotecas usadas, necesita más de unos pocos miles de líneas o necesita algún “lenguaje nuevo e innovador”, no es necesario que esté alimentado en el módulo principal de un automóvil. Nunca. Existe un sistema recreativo para diferentes alimentos que no necesita estar conectado a una red de vehículos.

      Nuestros antepasados ​​de ambos continentes envían naves espaciales a la luna y regresan con 40 kloc o menos, no me digas que los coches de mierda necesitan más. Si es así, definitivamente estás haciendo algo completamente mal.

      • Miroslav dice:

        100% cierto. En mi opinión, una red neuronal es solo un nombre elegante para un procesador estadístico inexplorado e incontrolable.

      • Mate dice:

        De hecho, soy empleado de una empresa que trabaja en el problema del vehículo autónomo en un puesto en el que desarrollamos y demostramos la seguridad de nuestros programas y hardware. Mi trabajo se refiere a las capas básicas del software, por lo que no puedo decir mucho sobre el proceso de seguridad de las DNN.

        Estamos implementando un proceso ISO26262 que cubre mucho terreno sobre cómo escribir un programa. Si solo desea hablar sobre la complejidad del código, esto depende de usted. Pero una métrica simple como las líneas de código es terrible para determinar la complejidad. ISO26262 recomienda adoptar una métrica como la complejidad del código ciclomático (CCM). Combinado con los requisitos de informes de código (en realidad, solo se realiza de manera realista mediante una combinación de pruebas de unidad, integración y sistema) y requisitos de seguridad (que generalmente involucran, por ejemplo, técnicas como fuzzing), el resultado es algo muy punitivo a menos que el código sea de baja complejidad y lo suficientemente fácil de comprender.

        El problema de DNN también se toma muy en serio. Entendemos que la prueba única es la mejor manera (incluso los años realizados con ambos simuladores y sobre la marcha). Como no soy un experto, y debido a que gran parte de esto sigue siendo mi propia investigación, no puedo comentar. Todas las empresas en este espacio son muy conscientes de las fallas de Tesla y Uber y nadie quiere agregar su nombre a esa lista.
        Pero el público debe exigir absolutamente una prueba de seguridad y examinar la metodología detrás de esas afirmaciones de seguridad cuando se trata de DNN. Las otras cosas en estos autos son cantidades conocidas en este momento y hay décadas o prácticas para lograr.

    • John dice:

      Ese error exacto solo sucederá, mientras que la humanidad ha estado luchando contra la bebida durante mucho tiempo, sin nunca exterminarla.

  • Hirudinea dice:

    Este no es un avance tan grande, la gente ha estado haciendo lo mismo durante años.

    • Adán dice:

      No permitiremos automóviles autónomos en las carreteras hasta que puedan dirigirse hacia las paredes al menos con la misma precisión que la persona promedio.

  • Miguel dice:

    Si lees el artículo. Esa es exactamente la razón por la que no pones codificadores bajos detrás de algo como esto. Tantos codificadores de momento solo se enfocan en la llegada del punto A al punto B. Donde tienen que poner igual si no más esfuerzo es en los puntos de falla. Uh, si quiero girar a la izquierda y no recupero el flujo que tenemos, entonces deténgase. ¿Qué tan simple es eso?
    Entonces, la razón por la que puede ver a estas personas en el software es una mierda.

    • jpa dice:

      Aprendieron la lección en una situación segura y también anunciaron mucho sobre ese problema. ¿Cuál es el problema?

    • pelrun dice:

      Oh, enfócate. Nadie escribe código libre defectuoso. No yo, no estos chicos, y ciertamente no tú. Los choques rara vez son tan espectaculares, pero de cualquier manera no merece que un “ingeniero” de sillón haga generalizaciones deshonestas sobre cómo todos, excepto ellos, son estúpidos.

      El hecho de que pudieran rastrear la ruta completa de falla desde el daño hasta la causa demuestra que saben lo que están haciendo.

      • Ulo dice:

        Al menos ahora lo hacen.

      • Adán dice:

        +1!

        https://qntm.org/core

  • RandyKC dice:

    Me tenías en un bus CAN.
    No hay fracaso cuando aprendes.

  • Mate dice:

    Me pregunto si el equipo usó Coverity o una herramienta similar para verificar si el código cumple con las especificaciones MISRA, AutoSAR y CERT aplicables. También me preguntaría si aplicarían un proceso ASIL a su trabajo. En ASIL-B, al menos deberían tener controles en sus interfaces que capturaran esto.
    Sí, todas estas cosas tienen una gran carga y, al ser un automóvil de carreras, cumplir estrictamente con las mejores prácticas para la industria automotriz probablemente parecía demasiado costoso. Pero estas cosas existen por tales razones.

    • 8bitwiz dice:

      Estas herramientas de verificación de código no controlan algoritmos ni problemas mediante un control deslizante. Y si lees el resumen, ¡el problema estaba en el código de verificación de intervalo!

      Creo que me importa más el hecho de que no tuvieran un botón de parada de emergencia en su diseño. Sí, sé que debería ser inalámbrico, con todos los problemas adicionales. ¡Y el hombre debe ser lo suficientemente rápido para presionarlo a tiempo! Pero es por eso que yo, como conductor humano, simplemente freno el freno o pongo un poco de gasolina, y me aseguro de que el coche vaya en la dirección correcta antes de pisarlo. A veces no sale como esperabas, así que tienes que confirmar las reacciones.

      • mac012345 dice:

        Realmente no incluye un código de control, de hecho, está muy cerca de la falla de Ariane5: un sistema se sale de los límites (NaN o desbordamiento), luego otros sistemas vinculados a él no manejan bien el problema porque no fue explícitamente especificado.

        Esto es básicamente un fracaso de un arquitecto sistemático, y uno malo.

        • Mate dice:

          “Esto es básicamente un fracaso de un arquitecto sistemático, y uno malo”.
          Uno que si me estuviera perdiendo mi trabajo, el equipo haría los AMFE con mucha agua caliente. Cualquiera que haga FTA o DFA también recibiría muchas críticas.
          Dado que esta es una situación racial, dudo que el equipo esté siguiendo los procesos de seguridad automotriz de todos modos.

          Y como indico en mi respuesta a 8bitwiz, esta falla suena como una violación obvia de CERT FLP04-C. Si usaran Coverity con controladores para la regulación CERT C, esto debería verificarse y el código debería al menos revisarse.

      • Mate dice:

        https://wiki.sei.cmu.edu/confluence/display/c/FLP32-C.+Prevent+or+detect++ domain + and + range + errors + in + math + functions

        https://wiki.sei.cmu.edu/confluence/display/c/FLP04-C.+Check+floating-point+inputs+for+ excepcionales + valores

        https://community.synopsys.com/s/article/Coverity-2017-07-FP-MISRA-C-2012-Rule-17-3

        De hecho, existen reglas y controles en torno a este tipo de cosas.
        Del cartel “Entonces, durante esta vuelta de inicialización, sucedió algo que aparentemente hizo que la señal de control direccional pasara a NaN y luego la unidad se bloqueó al valor máximo a la derecha”.

        Permitieron que el NaN se extendiera a través de muchas interfaces en el sistema.
        Al menos CERT FLP04-C fue violado en alguna parte.

      • Mate dice:

        Parece que mi respuesta no pasó por el filtro de correo no deseado porque tenía algunas URL. Hay algunas reglas MISRA y CERT sobre los números de coma NaN. Coverity anuncia apoyo para ellos. Usamos Coverity en mi lugar de trabajo y hemos descubierto que Coverity no echa de menos cosas, pero puede generar muchos falsos positivos.

        Una regla CERT-C específica FLP04-C dice específicamente que se controle el NaN. La publicación dice que el NaN se ha extendido a través de interfaces de software en el automóvil y parece que ninguno de ellos lo ha verificado. Si tuvieran que apuntar incluso a ASIL A, tendrían que verificar sus datos en sus interfaces.
        Me parece extremadamente irónico que este sea un equipo de Acronis que es una empresa de ciberseguridad y deben conocer las pautas de codificación CERT.

        Puede ver algunas medidas necesarias para los diferentes niveles de ASIL si está buscando “Análisis de la aplicación estándar ISO26262 en desarrollo de sistemas de control”. El primer enlace debe ser un PDF con ese mosaico. En este PDF busque la tabla 6.

        Si el equipo siguiera la norma ISO 26262 y tuviera como objetivo incluso el nivel ASIL más bajo de A, es casi seguro que se detectaría el error.

        Sin embargo, al ser un auto de carreras sin gente alrededor de un circuito cerrado con características de seguridad para mantener los autos separados de las personas, es posible que no se requieran certificados de seguridad que los equipos deben cumplir.

  • Cierto dice:

    La solución simple son solo rutas de máquinas, si una máquina destruye una máquina, las personas en los automóviles / camiones / autobuses conocían los riesgos y voluntariamente entregaron su seguridad a la compañía de recolección de datos avanzada real. Por tanto, la empresa es inocente si las personas mueren durante la fase de prueba. Y cada empleado de todas estas empresas debe estar legalmente en estas máquinas solo en las carreteras de sus automóviles de empresa durante al menos 7 horas a la semana.

    Los problemas se resolverán rápidamente.

  • Floatsarebadmmkay dice:

    No se limita a utilizar flotadores (y dobles) en programas críticos sin la debida precaución.

    • Adán dice:

      “… ahora tengo 2.000000000000003 problemas”.

  • Brian dice:

    Entiendo totalmente el error del programa PERO … ¿no había un algoritmo para evitar colisiones que pudiera accionar los frenos?

    Bueno, el algoritmo direccional falló. Pero pensaría que algún día un sensor lidar sería como “Hey, pared” y el algoritmo de control sería como “Hmmm, frenos, supongo”.

    Quizás el algoritmo asumió que el automóvil podría alejarse fácilmente del obstáculo, pero no siempre se puede confiar en la dirección. Los coches pueden subvirarse y tensarse. Los otros sistemas deben estar listos para compensar.

  • DainBramage dice:

    ¿Por qué se permitió que esto sucediera? ¿Qué programador no proyecta su contribución para tolerar un simple error de NAN?
    Joder, descubrí cómo hacer eso en TI-99 / 4A BASIC cuando era solo un niño. Si un niño estúpido como yo puede resolverlo, ¡seguramente un grupo de adultos con diplomas debería poder manejarlo!

  • Beto dice:

    El disco está atascado, está bien, también podría suceder de forma similar. Sin embargo, ese no parece ser el único problema.
    ¿No tiene los medios para detectar un objeto frente al automóvil y posiblemente realizar varias acciones? Si se tratara de un conductor humano y digamos que el volante de alguna manera se separó de las ruedas, es probable que hubieran pensado, ooh, que algo me viene inesperadamente, pero me estoy alejando de eso, ¿debería? posiblemente presionar lo suficiente? forzar el freno y ver qué sucede en lugar de tratar de acelerar y simplemente conducir alrededor?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *