knowgo-vehicle-simulator
An interactive multi-platform Connected Car simulator for generating and streaming realistic vehicle telemetry.
Science Score: 54.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
✓Academic publication links
Links to: zenodo.org -
○Committers with academic emails
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (13.9%) to scientific vocabulary
Keywords
Repository
An interactive multi-platform Connected Car simulator for generating and streaming realistic vehicle telemetry.
Basic Info
- Host: GitHub
- Owner: knowgoio
- License: mit
- Language: Dart
- Default Branch: master
- Homepage: https://knowgoio.github.io/knowgo-vehicle-simulator/docs
- Size: 18.6 MB
Statistics
- Stars: 35
- Watchers: 3
- Forks: 7
- Open Issues: 8
- Releases: 3
Topics
Metadata Files
README.md

knowgo-vehicle-simulator
An interactive multi-platform Connected Car simulator for generating and streaming realistic vehicle telemetry.
Overview
knowgo-vehicle-simulator has been developed to aid in the
development and validation of data-driven Connected Car services and
models that require easy access to realistic synthetic driving data,
both for static and streaming applications. It was originally designed
for generating event records for the KnowGo Car platform, but has
been generalized so that it may be useful both to Connected Car service
developers and researchers.
The vehicle simulator generates a single unique vehicle, which can be controlled either directly through the UI or through an optional REST API. This may be further interfaced with OEM-specific external data sources and models in order to permit the simulation state to act as an automotive digital twin. For fleet simulation workloads, multiple instances of the simulator may be run in parallel, with each generated vehicle being manually joined to a specified fleet.
Live Demo
A live demonstration of the Simulator is available here.
Installation
Installation from a binary release is recommended. Regular releases are made to various app stores, please refer to the one appropriate for your platform:
Releases can also be obtained directly from GitHub.
Deployment
For deployment of a self-contained web-based instance of the simulator, a number of deployment options have been provided:
Docker
Multi-arch images are provided under knowgo/knowgo-vehicle-simulator. The image can be run directly as:
$ docker run -p 8086:8086 knowgo/knowgo-vehicle-simulator
Kubernetes
To create a Kubernetes Deployment including a single instance of the
simulator:
$ kubectl apply -f https://raw.githubusercontent.com/knowgoio/knowgo-vehicle-simulator/simulator-deployment.yaml
An optional Service exposing the simulator port on the cluster can
also be applied:
$ kubectl apply -f https://raw.githubusercontent.com/knowgoio/knowgo-vehicle-simulator/simulator-service.yaml
Simulator UI

Documentation
For additional documentation and tutorials, please refer to the documentation.
Postman Collection for Simulator REST API
A Postman Collection and pre-configured environment for interacting with the Simulator REST API in a local simulation environment is available here.
Architecture
The Simulator itself consists of several different components:
- The Vehicle Simulation model
- An Event loop for generating vehicle events, run as either
an Isolate or Web Worker depending upon the target platform.
- An optional HTTP Server isolate for exposing a REST API with basic
vehicle controls - starting/stopping the vehicle, updating the
vehicle state, handling vehicle notifications, and querying vehicle
events.
As the simulation state can not be shared directly across the isolates,
the simulation model in the main isolate acts as the source of truth
across the system:
- Updates from the Event loop are applied to the simulation model
periodically, in line with the event generation frequency: once
per second by default.
- The HTTP Server isolate maintains its own cached copy of the
simulation state, which is updated with changes from the Event
isolate, UI interaction, and the REST API. Changes received through
the REST API are cached in the HTTP Server isolate and proxied back
to the simulation model directly.
- The UI in the main isolate is redrawn based on changes to the
simulation model, triggered by UI interaction and updates from the
Event loop or HTTP Server isolate.
An overview of the overall interactivity patterns for the different target platforms is provided in the table below:
Flutter Web | Other Target Platforms
:--------------------------------:|:----------------------------------:
| 
Implementation Status
- [x] Linux desktop
- [x] Windows desktop
- [x] macOS desktop
- [x] Web
- [x] Android
- [x] iOS
Event Publication
By default, generated events are only logged in the console. Events can be published to a custom notification endpoint, a KnowGo API backend, as well as MQTT and Kafka brokers (as well as any combination thereof). The specific configuration for each is outlined below.
Configuration
Configuration of the simulator can be tuned through a config.yaml
file, which will be parsed and updated by configuration changes within
the UI. The format of the file is:
```yaml sessionLogging: true eventLogging: true
Allow unauthenticated requests to REST API
allowUnauthenticated: true
Optional endpoint to post generated events to
notificationUrl: http://myserver.com/endpoint
Optional KnowGo Backend Configuration
knowgo:
server:
Optional Kafka Broker Configuration
kafka:
broker:
Optional MQTT Broker Configuration
mqtt:
broker:
A number of environment variables can also be set:
Environment Variable | Description | Default value
:-------------------|:-----------|:-------------
KNOWGOVEHICLESIMULATOR_CONFIG | Path to config file | <appDocDir>/knowgo_vehicle_simulator/config.yaml
KNOWGOVEHICLESIMULATOR_LOGS | Path to log directory | <appDocDir>/knowgo_vehicle_simulator/logs
KNOWGOVEHICLESIMULATOR_IP | IP address to bind for REST API | 0.0.0.0
KNOWGOVEHICLESIMULATOR_PORT | HTTP port to bind for REST API | 8086
KNOWGOSIGNINGKEY | Signing and validation secret for API keys | secret-key
Features and bugs
Please file feature requests and bugs at the issue tracker.
License
Licensed under the terms of the MIT license, the full version of which can be found in the LICENSE file included in the distribution.
Owner
- Name: KnowGoIO
- Login: knowgoio
- Kind: organization
- Email: labs@adaptant.io
- Location: Munich, Germany
- Website: https://www.knowgo.io
- Twitter: knowgo_io
- Repositories: 3
- Profile: https://github.com/knowgoio
Adaptive Privacy-Preserving Data Services & Solutions for Connected Cars
Citation (CITATION.cff)
# This file is a citation metadata file in the Citation File Format
# (http://citation-file-format.github.io/).
#
# It provides citation metadata for this version of knowgo-vehicle-simulator.
cff-version: 1.0.3
message: "If you use knowgo-vehicle-simulator in your work, please cite it using the following metadata"
title: knowgo-vehicle-simulator
authors:
- family-names: Mundt
given-names: Paul
orcid: https://orcid.org/0000-0003-0315-290X
version: 1.2.0
doi: 10.5281/zenodo.5111925
date-released: 2021-07-18
GitHub Events
Total
- Watch event: 5
- Issue comment event: 1
- Fork event: 1
Last Year
- Watch event: 5
- Issue comment event: 1
- Fork event: 1
Committers
Last synced: about 2 years ago
Top Committers
| Name | Commits | |
|---|---|---|
| Paul Mundt | p****t@a****o | 236 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 9 months ago
All Time
- Total issues: 14
- Total pull requests: 1
- Average time to close issues: 16 days
- Average time to close pull requests: 3 minutes
- Total issue authors: 8
- Total pull request authors: 1
- Average comments per issue: 1.14
- Average comments per pull request: 0.0
- Merged pull requests: 1
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 0
- Pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Issue authors: 0
- Pull request authors: 0
- Average comments per issue: 0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- omarzia88 (6)
- pmundt (2)
- efrenlopezm (1)
- Transmitt0r (1)
- airtoncarini (1)
- Vickpire (1)
- Cat2794 (1)
- farhang19948 (1)
Pull Request Authors
- pmundt (1)
Top Labels
Issue Labels
Pull Request Labels
Dependencies
- Flutter 1.0.0
- path_provider 0.0.1
- FlutterMacOS 1.0.0
- path_provider_macos 0.0.1
- archive 3.2.2
- args 2.3.0
- async 2.8.2
- auth_header 3.0.1
- auto_size_text 3.0.0
- basic_utils 3.9.4
- boolean_selector 2.1.0
- characters 1.2.0
- charcode 1.3.1
- cli_dialog 0.5.0
- cli_util 0.3.5
- clock 1.1.0
- collection 1.15.0
- convert 3.0.1
- crypto 3.0.1
- csv 5.0.1
- dart_console 1.0.0
- event_bus 2.0.0
- fake_async 1.2.0
- ffi 1.1.2
- file 6.1.2
- flutter 0.0.0
- flutter_native_splash 2.0.4
- flutter_picker 2.0.3
- flutter_test 0.0.0
- font_awesome_flutter 10.0.0
- get_it 7.2.0
- http 0.13.4
- http_methods 1.1.0
- http_parser 4.0.0
- image 3.1.3
- intl 0.17.0
- jaguar_jwt 3.0.0
- js 0.6.4
- json_annotation 4.4.0
- kafka 0.1.0
- knowgo 1.1.0
- logging 1.0.2
- matcher 0.12.11
- material_color_utilities 0.1.3
- meta 1.7.0
- mqtt_client 9.6.5
- msix 3.4.0
- nested 1.0.0
- package_config 2.0.2
- path 1.8.0
- path_provider 2.0.9
- path_provider_android 2.0.12
- path_provider_ios 2.0.8
- path_provider_linux 2.1.5
- path_provider_macos 2.0.5
- path_provider_platform_interface 2.0.3
- path_provider_windows 2.0.5
- path_to_regexp 0.4.0
- petitparser 4.4.0
- platform 3.1.0
- plugin_platform_interface 2.1.2
- pointycastle 3.5.2
- pool 1.5.0
- process 4.2.4
- prometheus_client 1.0.0
- prometheus_client_shelf 1.0.0
- provider 6.0.2
- pub_semver 2.1.1
- quiver 3.0.1+1
- random_string 2.3.1
- shelf 1.2.0
- shelf_router 1.1.2
- shelf_web_socket 1.0.1
- sky_engine 0.0.99
- source_span 1.8.1
- stack_trace 1.10.0
- stream_channel 2.1.0
- string_scanner 1.1.0
- term_glyph 1.2.0
- test_api 0.4.8
- typed_data 1.3.0
- universal_io 2.0.4
- universal_platform 1.0.0+1
- uuid 3.0.6
- vector_math 2.1.1
- vin_decoder 0.2.1-nullsafety
- web_socket_channel 2.1.0
- win32 2.4.2
- xdg_directories 0.2.0+1
- xml 5.3.1
- yaml 3.1.0
- flutter_native_splash ^2.0.4 development
- flutter_test --- !ruby/hash:ActiveSupport::HashWithIndifferentAccess sdk: flutter development
- msix ^3.4.0 development
- args ^2.3.0
- auto_size_text ^3.0.0
- csv ^5.0.0
- flutter --- !ruby/hash:ActiveSupport::HashWithIndifferentAccess sdk: flutter
- flutter_picker ^2.0.0
- font_awesome_flutter ^10.0.0
- get_it ^7.2.0
- http ^0.13.3
- intl ^0.17.0
- jaguar_jwt ^3.0.0
- js ^0.6.3
- kafka --- !ruby/hash:ActiveSupport::HashWithIndifferentAccess git: !ruby/hash:ActiveSupport::HashWithIndifferentAccess url: https://github.com/adaptant-labs/kafka ref: kafka-0.10-nullsafety
- knowgo --- !ruby/hash:ActiveSupport::HashWithIndifferentAccess git: !ruby/hash:ActiveSupport::HashWithIndifferentAccess url: https://github.com/knowgoio/knowgo-client-dart
- mqtt_client ^9.6.5
- path_provider ^2.0.2
- path_to_regexp ^0.4.0
- prometheus_client_shelf ^1.0.0
- provider ^6.0.1
- random_string ^2.1.0
- shelf_router ^1.1.2
- shelf_web_socket ^1.0.1
- universal_platform ^1.0.0+1
- uuid ^3.0.6
- vector_math ^2.0.8
- vin_decoder ^0.2.1-nullsafety
- yaml ^3.1.0
