En informática, distinguimos entre hardware y software. El hardware es lo que puedes tocar. El software es lo que necesita el hardware para hacer algo. Instrucciones, aplicaciones, controladores de componentes… Y el software más destacado es el sistema operativo. Es el encargado de poner orden entre hardware y software. Es así en ordenadores, smartphones, televisores y en cualquier dispositivo electrónico. Y esto incluye los automóviles modernos, repletos de componentes electrónicos. Y, con más razón, también afecta a los coches autónomos.
A diferencia de smartphones y ordenadores, el software que corre en determinados dispositivos o máquinas electrónicas, es desconocido para el gran público. Tiene un porqué. Primero. Porque se trata de piezas de código simples que realizan funciones concretas. No necesitamos saber más como usuarios. Pero a medida que se vuelven más complejos, empezamos a saber cada vez más sobre el software detrás de un hardware. Un ejemplo, los televisores. A medida que se han convertido en ordenadores conectados a Internet, antes de comprar un nuevo televisor debemos saber qué sistema operativo trae consigo y qué prestaciones ofrece.
Con los vehículos ocurre lo mismo. Poco a poco, la electrónica ha ido ganando terreno a la mecánica. Los modelos más modernos cuentan con pantalla de abordo y multitud de sistemas y subsistemas en forma de software que realiza tareas automatizadas. No es de extrañar que el coche autónomo cuente con sistema operativo en su interior. Un ordenador con ruedas que nos permite viajar sin apenas tocar el volante.
¿Un ordenador o una central de datos?
Aunque por fuera parezca una simple caja metálica con ruedas, un automóvil por dentro es una máquina muy compleja. Y en el tema que nos ocupa, siguiendo con el símil del ordenador rodante, en realidad un vehículo autónomo es una red de ordenadores. Un centro de datos conectado con diminutas computadoras que realizan cada una su tarea asignada. Estas diminutas computadoras se conocen como unidades de control electrónico, ECU en inglés (Electronic Control Unit). Son distintas entre sí, emplean diferentes sistemas operativos y, en la práctica, no hay dos iguales.
Gestión de la batería, sistema de navegación, ordenador de a bordo, sistema de geolocalización, control electrónico de las ruedas, gestión de las luces (traseras y delanteras) y un largo etcétera. Estas son solo algunas de las funciones que un automóvil realiza de manera automática. Gracias a los ECU o minicomputadoras que tiene integradas. Así que en vez de un ordenador por ruedas, se trata de una central de datos. Cada ECU emplea procesadores de varios núcleos para manejar distintos componentes. Todo ello comunicado con una red interna Ethernet.
Y en la variedad de sistemas operativos que hacen posible todo esto, los que más conocemos son los que corresponden a la categoría de información y/o entretenimiento. Los más populares, Android (o mejor dicho, Android Automotive o Android Auto, en su versión para automóviles) y Apple CarPlay. Presentes en el ordenador de a bordo, sirven para mostrarnos mapas, mensajes, reproducen música, nos permiten gestionar llamadas mediante comandos de voz, saber qué tiempo hará, etc. Pero no controlan el vehículo. Si sufres un percance, el encargado de activar el Airbag es otro sistema operativo.
RTOS y GPOS, conviviendo en armonía
Los dos sistemas operativos mencionados antes corresponden a la categoría de GPOS, acrónimo inglés que podemos traducir como sistema operativo de propósito general. En esta categoría se incluyen los sistemas operativos que conocemos en ordenadores y en la mayoría de dispositivos de nuestro día a día. Pero los que se encargan de la parte compleja del vehículo son los llamados RTOS, acrónimo que significa Real Time Operating System, sistema operativo en tiempo real.
La razón de ser de los RTOS es desempeñar tareas específicas, más o menos simples o complejas, pero que deben realizarse en segundos o milésimas de segundo. Control de dirección, cambio de marchas, sistema de frenado, consumo de combustible, elementos de seguridad ante accidentes…
Para entender la complejidad que supone un vehículo moderno y, también, un coche autónomo, sólo tenemos que ver las líneas de código necesarias para hacerlo funcionar. Según Information is Beautiful, a partir de varias fuentes, Facebook emplea 60 millones de líneas de código. Windows 3.1 empleaba 2’5 millones. Android, 12 millones. Un automóvil actual requiere más de 100 millones de líneas de código. A su lado, el genoma de un ratón contendría en su ADN el equivalente a 120 millones de líneas de código.
Sistemas operativos para coches autónomos
El hermetismo de la industria automovilística hace que en ocasiones sea complicado conocer los entresijos de su software, lo mismo que ocurre con el resto de componentes. Con todo, conocemos algunos de los sistemas operativos que manejan distintos fabricantes para sus vehículos autónomos gracias a que para hacer posible estas tecnologías se han creado grupos de trabajo conjuntos y organizaciones que engloban varios fabricantes.
QNX Neutrino es posiblemente el sistema operativo más popular en automóviles autónomos. Lo emplean fabricantes como Ford, BMW, Audi o Volkswagen. Este sistema operativo en tiempo real, basado en UNIX, es propiedad de BlackBerry y permite centralizar todos los procesos y tareas de un coche sin conductor. Puede encargarse de la parte ADAS (acrónimo de sistemas avanzados de asistencia a la conducción) y de la parte visible por el conductor en el ordenador de a bordo.
WindRiver VxWorks es otro RTOS popular. Detrás se encuentra WindRiver, firma especializada en software para dispositivos inteligentes (IoT). Este software lo emplean fabricantes de automóviles y de componentes como Toshiba, Bosch, BMW, Ford o Volkswagen. Como curiosidad, encontramos este sistema operativo en aviones de pasajeros y en el robot Curiosity de la NASA.
Green Hills Integrity y Mentor Nucleus son dos sistemas operativos que también forman parte de la lista. El primero tiene a clientes como Toyota, Boeing, Nintendo o Ford, que emplean su sistema operativo en automóviles, aviones y toda clase de máquinas industriales y dispositivos IoT. Por su parte, Nucleus pertenece a Siemens y cubre la parte técnica y autónoma además de la que ve directamente el conductor.
Además de los antes mencionados, en la actualidad existen proyectos más o menos secretos que tienen que ver con conducción autónoma y que, por tanto, poca información hay al respecto. Tesla, por ejemplo. Es muy hermética al respecto, aunque en principio emplea Linux para la interfaz y microcontroladores para el resto de elementos, los minicomputadores o ECU. Por su parte, Apple lleva años apareciendo en la rumorología sobre vehículos autónomos. Y Microsoft trabaja con empresas como Volkswagen, TomTom o LG para aplicar su plataforma Microsoft Connected Vehicle Platform en automóviles autónomos y coches eléctricos en general.
¿Un sistema operativo para gobernarlos a todos?
Hay varios debates entorno a coches autónomos y sistemas operativos. El principal, ¿es posible desarrollar un sistema operativo que centralice y realice todas las funciones que hoy se reparten entre diferentes componentes independientes, los ECU, cada uno con sistemas operativos o códigos individuales y especializados en su tarea? Los ejemplos que vimos antes van hacia eso, pero la complejidad del vehículo autónomo hace necesaria la diversidad de sistemas y subsistemas. Al menos por ahora.
Segundo debate. ¿Cada fabricante o grupo de fabricantes tendrá su propio sistema operativo o se pondrá la industria de acuerdo con un sistema estándar para todos? Viendo lo que ocurre con otros sectores, como la electrónica de consumo o la industria del entretenimiento, se hace complicado que exista solamente una opción para manejar los coches autónomos. Y es que pese a la concentración de fabricantes de la última década, la competencia sigue siendo feroz. Y se hace complicado una unión a ese nivel. Esto no quita que surjan proyectos como Apex.OS, un sistema operativo para coches autónomos pensado para cualquier marca o fabricante.
Por otro lado, el nivel de especialización de este tipo de software, se programe o no en las instalaciones del propio fabricante del vehículo, dificulta que se estandarice para todos los componentes, modelos y versiones de automóviles actuales. Cada uno con sus particularidades y sistemas cerrados compatibles solamente entre sí.
Sea como sea el interior del coche autónomo, para el usuario, la experiencia seguirá siendo homogénea y lo más sencilla y segura posible. Todo cuanto pase fuera de la pantalla de a bordo queda al margen de nuestro conocimiento. Por nuestra parte, disfrutaremos del viaje y de la información aportada por el vehículo conectado al tiempo que podremos despreocuparnos de la conducción y otros aspectos del automóvil.