Skip to main content

No project description provided

Project description

Formula Data Processing Library

The python windarab loader

Unit Tests Coverage Report

Formula data processing library or fdplib for short is a library for accessing the custom text file format exported by Windarab by Bosch Motorsports

Installation

FDPLib requires tqdm (used as status bar for loading large data files) and Numpy (used to return data in numpy arrays)

To install FDPLib use pip:

python3 -m pip install fdplib

Usage

Common Usage

In order to use the main module of this library, import the fdplib module in your python code

import fdplib

A DarabData object can be created by passing the textfile name to the constructor

import fdplib.darab as darab
data = darab.DarabData("<FILENAME>.txt")

With this object, data can be easily accessed using the following methods. First, to get all of the variables in the dataset do data.list_vars()

The main method that you will use to interact with the data is data.get_var("<VARIABLE_NAME>") This method returns a list of all the datapoints associated with the variable. Likewise data.get_var_np("<VARIABLE_NAME>") returns a numpy array of the data. There is an optional boolean parameter called timeseries for both of the previously mentioned methods. If set to True this instead returns the data and the time values associated with it as a 2D array, much in the way matlab does.

More Advanced Usage

fdplib also has a feature rich class Track which can be used to analyze and breakdown lap data from the vehicle. To access this class do:

import fdplib.track_tools as tt
track = tt.Track("<FILENAME>.txt")

Using this class the following methods are available:

def plot_track_heatmap(self, t_bound: tuple = None, direct_arrow: bool = None,
                           heat_source: np.array = None) -> None:
        """plot a heatmap of speed from gps data in matplotlib"""
def coords_from_gps(self) -> np.array:
    """converts longitude and latitude data to x and y displacements
       coordinates from the first location coordinate"""
def coords_from_acc(self, ret_yaw: bool = False) -> np.array:
    """calculates the vehicles path from acceleration data provided by the IMU.
       If ret_yaw is true also return the corresponding yaw data."""
def plot_coords(self, coords: np.array) -> None:
    """plots x and y displacement coordinates"""
def radius_from_gps_coords(self, coords: np.array) -> np.array:
    """Calculates the radius of the current turn that the vehicle is in from gps data.
       This is done using a 3 points on a circle calculation and iterates through all the data passed"""
def get_lap_bounds(self, lap_num: int) -> np.array:
    """Calculate the indexs in the data corresponding to the (start,end) of
       the requested lap given by lap_num."""
def simulate(self) -> None: # pragma: no cover
    """Simulate lap data using pygame"""

Examples

example nmot data

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fdplib-2.7.tar.gz (10.2 kB view hashes)

Uploaded Source

Built Distribution

fdplib-2.7-py3-none-any.whl (9.2 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page