The Flight Data Plotter is a C++ program utilizing ImGui and ImPlot libraries to provide a user-friendly interface for visualizing flight data. This tool allows users to plot various parameters and analyze flight information in a graphical manner. The program is built using the Conan package manager and CMake for easy dependency management and compilation.
- Interactive Interface: Powered by ImGui, the program offers a sleek and interactive user interface.
- Real-time Plotting: ImPlot enables real-time plotting of flight data, ensuring up-to-date visualizations.
- Customizable Plots: Users can customize plots by selecting parameters, adjusting colors, and configuring plot settings.
- Data Export: Easily export flight data files in common formats for seamless analysis.
- C++ compiler with C++11 support
- Conan package manager
- CMake
- Clone the repository.
- Install dependencies using Conan.
conan install . --build=missingfor a debug version you can add --settings=build_type=Debug
- Configure and build the project with CMake.
cmake --preset conan-release
cmake --build --preset conan-releasefor a debug version you can use conan-debug
- Run the executable.
./build/Release/flight_data_plotterFeel free to contribute by submitting bug reports, feature requests, or pull requests. Your feedback and contributions are highly appreciated.
This Flight Data Plotter is licensed under the MIT License - see the LICENSE file for details.
classDiagram
class UIWidget {
+ print()
}
class App {
- window_list
- window
- context
+ setup()
+ process_events()
+ update()
+ close()
}
class GlobalWindow {
- widget_list
+ add_widget()
+ display()
}
class SensorData {
+ time
+ acceleration
+ rotation
+ magnetic
}
class NetworkReceiver {
+ display()
- update_data()
- hostname
- ssid
- wireless_enabled
- networkmanager_proxy
- data_client
}
class NetworkManagerProxy {
+ wireless_enabled()
+ hostname()
+ network_name()
- get_wireless_device_path()
- set_wireless_device()
- networkmanager_proxy
- wireless_device_proxy
- settings_proxy
}
class NetworkManagerDBUSProxy {
+ read_parameter()
+ read_type()
- dbus_proxy
}
class AsyncServer {
+ do_receive()
+ handle_read()
- socket
- data
}
class DataClient {
- io_context
- server
}
class Graph {
- recording
- data_queue
+ print()
+ start_recording()
+ stop_recording()
+ clear_graph()
}
class DataStorage {
- acceleration: vector
- rotation: vector
- magnetic: vector
+ add_point()
+ export()
}
class Visualisation {
- model
- background
- orientation
}
class ControlPanel {
+ print()
+ send_message()
}
class Controller {
+ send_message()
}
class MadgFilter {
+ currentData
+ previousData
+ filter()
}
App --> GlobalWindow
GlobalWindow --> Visualisation
GlobalWindow --> NetworkReceiver
GlobalWindow --> Graph
GlobalWindow --> ControlPanel
NetworkReceiver --* NetworkManagerProxy
NetworkReceiver --* DataClient
DataClient --* AsyncServer
NetworkManagerProxy --* NetworkManagerDBUSProxy
UIWidget --|> NetworkReceiver
UIWidget --|> ControlPanel
UIWidget --|> Graph
DataStorage "1" --* "0..*" SensorData
Graph --> DataStorage
NetworkReceiver --> DataStorage
DataStorage --> MadgFilter
ControlPanel --> Controller