Source for the main Deep Sea Tactics ROV.
This is a Cargo / PNPM & Nx monorepo.
[!NOTE] To run any of these tasks, do
pnpm run <task>
. Therobot
task must be run as root if µStreamer is not installed.
There are two different task categories:
robot:mock
: mocking version of the robot code.dev:mock
: runs all frontend (land computer) tasks in development mode.build
: builds everything, and is used when the robot is being moved to real production.start
: runs all frontend (land computer) tasks.dev
: runs all frontend (land computer) tasks in watch mode.robot
: runs all non-mocked robot tasks (thus runs on a Raspberry PI)./packages/*
serve as general utilities.
/apps/robot
: robot code (for driving thrusters)./apps/video
: isolated app for running µStreamer, runs on PI./apps/web
: UI (webserver), runs on land laptop.robot
hosts a TRPC server that web
connects to for bi-directional communication. video
runs µStreamer.
Same components as above, but:
robot:mock
communicates with a tRPC on the client that now hosts a simulation with threlte that drives the "thrusters."This assumes the running system is a Raspberry PI. For more information, go to deep-sea-tactics/rpi-setup
source <(curl -s https://raw.githubusercontent.com/deep-sea-tactics/rpi-setup/main/rov.sh)
Instead of using :mock
, use dev
and robot
directly.
Configure .env
to point to the proper RPI IP address.
/apps/debugger
: simple PIGPIO debugging CLIRemove the PNPM global content addressable store if PNPM is causing issues:
rm -rf $(pnpm store path)
TypeScript is a language that can make good UI, but it isn't Rust (I'm not subjecting the high school programming team all to Rust), and it still has reasonable hardware control. It is also incredibly compatible with cloud IDEs (given the web nature).
I could not resist the temptations.
I like saving storage locally.
It's like socket.io but with type-safety embedded, not as an afterthought.
Initially, this repository used Turbo, but it didn't support ARM.
Incredible out-of-the-box support for Raspberry PIs.
https://github.com/dimforge/rapier.js/pull/264 https://github.com/kelvinsjk/mathlified/pull/7