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
A deployer and package manager for OceanBase open-source software.

OceanBase Deploy OceanBase Deploy (简称 OBD)是 OceanBase 开源软件的安装部署工具。OBD 同时也是包管理器,可以用来管理 OceanBase 所有的开源软件。本文介绍如何安装 OBD、使用 OBD 和 OBD 的命令。 安装 OBD 您可以使用以下方

OceanBase 59 Dec 27, 2022
Buffer Overflows

BOF Buffer Overflows 1. BOF tips Practice using mona.py Download vulnerable exe from Exploit DB.

Vinh Nguyễn 27 Dec 08, 2022
Oppia is an online learning tool that enables anyone to easily create and share interactive activities

Oppia is an online learning tool that enables anyone to easily create and share interactive activities (called 'explorations'). These activities simulate a one-on-one conversation with a tutor, makin

Oppia 4.7k Dec 29, 2022
A simple BrainF**k compiler written in Python

bf-comp A simple BrainF**k compiler written in Python. What else were you looking for?

1 Jan 09, 2022
A function decorator for enforcing function signatures

A function decorator for enforcing function signatures

Emmanuel I. Obi 0 Dec 08, 2021
51AC8 is a stack based golfing / esolang that I am trying to make.

51AC8 is a stack based golfing / esolang that I am trying to make.

7 May 22, 2022
The most widely used Python to C compiler

Welcome to Cython! Cython is a language that makes writing C extensions for Python as easy as Python itself. Cython is based on Pyrex, but supports mo

7.6k Jan 03, 2023
A Python application that simulates the rolling of a dice, randomly picking one of the 6 faces and then displaying it.

dice-roller-app This is an application developed in Python that shuffles between the 6 faces of a dice, using buttons to shuffle and close the applica

Paddy Costelloe 0 Jul 20, 2021
A complex language with high level programming and moderate syntax.

zsq a complex language with high level programming and moderate syntax.

an aspirin 6 Jun 25, 2022
Today I Commit (1일 1커밋) 챌린지 알림 봇

Today I Commit Challenge 1일1커밋 챌린지를 위한 알림 봇 config.py github_token = "github private access key" slack_token = "slack authorization token" channel = "

sunho 4 Nov 08, 2021
IPython: Productive Interactive Computing

IPython: Productive Interactive Computing Overview Welcome to IPython. Our full documentation is available on ipython.readthedocs.io and contains info

IPython 15.6k Dec 31, 2022
World Happiness Report is a publication of the Sustainable Development Solutions Network

World-Happiness-Report We are going to visualise what are the factors and which

Shubh Almal 1 Jan 03, 2023
Arabic to Roman Converter in Python

Arabic-to-Roman-Converter Made together with https://github.com/goltaraya . Arabic to Roman Converter in Python. -Instructions: 1 - Make sure you have

Pedro Lucas Tomazeti Fernandes 6 Oct 28, 2021
Demo code for "Logs in distributed systems" webinar

Hexlet Logs Demo Пререквизиты docker-compose python3 Учетка в DataDog Базовое понимание, что такое логи (можно почитать гайд

Anton Markelov 1 Dec 01, 2021
The bidirectional mapping library for Python.

bidict The bidirectional mapping library for Python. Status bidict: has been used for many years by several teams at Google, Venmo, CERN, Bank of Amer

Joshua Bronson 1.2k Dec 31, 2022
OpenTracing API for Python

OpenTracing API for Python This library is a Python platform API for OpenTracing. Required Reading In order to understand the Python platform API, one

OpenTracing API 767 Dec 16, 2022
Taichi is a parallel programming language for high-performance numerical computations.

Taichi is a parallel programming language for high-performance numerical computations.

Taichi Developers 22k Jan 04, 2023
Ontario-Covid-Screening - An automated Covid-19 School Screening Tool for Ontario

Ontario-Covid19-Screening An automated Covid-19 School Screening Tool for Ontari

Rayan K 0 Feb 20, 2022
Python bindings for the Plex API.

Python-PlexAPI Overview Unofficial Python bindings for the Plex API. Our goal is to match all capabilities of the official Plex Web Client. A few of t

Michael Shepanski 931 Jan 07, 2023
This is a practice on Airflow, which is building virtual env, installing Airflow and constructing data pipeline (DAGs)

airflow-test This is a practice on Airflow, which is Builing virtualbox env and setting Airflow on that env Installing Airflow using python virtual en

Jaeyoung 1 Nov 01, 2021