Code repository for the Pytheas submersible observation platform

Related tags

MiscellaneousPytheas
Overview

Pytheas

Main repository for the Pytheas submersible probe system.

List of Acronyms/Terms

  • USP - Underwater Sensor Platform - The primary platform in the Pytheas system; a water-proofed and pressure-rated sensor pod designed to be deployed in deep water.
  • SCU - Surface Control Unit - Surface-based platform for communicating and controlling the USP.
  • PCS - Pytheas Control System - Primary operating software for the USP, provides live manual interface as well as autonomous operation.
  • ACAP - Autonomous Capture - Shorthand for csv capture files generated in autonomous mode.
  • Passive - As in, passive captures. Shorthand for the standard csv capture file generated for each session recording any instance the sensors are manually polled.

Installation Instructions

Work in Progress - I plan to write a script(s?) to automate the installation process soon. In the meantime, consider these bare-bones instructions for the USP:

  1. Start with a Raspberry Pi imaged with PiOS and wired according to the block diagram in this repository.
  2. In raspi-config make sure that the I2C and camera module interfaces are enabled. I also STRONGLY recommend resetting GPU memory allocation to 256MB.
  3. Configure eth0 for a static IP address (recommend 192.168.2.2/24)
  4. Ensure all of the dependencies (listed below) are installed.
  5. Clone this repository to a convenient location (recommended: ~/pytheas)
  6. Review the "quick values" in pcs.py and make sure they are configured to your liking. It's strongly recommended that auxPath be set to wherever you're mounting the SCU's NFS share, because otherwise it kinda defeats the purpose.
  7. Add the SCU to your /etc/hosts file under a convenient name (recommended: pytheas-scu or just scu)

Likewise, consider this the bare-bones instructions for the SCU:

  1. Start with a machine imaged with a desktop Linux distribution (tested on Linux Mint 20.1 but will probably work on most major distributions)
  2. Configure an ethernet network interface with a static IP address (recommend 192.168.2.1/24)
  3. Ensure all of the dependencies (listed below) are installed.
  4. Configure /etc/exports to host a directory the USP can use to copy backups to (recommended: /usp-backups)
  5. Clone this repository to a convenient location (recommended: ~/pytheas)
  6. Review the contents of .scu-commands and correct any/all path references to suit your personal set up.
  7. Either copy/paste the contents of .scu-commands in to your .bashrc file or just have your .bashrc directly reference .scu-commands
  8. Add the USP to your /etc/hosts file under a convenient name (recommended: pytheas-usp or just usp)

Dependencies for USP

  • Python 3
  • PrettyTable python library
  • python-smbus library (needed for ms5837-python)
  • Screen
  • OpenSSH Server

Dependencies for SCU

  • VLC
  • nfs-kernel-server

SCU COMMANDS

These commands can be issued from the SCU terminal window

  • start-pcs - Initializes the PCS software on the USP
  • start-stream - Brings up the live video stream in a VLC window
  • dl-usp - Bulk-downloads ALL USP data (including session data and pcs.log) in to the SCU
  • purge-usp - Bulk-deletes ALL USP data (including session data and pcs.log) from the SCU

CSV Fields

  • T - Time Index - Number of ticks since the capture session began. Can be used as a key value if importing in to DBs. Note that the T field is only present on autonomous data captures.
  • LTime - Local Time - The time of day that the record was captured. Based off of whatever time zone is configured in the USP.
  • Pressure - The water pressure at the time of capture. Measured in millibars.
  • Depth - The depth of the USP at time of capture, computed from the pressure reading. Measured in meters.
  • ETemp - External Temperature - The water temperature at time of capture, measured in Celcius.
  • ITemp - Internal Temperature - Internal USP temperature as reported by the CPU. Measured in Calcius.
  • Notes - Free-form notes written by the operator. The notes field is only present on passive data captures.
Owner
UltraChip
UltraChip
MySQL Connectivity based project. Contains various functions of a Store-Management-System

An Intermediate Level Python - MySQL Connectivity based project. Contains various functions of a Store-Management-System.

Yash Wadhvani 2 Nov 21, 2022
Simple script to match riders with drivers.

theBestPooler Simple script to match riders with drivers. It's a greedy, unoptimised search, so no guarantees that it works. It just seems to work (ve

Devansh 1 Nov 22, 2021
This is a small compiler to demonstrate how compilers work.

This is a small compiler to demonstrate how compilers work. It compiles our own dialect to C, while being written in Python.

Md. Tonoy Akando 2 Jul 19, 2022
Library management using python & MySQL

Library management using python & MySQL Dev/Editor: Pavan Ananth Sharma & MK Akash Introduction: This is an intermediate project which is a user-frie

Pavan Ananth Sharma 2 Jul 05, 2022
An upgraded version of extractJS

extractJS_2.0 An enhanced version of extractJS with even more functionality Features Discover JavaScript files directly from the webpage Customizable

Ali 4 Dec 21, 2022
Strawberry Benchmark With Python

Strawberry benchmarks these benchmarks have been made to compare the performance of dataloaders and joined database queries. How to use You can run th

Doctor 4 Feb 23, 2022
A student information management system in Python

Student-information-management-system 本项目是一个学生信息管理系统,这个项目是用Python语言实现的,也实现了图形化界面的显示,同时也实现了管理员端,学生端两个登陆入口,同时底层使用的是Redis做的数据持久化。 This project is a stude

liuyunfei 7 Nov 15, 2022
Let's make a lot of random function from Scracth...

Pseudo-Random On a whim I asked myself the question about how randomness is integrated into an algorithm? So I started the adventure by trying to code

Yacine 2 Jan 19, 2022
Gives criticality score for an open source project

Open Source Project Criticality Score (Beta) This project is maintained by members of the Securing Critical Projects WG. Goals Generate a criticality

Open Source Security Foundation (OpenSSF) 1.1k Dec 23, 2022
Time python - Códigos para auxiliar e mostrar formas de como fazer um relógio e manipular o seu tempo

Time_python Códigos para auxiliar e mostrar formas de como fazer um relógio e manipular o seu tempo. Bibliotecas Nestes foram usadas bibliotecas nativ

Eduardo Henrique 1 Jan 03, 2022
A sage package for working with circular genomes represented by signed or unsigned permutations

Circular genome tools (cgt) A sage package for working with circular genomes represented by signed or unsigned permutations. It includes tools for con

Joshua Stevenson 1 Mar 10, 2022
An alternative site to emplea.do due to inconsistent service of the app.

feline a agile and fast alternative to emplea.do License: MIT Settings Moved to settings. Basic Commands Setting Up Your Users To create a normal user

Codetiger 8 Nov 10, 2021
python scripts - mostly automation scripts

python python scripts - mostly automation scripts You can set your environment in various ways bash #!/bin/bash python - locally on remote host #!/bi

Enyi 1 Jan 05, 2022
Hy - A dialect of Lisp that's embedded in Python

Hy Lisp and Python should love each other. Let's make it happen. Hy is a Lisp dialect that's embedded in Python. Since Hy transforms its Lisp code int

Hy Society 4.4k Jan 02, 2023
Demo of using DataLoader to prevent out of memory

Demo of using DataLoader to prevent out of memory

3 Jun 25, 2022
Static bytecode simulator

SEA Static bytecode simulator for creating dependency/dependant based experimental bytecode format for CPython. Example a = random() if a = 5.0:

Batuhan Taskaya 23 Jun 10, 2022
Clackety Keyboards Powered by Python

KMK: Clackety Keyboards Powered by Python KMK is a feature-rich and beginner-friendly firmware for computer keyboards written and configured in Circui

KMK Firmware 780 Jan 03, 2023
A tool that automatically creates fuzzing harnesses based on a library

AutoHarness is a tool that automatically generates fuzzing harnesses for you. This idea stems from a concurrent problem in fuzzing codebases today: large codebases have thousands of functions and pie

261 Jan 04, 2023
Zues Auto Claimer Leaked By bazooka#0001

Zues Auto Claimer Leaked By bazooka#0001 put proxies in prox.txt put ssid in sid.txt put all users you want to target in user.txt for the login just t

1 Jan 15, 2022
Absolute solvation free energy calculations with OpenFF and OpenMM

ABsolute SOLVantion Free Energy Calculations The absolv framework aims to offer a simple API for computing the change in free energy when transferring

7 Dec 07, 2022