Simulador de Ferrocarriles Rusos (RRS): primer lanzamiento público

Ha llegado el ansiado día en que finalmente puedo presentar este desarrollo. El proyecto comenzó hace exactamente un año, el 1 de septiembre de 2018, al menos en el repositorio RRS en GitHub el primer commit tiene precisamente esa fecha.

Tren de pasajeros en la estación Rostov Principal (clicable)

Simulador de Ferrocarriles Rusos (RRS): primer lanzamiento público

¿Qué es RRS? Es un simulador de tracción de vagones de vía de 1520 mm de código abierto y multiplataforma. El lector se preguntará legítimamente: "Permítame, ¿para qué es este proyecto si existen suficientes simuladores sobre ferrocarriles, tanto comerciales como de código abierto?" Para responder a esta pregunta, propongo mirar abajo.

Historia del proyecto

Hace mucho tiempo, en 2001, nació Microsoft Train Simulator (MSTS), que creó en nuestro país una gran comunidad de entusiastas de los simuladores de ferrocarriles. Durante los años que existió este proyecto (hasta que Microsoft lo dejó de lado para ocuparse de cosas más interesantes para ella, como la quiebra de Nokia, etc.), el proyecto se enriqueció con una gran cantidad de complementos: rutas, material rodante, escenarios.

Basado en MSTS, posteriormente se crearon una serie de otros proyectos, como OpenRails, RTrainSim (RTS) y otros complementos y derivados. También surgieron proyectos comerciales, como el famoso Trainz. Y todo estaría bien, pero muchos aficionados al transporte ferroviario no están satisfechos con estos productos por razones bastante objetivas: no reflejan la especificidad del material rodante nacional que se opera y se desarrolla en el espacio postsoviético. Esto se manifiesta especialmente al observar cómo se implementan los frenos del tren: ninguno de los proyectos mencionados tiene ni tendrá una implementación adecuada de los frenos automáticos del sistema Matrosov.

En el no muy lejano 2008, apareció otro proyecto — ZDSimulator, desarrollado por Vyacheslav Usov. El proyecto es notable porque corrige las deficiencias mencionadas anteriormente y, al mismo tiempo, está orientado desde el principio al material rodante de vía rusa. Pero hay un gran "pero" — el proyecto es propietario y cerrado, arquitectónicamente no permite la incorporación de su propio material rodante.

Personalmente, llegué al tema ferroviario en 2007, cuando comencé a trabajar en OJSC VELNI, en el cargo de investigador científico, y después de defender mi tesis doctoral en 2008, como investigador principal. Fue entonces cuando conocí los últimos logros en el ámbito de los simuladores de trenes. Y lo que vi no me gustó, además en ese momento no existía el proyecto ZDSimulator. Posteriormente, atraído por la dinámica del material rodante, llegué a la Universidad Estatal de Transporte de Rostov (RSTU) con el tema de mi tesis doctoral sobre la dinámica de frenado de trenes de carga. Hoy en día, dirijo el desarrollo de complejos de simuladores de transporte ferroviario para nuestra universidad y enseño disciplinas especializadas en el departamento de 'Material Rodante de Tracción'.

En relación con todo lo anterior, surgió la idea de crear un simulador que permitiera al desarrollador de complementos obtener control total sobre los procesos físicos que ocurren en el material rodante. Similar al simulador espacial Orbiter, para el cual desarrollé en su momento un complemento en forma de familia de cohetes portadores basados en el R-7. Hace un año, comencé a trabajar en este proyecto y me sumergí por completo en él. El 26 de diciembre de 2018, nació esta demostración tecnológica.

Mi trabajo fue notado por entusiastas, y un conocido en los círculos de simuladores ferroviarios, creador de contenido visual para ZDsimulator, Roman Biryukov (Romych RZDUS) me ofreció ayuda y colaboración en el desarrollo posterior del proyecto. Más tarde, se unió a nosotros otro desarrollador — Aleksandr Mishchenko (Ulovskii2017), creador de rutas para ZDsimulator. Nuestro trabajo conjunto nos llevó a la primera versión. En el video hay un resumen de cómo se ve el juego en su primera versión.

Reproducir video

Características del simulador RRS

Ante todo, se trata de una arquitectura de software abierta. Sin mencionar que el código del simulador es abierto, existe una API y un SDK orientados a desarrolladores de complementos de terceros. La barrera de entrada es bastante alta: se requieren habilidades básicas de programación en C++. El simulador está escrito precisamente en este lenguaje, utilizando el compilador GCC y su variante MinGW para el sistema operativo Windows. Además, es deseable que el desarrollador tenga familiaridad con el marco Qt, ya que muchos conceptos de este se basan en la arquitectura del juego.

Sin embargo, con el debido esfuerzo y deseo, este proyecto brinda a los desarrolladores de complementos enormes oportunidades. El material rodante se implementa en forma de módulos basados en bibliotecas dinámicas. El elemento estructural principal en el simulador es la unidad de material rodante, o unidad móvil (UM) — vagón (no autopropulsado o en un tren automotor) o sección de locomotora. La API permite establecer el par motor aplicado a los ejes de la UM, a cambio recibe la velocidad angular de los ejes, así como parámetros externos, como la tensión y el tipo de corriente en la red de contacto. El simulador no sabe nada más y no quiere saber, lo que deja la física del funcionamiento del equipo interno a cargo del desarrollador de la locomotora o vagón específico.

No es difícil adivinar que este enfoque relativamente de bajo nivel permite implementar los más mínimos matices del esquema de la locomotora. Además, el simulador incluye un conjunto de equipos estándar que se instalan en el material rodante nacional: la grúa de conductor N°395, el distribuidor de aire N°242, la válvula del freno auxiliar N°254 y otros elementos del equipo de frenos. Al desarrollador del complemento solo le basta con conectar estos elementos en el esquema neumático de la locomotora o vagón específico. También hay una API para crear bloques de equipo personalizados.

Arquitectónicamente, RRS se basa en la interacción de dos procesos principales

  • simulator — el motor físico de dinámica del tren TrainEngine 2. Implementa la física del movimiento del tren teniendo en cuenta numerosos factores externos, considerando la interacción de las unidades móviles a través de los dispositivos de acoplamiento, y se ocupa del procesamiento de datos recibidos de módulos externos que implementan la física del funcionamiento del equipo del material rodante.
  • viewer — el subsistema gráfico que realiza la visualización del movimiento del tren, construido sobre el motor gráfico OpenSceneGraph

Estos subsistemas interactúan entre sí a través de una memoria compartida implementada utilizando la clase QSharedMemory del marco Qt. Las primeras versiones de demostración utilizaron IPC basado en sockets, y en el futuro se planea volver a esta tecnología, teniendo en cuenta la mejora de algunas partes del simulador y las necesidades con una visión a largo plazo. La transición a la memoria compartida fue, en cierta medida, una medida necesaria que ha agotado su utilidad.

No voy a describir los matices: muchos de los avatares del desarrollo de este proyecto ya se han expuesto en mis publicaciones en el recurso; en particular, tengo un ciclo bastante amplio de tutoriales sobre el motor OpenSceneGraph, que surgió precisamente de la práctica de trabajar en este proyecto.

El proyecto no está tan bien como me gustaría. En particular, el subsistema gráfico está bastante lejos de la perfección en términos de calidad de renderizado, y el rendimiento del simulador deja mucho que desear. Este lanzamiento tiene un único objetivo: familiarizar a la comunidad de entusiastas del transporte ferroviario con el proyecto, delinear sus capacidades y, por fin, crear un simulador ferroviario abierto y multiplaforma con una API avanzada para desarrolladores de complementos.

Perspectivas

Las perspectivas dependen de ustedes, nuestros queridos futuros usuarios y desarrolladores. El proyecto es abierto, existe el sitio web oficial, donde se puede descargar el simulador, con documentación, un conjunto que se irá ampliando continuamente. Existe foro del proyecto, un grupo en VKcomo canal en YouTube, donde se puede obtener la asesoría y ayuda más detalladas.

¡Gracias por su atención!

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster