OmnAIView is an experimental GUI for the measurement-devices of the research-collaboration AW4null. It's purpose is the display and the handling of data, generated by Auto-Intern OmnAIScopes.
The plan of AW4null is to enhance car-diagnostics with AI-powered diagnostic-services.
Diagnostic-services will be reachable through differen REST-APIs and will be specialized on a lot of different purposes.
Physical-measurements of automotive-sensors will be taken, displayed in OmnAIView and send to an API at the users will.
OmnAIView shall receive data from multiple generators, such as OmnAIScopes and OmnAIB-, OmnAIE-Clamp and OmnAIPressure.
The data will come in as a binary stream of 24-bit integers.
Since the incoming data represents measurement-samples in the time-domain, the individual channels will be synchronized.
This is done in a currently non-public-repo of Auto-Intern, but will be separated into a .dll
or .so
respectively.
The acquired data can be viewed on the OmnAIView GUI and may then be saved to the hard-drive in .csv
or binary format.
Anyhow, another possibility is to send the measurement to a REST-API provided by the THGA.
In its first phase, only one API will be used, documented by this Repository. The API will be able to receive training-data for AI-training purposes.
Phase two will implement the interface to the data-producer as a vector
of a multitude of objects, that encapsulate each an individual .dll
or .so
.
The first two shared libs that shall be used will be a software-function-generator as well as an abstraction of the OmnAIScope, following the Unified-abstract-Dataproducer-Interface which is displayed in the UaDI-Demonstrator-Repo.
In phase three, OmnAIView will be extended to use a multitude of service-APIs that can be loaded at runtime.
Building is currently only possible with specially provided access-rights, but will be made available to the wider public as soon as the migration to a closed-source shared-library for device handling has been done as described in Issue #36. In order to ask for access-rights, contact @bjoekeldude.
Anyhow, building IS available in CI. A push into any branch will generate a new binary, that can be downloaded via the Action-Tab.
Building requires cmake --version > 3.20
as well as a c++20
-Compiler.
In order to start the compilation, following packages need to be ensured:
- build-essential
- autoconf
- gtk-doc-tools
- libtool
- intltool
- curl
- zip
- unzip
- tar
- libudev-dev
- libxinerama-dev
- libxcursor-dev
- xorg-dev
- libglu1-mesa-dev
- pkg-config
Move into OmnAIView-directory, update and initialize all submodules:
git submodule update --init --recursive
create build-directory and run cmake from there:
mkdir build
cd build
cmake ..
Start the compilation by using the CMake-command:
cmake --build .
In order to run OmnAIView it needs admin-rights right now:
sudo ./OmniView
In order to build on Windows, you have to make sure to install the MS Build Tools for Visual Studio
.
Due to the layout of the Microsoft Download Page this package can be hard to find.
Use this Link to Download https://aka.ms/vs/17/release/vs_BuildTools.exe.
If it doesn't work, please make an Issue.
In order to build the project on Windows, make sure, that you installed git
for Windows, and set up an additional .ssh
-Configuration for github in your CMD.
The Windows Shell doesn't use the WSL SSH Configuration!
Make sure to select the following options in the Visual Studio Installer:
- Desktopdevelopment with C++
from the optional components select:
- MSVC v143 - VS 2022 C++ x64/x86 Buildtools
- Windows 11-SDK (
greater than
10.0.223??.?) - C++-CMake-Tools for Windows
- Corefunctions for Testtools - Buildtools
- C++-/CLI-Support for v143-Buildtools
- C++-Moduls for v143-Buildtools
This installs approximately 9 GB of data.
In order to utilize the MSVC
-Compiler on the Windows Command-Line, you'll have to set a whole bunch of environment variables.
Thus Build-Tools provides an easy way to load all of them at one.
Instead of runnign cmd
you can just run the Developer Command Promt
from your Windows Startmenu.
This starts a Session with all env-variables set accordingly.
Run the following commands in the Developer Command Prompt:
git clone --recurse-submodules [email protected]:skunkforce/OmnAIView.git
cd OmnAIView
cmake -S . -B ./build -DVCPKG_TARGET_TRIPLET="x64-windows-static"
cmake --build ./build --config Release
The compiled executable will be called .\build\Release\OmniView.exe
.
The code should follow the c++ standard and contains the following structure :
The following Interfaces are used :
popups.hpp handler.hpp regions.hpp Style.hpp
The functions are declared in the .hpp files and implemented in the .cpp files
Every function that does not depend on another function should be implemented in an individual .cpp file.
The functions declaration, implementation and usage can be found in the documentation. (right now there is no documentation)
Namespaces should be used to prevent potential conflicts that may arise when functions are declared multiple times in an open-source project. However, they should only be used when necessary because the code should not be overloaded with unnecessary namespaces.
The different PlotRegions have namespaces for readability: SideBarRegion, DevicesRegion, ToolbarRegion, and PlotRegion.
The design and usage of the Regions can be found in the skunkforce/OmnAIView-Product-Vision Document.
To add new code to the project, follow these steps:
- Create an issue describing the bug you want to fix or the feature you want to add.
- Create a branch with the same name as the issue.
- Pull the code to your local device.
- Switch to your branch and start working on the issue.
- If the master branch has been updated since you started working, perform a rebase to incorporate the latest changes.
- Before committing, run the Clang-Formatter over the files you modified.
- For significant changes, create a commit with a clear description of what has been modified.
- After testing the code on your local device and ensuring proper formatting, push the changes to your branch.
- If the code passes the continuous integration (CI) tests, create a pull request for the master branch.
- Your code will undergo a review process.
To use the Clang-Formatter, follow these steps:
- Navigate to your /OmnAIView folder.
- Check if you have Clang-Formatter installed on your system.
- If Clang-Formatter is installed, use the following command in the /OmnAIView directory to format the desired file:
clang-format -style=file -i directory/filetochange
Note: You don't need to modify the -style=file
option.
- To review the changes made by Clang-Formatter, use the command:
git diff
- Ensure that the Clang-Formatter configuration file is named:
.clang-format
.
Versioning will only be used for releases in the master branch. Version numbers for software releases follow a standard format, typically consisting of three numbers separated by periods: Major.Minor.Patch. The first number represents the major version, indicating significant changes or updates that might not be backward compatible. The second number denotes the minor version, usually signaling smaller enhancements or new features that are backward compatible. The third number, the patch version, signifies bug fixes or minor updates without introducing new features. We are using this standard for versioning the different releases. Releases can be found on the right side of the repository. To keep a clean versioning, those versions will only be set by the current product manager @AKMaily.
To add a version to the master the following steps need to be followed in an empty directory :
git clone [email protected]:skunkforce/OmnAIView.git
cd OmnAIView
git tag vNUMBER
git push origin vNUMBER
In order to learn more about the project as such, you may visit www.autowerkstatt40.org or have a look at our online-learning resources
This work has been supported by the BMWK- project number 68GX21005E