August 2020 - Today
Client: ESTACA
Position: Project Manager, System architect, software engineer
In order to transmit an applied vision of the railway principles studied during the courses, the head of the railway specialization of ESTACA, in relation with the teaching staff and some alumni, have given themselves the objective to design, build and develop a train dimensioning and driving simulator.
My role is to specify, design and develop the technical and software aspects of the project while managing research teams for the continuous improvement of the project.
Establish the Quality Management System norm ISO9001:2015 and apply its main criterion in the writing of various technical documentation and the versioning of the different aspects of the project;
Manage a team of 8 to 12 members spread over projects of 3 to 4 people;
Create a standardized multi-projects visual identity to communicate and evolve on a common base;
Build a robust and open programming architecture to facilitate its use and future development;
Create a database of railway systems and infrastructure following the CMMS (Computerized Maintenance Management Systems) format;
Develop modules like ETCS, the physics (traction, grip, braking, ...), an initialisation and rolling-stock dimensioning software and more;
Model 3D the interior of a Regio2N train cabin, following a PBS (Product Breakdown Structure).
Implementation of a versioning system for the code (with Git/GitHub) and the documentation (with Office365);
Definition of programming rules to ensure a readable and maintainable code base;
Creation of a Word document template, respecting the ISO norm's constraints;
Writing railway and software technical documentation similar to ERA's ERTMS documentation.
Implementation of a software architecture that separates components, graphics and logic to adapt to the evolution of the simulator;
Addition of a "General" page to configure the simulation (command-board, on-board systems, DMI, ...);
Addition of a "Buttons" page to precisely configure (type, operation, delays, ...) each component of the command-board;
Addition of a "Train" page for simple or advanced configuration of the rolling-stock used, divided in 3 parts:
Simple configuration (main page): developed in agreement with teachers allowing students to test their own rolling-stocks as part of a 3rd year design project. The simulator is used to validate each student's design;
Complex configuration: developed in agreement with professionals in the sector, allowing each train system to be configured in detail. From electrical systems (position and range of pantographs, SPCB/MCB) to motorization and braking systems (position, power, type, ...) afforded by the creation of an interactive and dynamic graphics interface;
Braking systems: to configure each braking system in detail (pads, disks, magnetic brakes, dynamic/regenerative, command);
Addition of a "Context" page, to define default states, meteorologic conditions and more to simulate specific scenarios
Addition of a "Line" page for the selection and generation of railway lines;
Addition of a "Screens" page to position each simulation window automatically;
Writing documentation on components, usage and input information;
Development of a unit conversion module to adapt to the specifications of different manufacturers;
Creation of a specific virtual keyboard for full touch-screen compatibility of the simulator
Libraries used:
Graphics interface and virtual keyboard: PyQt6 (Python); QML/JavaScript
Convert virtual keyboard inputs as real keyboard inputs: Keyboard (Python)
Creation of a train database divided into subsystems (motorization, braking, electrical, ...) using a structure similar to CMMS;
Implementation of railway traction and braking dynamics from the inputs defined in the initialisation application;
Factor in the line layout and its parameters;
Use of the data visualisation module to link to concepts studied in class.
Libraries used:
Graphic interface for the visualisation module: PyQt6 (Python); QML/JavaScript
Recreation of the DMI (Driver Machine Interface) following the sets of specifications of baseline 3 described by the ERA;
Implementation of the main functions of the EVC (European Vital Computer) to generate the braking curves.
Libraries used:
Graphic interface for the DMI: PyQt6 (Python); QML/JavaScript
Implementation of a module structure that takes into account the different command-boards built with the school (light, heavy and keyboard for development) and allow to connect each of them to the operation of any rolling-stock;
Implementation of base functions for the operation of trains like the TGV, AGC and many other standards trains;
Addition of a "Buttons" page to precisely configure (type, operation, delays, ...) each component of the command-board.
Libraries used:
Communication between the command-board and the code base: PySerial (Python)
Graphic interface for the command-board settings: PyQt6 (Python); QML/JavaScript
Use of multiple Open Data SNCF databases;
Data collection and processing;
Generation of CSV files from the data and equations used by SNCF Réseau in France;
Use of the aformentioned files for the generation of the tracks and infrastructures on UE5.
Libraries used:
Data collection and database managment: Pandas (Python)
Data treatment: Numpy/regex (Python)