Skip to content

5herlocked/c-underwatervlc

Repository files navigation

C-UnderwaterVLC

This is an extension and in effect a rewrite of the underwatervlc repository hosted by Dr. Ashwin Ashok. Primary reasoning for writing this is to maximise performance in a non realtime operating system much like Jetpack.

Guide to the code

The code is split into individual folders to make code managing simpler and compiling more modular without using overly complex CMake projects. Most of this library is built with standard C++17 code except for certain situations where unistd.h is required. It will be explicitly mentioned in the respective README files.

  • Analysis Tool - Ingests video files in the form of *.avi and prompts the user for an ROI then calculates the scalar mean of RGB values over that region. If passed a full dataset, the tool also uses the ground truth videos to deduce 1s and 0s in the videos. For more information, refer to this

  • Arduino Receiver - An Arduino sketch written as a CMake project. This is only a program that reads an analogue pin and sends data back to a host system over the serial port. For more information, refer to this

  • BER Tool - Ingests a pair of CSV files that were generated by the Analysis Tool, compares them with each other to find the bit error rate of the transmitter-receiver dataset. It returns the Bit Error Rate in the form of a decimal representing the number of bits that were lost during the transmission. For more information, refer to this

  • Julia - Files I personally use for testing hypothesis, for doing interactive testing and data analysis like getting the RGB Pixel Intensity of any given pixel. Each individual file is written as a Pluto.jl notebook and is written in the Julia Language. For more information, open individual files in Pluto.jl (each file is self-explanatory)

  • Receiver - Behaves as a serial port reader. This is the host counterpart to the Arduino Receiver sketch. It reads the serial port at a Baud Rate of 115200 bps. For more information, refer to this

  • SVO Export - Ingests an SVO file and exports the video to a generic video format (avi). It requires the OpenCV library and the ZED SDK on the host system to open the SVO file and export into either video or a sequence of pngs and depth images. For more information, refer to this

  • Transmitter - Takes control of a GPIO pin using the linux kernel character GPIO library. It's built for Edge devices with the libgpiod library installed. Currently, it is entirely hardware bound (up to 25KHz) but can run into speed and inconsistency issues when memory utilization exceeds RAM capacity. For more information, refer to this

  • Zed Record - Records videos from an attached ZED camera with commandline parameters of resolution, framerate, name. For more information, refer to this

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published