Giter Site home page Giter Site logo

robertdamerius / groundcontrolstation Goto Github PK

View Code? Open in Web Editor NEW
2.0 1.0 1.0 15.03 MB

A graphical visualization tool for intuitive evaluation of the operational behavior of automated vehicles

License: MIT License

Makefile 0.62% GLSL 2.61% C++ 96.77%

groundcontrolstation's Introduction

Ground Control Station (GCS)

During software development and testing of automated vehicles, it is always helpful to have a graphical interface that allows intuitive observation of the mission status at a glance. The software of autonomous vehicles is usually divided into guidance, navigation and control systems. The basic data exchange can be based on the Inter-Module Protocol (IMP). In order to display such IMP messages graphically, the GCS tool was developed. The directory structure of this repository is as follows.

File / Directory Description
bin contains the release application including documentation and files required at runtime
doc contains the documentation that can be created with SimpleDoc
source whole source code of the GCS
LICENSE license information
Makefile Makefile used to build the GCS
README.md this file

Windows
On Windows you can either download the latest binary file from Google Drive or build the software from the source code yourself using MSYS2/MinGW64.

Linux
On Linux you can build the software yourself.

Other OS
On other operating systems, you must build the software yourself. If you use a GNU compiler and the GNU make tool, you may be able to use the same Makefile with a few adjustments.

Revision History

Date Version Description
2020-09-21 1.0 Initial release
2020-11-11 1.1 Added text-to-speech output for IMP Log Messages
2021-01-13 1.2 Added configuration file for inserting vehicles to the empty database when the GCS starts
2021-03-01 1.3 Added highlighting of navigation and guidance state data in vehicle data panel
2021-07-01 1.4 Updated IMP protocol to latest version and limited numeric string lengths
2022-01-27 1.5 Fixed several bugs concerning rendering and human interface controls
2022-03-15 1.6 Additional bug fixes
2022-09-02 1.7 Updated network protocol (IMP). Logs can now be cleared.
2022-09-28 1.8 Use high resolution clock for time measurements and timestamp generation
2023-06-10 1.9 Added near and far clipping plane values to style configuration file
2024-02-27 2.0 Fixed bug where app could crash when adding vehicles while the vehicle list or log view is visible
2024-03-30 2.1 Configuration is stored via JSON files. Styles for vehicles can be saved.

How To Use

The GCS can receive UDP messages as Unicast and Multicast. Before the application is started, the network configuration file must be adjusted so that the GCS opens the appropriate UDP ports to receive IMP messages. To make sure that the association of messages with vehicles is clear, the GCS uses the Info Request Message of the Inter-Module Protocol. Participants receiving an Info Request Message should reply with an Info Response Message. The GCS then builds up a vehicle database internally. For more information, see the web-based documentation that comes with the software.

How To Build

At the moment I have less time to deal with build tools like CMake or Automake. Maybe somebody has time and wants to help me. At the moment you need the GNU make tool and a GNU compiler that supports the C++17 standard. If your header files for required libraries are in a different location than mine, you can change this in /source/precompiled/PreCompiled.hpp. If the corresponding libraries to be linked against are named differently, you can change this in the Makefile on line 30 (Windows) or 31 (Linux).

External libraries required

Some third-party source code files are already present in the source directory. These include NanoVG, NanoGUI, LodePNG, Earcut and JSON. All other required external libraries are shown in the following table.

Library Windows (MSYS2/MinGW64) Linux (Ubuntu) Comment
OpenGL already comes with MSYS2/MinGW64 sudo apt install build-essential libgl1-mesa-dev OpenGL
GLFW3 pacman -S mingw-w64-x86_64-glfw sudo apt install libglfw3-dev used to create window and OpenGL-context
GLEW build from source sudo apt install libglew-dev OpenGL extension wrangler library
GLM pacman -S mingw-w64-x86_64-glm sudo apt install libglm-dev OpenGL mathematics
Freetype build from source sudo apt install libfreetype6-dev required by NanoVG, NanoGUI to use fonts
Eigen3 pacman -S mingw-w64-x86_64-eigen3 sudo apt install libeigen3-dev required by NanoGUI

Build procedure

The Makefile is designed to work with the default GNU compiler (GCC) under Linux and the MinGW toolchain under Windows.

Prepare
You can use the following command to clean up before a rebuilding:

make clean

The source directory contains a directory called /source/precompiled. All headers that appear within this directory are automatically included during the compilation process. In this way external headers only need to be included once. To speed up compilation, all headers within that directory can be precompiled with the command:

make pch

This command creates precompiled headers in the same source directory (with the file extension *.gch). Note that these precompiled headers are also deleted when make clean is called. The precompiled headers need to be generated only once. Additionally, a build directory is created that contains all object and dependency files when compiling.

Compile and link
Use the command

make

to compile all sources and link them together to the final software product. The final product is written to the bin directory. If you have made changes to some code files and recompiled them with make, only the sources affected by these changes will be recompiled. Be careful when renaming sources or moving them to other directories, because then the build directory is no longer consistent with the source directory, which can lead to errors. In this case a complete rebuilding is recommended.

groundcontrolstation's People

Contributors

robertdamerius avatar

Stargazers

Martin Evans avatar Shujaat Ali Khan avatar

Watchers

 avatar

Forkers

flythethings

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.