.devcontainer | ||
assets | ||
electronic | ||
music | ||
robot | ||
scripts | ||
sketch | ||
translator | ||
utils | ||
web | ||
.gitignore | ||
CONTRIBUTING.md | ||
deno.jsonc | ||
gowest.code-workspace | ||
import_map.json | ||
LICENSE-AGPL | ||
LICENSE-CERN | ||
README.md |
🪴 Gowest 🌱
The plant driven vehicle
Project overview
The Gowest project consist of a vehicle driven by plants used as light detector.
Gowest is split under the followings modules for flexibility, dev experience and to improve multiple profiles contributors involvement.
- ⚙️ Config (global project configuration)
- 🔌 Electronic (schemas and constrains)
- 🎶 Music (signal to music)
- 🤖 Robot (interface abstraction "voiture")
- 🪚 Sketch (models and draws for constructing)
- 🗣️ Translator (interface Vegetal Signal)
- 🌐 Web (remote control interface)
▶️ Usage
TBA
---
title: Gowest architecture
---
flowchart TB
subgraph plants [Plants]
end
subgraph vs [Vegetal Signals]
end
subgraph rp [Raspberry]
direction TB
translator[Translator]
ai[AI model]
robot[Robot API]
server[Gowest API]
client[Gowest UI]
translator -- Parsed datas --> ai
ai -- Directions --> robot
server <-- API --> robot
server <-- API --> ai
server <-- API --> translator
client <-- HTTP --> server
end
subgraph motorization [Motorization pack]
direction TB
drivers[Motors drivers]
motors[Motors]
drivers -- Power --> motors
end
subgraph battery [Battery pack]
direction TB
battery_ctrl[Controller]
battery_bry[Batteries]
battery_ctrl -- Power --> battery_bry
battery_bry -- State --> battery_ctrl
end
battery -- Power --> vs
battery -- Power --> rp
battery -- Power --> motorization
plants -- Signals --> vs
vs -- Serial datas --> rp
rp -- Commands --> vs
rp -- Commands --> motorization
💭 Philosophy
This project is split under autonomous modules as a monorepo to:
- Provide an unique minimalist toolchain.
- Share dependencies, interfaces, assets, ... seamlessly.
- Unify and simplify base of knowledge.
- Distribute a coherent and complete releases.
We provide and work on Free/Libre and Open Source Softwares and try to use mostly well known standard (especially Web Standards) for security, resilience, portability and compatibility reasons.
For the same reasons and for readability and as common format we prefers plain text in most of the case.
To apply previous principles and use an ergonomic and minimalist toolchain most of the project use:
- json for datas and config files as it is a widely common config file syntax.
- markdown for text documents (documentations, wiki, ...) for his simplicity, flexibility and his widely usage.
- 🦕 deno as runtime and main toolchain utils for his use of web standard, all in one tool, single portable executable format.
- typescript for main code language for this support over all used platforms (embedded, server, web, ...) and the stability and security of a well typed interface.
📘 Documentation
- All public code is documented with JsDoc and accessible through doc/api.
- Hardware documentation and references is accessible through doc/sketch or doc/electronic.
- Usage, setup and additional information is disponible in the 📖 wiki.
🤝 Contributing
Any kind of contribution is welcomed. Please read contributing guidelines before and respect contributor covenant.
For local development:
Required dependencies:
Before first commit or after editing ./scripts/*
,
./deno.jsonc
:
- Run
deno task hooks:install
.
Using VSCode:
- Pre-configured workspace available in
gowest.code-workspace
. - Or without local tooling install use
.devcontainer
.