Sim-VT is a simulation environment used in our (see People) study about the interaction between a teleoperator and an actual driver in a remote vehicle operation scenario. The simulation basically consists of two webclients and a 'backend'. One webclient mocks a smarphone app that can be used to request/order remote vehicle operation service, while the other weblient acts as the cars infotainment screen. Communication between the apps and the server works via websockets. The 'backend' it self has a nice ui to view the network messages and send commands to the clients.
- (Mocked) Smartphone-App "DriveMe" for ordering remote vehicle operation services.
- (Mocked) Car Infotainment-Screen (to understand interaction between teleoperator & driver in the car)
- a really basic webapp to test websockets functionallity (pretty much the only thing that might also be usefull for other projects)
- buildin web server for hosting previously mentiones webapps and a rest api
- buildin websockets server is used for sending commands and request signals
- an Admin-UI for the backend in it´s own local window
The code in this repository was quickly hacked together and should not be used (directly or as reference) for any serious production work. Testing was only done within the parameters of our study setup (which is not documented here). You can still use this code if you want though. (You have been warned!)
We do not provide any binaries. You will therefore have to setup a full development workspace.
Make sure you have NodeJS + npm installed before you start!
- Clone this project to the preferred location
- Run
npm install
to install the required nodejs modules
-
just run
npm start
and you should be good to go:- The local Admin-UI for the backend will open in a new window
- The buildin webserver should be available at
http://localhost:8080
locally and over the network (using the computers ip adress)- The DriveMe-App is located at
http://server_ip:8080/app
- The Car Infotainment is located at
http://server_ip:8080/car
- The WebSockets-Test-Client is locates at
http://server_ip:8080/ws-test
. It will by default point to the websockets server atws://server_ip:8081
- The DriveMe-App is located at
-
We discourage just "terminating" the software. (But you can for sure do so by just hitting
ctrl+c
inside your console window). The proper way to do this would be to right-click the programs´s icon in you systems menubar and choosing 'Quit' form the context-menu.
We use:
- NodeJS v12.4 (and npm)
- ElectronJS aka 'electron'
- Pure (vanilla) javascript (yep, sandly no fancy typescript stuff)
- ExpressJS
- WS (Websocket) module for nodeJS
The project structure may not be self explanatory. Therefore we would like to give you a quick overview:
/frontend
contains the (electron based) frontend for the Admin-UI/server
contains the server code.- The main
index.js
file just acts as a service controller for the actual server-modules inside the./services
directory:contentService.js
- static webserver (using expressjs) that exposes the subdirectory./data/clients
via (insecure) http on port8080
. This exposed clients directory contains:./app/*
the (mocked) "DriveMe"-SmartphoneApp./car/*
the (mocked) "Car-Infortainment" Screen./ws-test/*
the websockets test client./shared/assets/*
contains assets that are reused in different webapps like./fonts
(.woff2),./css
-stylesheets (and fonts-stylesheets),./images
../javascript
-fileswebui.js
that contains the mainapp
code for the mocked clients. Their individual app.js files will implement/overwrite certain functions in this file./lib
contains additional libraries/frameworks (like jQuery) from other vendors
signalService.js
- websockets server (using ws module) that runs on port8081
- The main
appController.js
is the main script/controller for the entire simulation environment. It contains "glue code" for the backends Admin-UI, starts/stops the services and acts as delegate for incomming (websocket) signals/messages.main.js
is the entry/startup script to the simulation environment.
-> Do not use pure (vanilla) javascript for things like this. If we had to do it again, we would go with typescript.
- Samuel Schreiber aka. samyLS
- Lena Stütz
- Veronica Hartl
We have not yet decided on a license
- Used icons (as well as the app icon) are from Icons8
- We also used these stock photos from Pixabay as driver-personas:
- https://pixabay.com/photos/beautiful-girl-smiling-young-woman-1687955/ (-> "Elenor Kaiser")
- https://pixabay.com/photos/beard-face-man-model-mustache-1845166/ (-> "Jan Mayer")