LEADS only supports two drive-wheel configurations: single rear wheel (SRW) mode and dual rear wheel (DRW) mode.
This project aims to implement the following features:
- A basic instrumentation system
- A basic communication system
- A basic control system
- A data recording system with the following components
- A speed recording system
- A G force recording system
- A GPS recording system
- A battery voltage recording system
- A control system with the following components
- DTCS (Dynamic Traction Control System)
- ABS (Anti-lock Braking System)
- EBI (Emergency Braking Intervention)
- ATBS (Automatic Trail Braking System)
The codes are never designed for average high school students to understand. You may find it hard to read the codes if you do not satisfy the following requirements of skills and knowledge.
- Advanced Python knowledge (you should be familiar with everything and even programming philosophy in Python)
- Solid knowledge of Physics (you should understand how a car moves in reality)
- Basic embedded development experience (Raspberry Pi, serial communication, PWM)
- Rich experience in Web development (React, NextJS, FastAPI, TCP/IP, sockets)
- Basic machine learning knowledge (linear regression, polynomial regression)
Note that LEADS requires Python >= 3.11.
pip install pysimplegui keyboard RPi.GPIO pyserial leadsnumpy will be automatically installed with leads.
pysimplegui, keyboard, RPi.GPIO, and pyserial are optional.
If you need only the skeleton, run the following.
pip install leadspython -m leads_vec infopython -m leads_vec runRun the following to get a list of all the supported arguments.
python -m leads_vec -hpython -m leads_vec -c path/to/the/config/file.json runIf not specified, all configurations will be default values.
To learn about the configuration file, read Configurations.
python -m leads_vec -r config runThis will generate a default "config.json" file under the current directory.
python -m leads_vec -r systemd runThis will register a system service to start the program.
To enable auto-start at boot, run the following.
systemctl daemon-reload
systemctl enable leads_vecpython -m leads_vec_rcGo to the online dashboard https://leads-vec-rc.projectneura.org.
python -m leads_vec_rc -r systemdThis will register a system service to start the program.
To enable auto-start at boot, run the following.
systemctl daemon-reload
systemctl enable leads_vec_rcThe configuration is a json file that has the following columns. You can have an empty configuration file like the following as all the columns are optional.
{}Note that a purely empty file could cause error.
| Type | Usage | Used By | Default | |
|---|---|---|---|---|
srw_mode |
bool |
True: single rear wheel; False: dual rear wheel |
Main, Remote | True |
width |
int |
Window width | Main | 720 |
height |
int |
Window height | Main | 480 |
fullscreen |
bool |
True: auto maximize; False: window mode |
Main | False |
no_title_bar |
bool |
True: no title bar; False: default title bar |
Main | False |
refresh_rate |
int |
GUI frame per second | Main | 30 |
font_size_small |
int |
Small font size | Main | 8 |
font_size_medium |
int |
Medium font size | Main | 16 |
font_size_large |
int |
Large font size | Main | 32 |
font_size_x_large |
int |
Extra large font size | Main | 48 |
scaling_factor |
float |
A factor used to scale every component | Main | 1 |
comm_addr |
str |
Communication server address | Remote | "127.0.0.1" |
comm_port |
int |
The port on which the communication system runs on | Main, Remote | 16900 |
data_dir |
str |
The directory for the data recording system | Remote | "./data" |
enable_data_persistence |
bool |
True: enable data persistence; False: disable data persistence |
Remote | True |
Besides the docs on GitHub, we also host our docs on Read the Docs [TBC].
See reports.
Our team management completely relies on GitHub. Tasks are published and assigned as issues. You will be notified if you are assigned to certain tasks. However, you may also join other discussions for which you are not responsible.
There are a few labels that classify the issues.
bugreports a bugcode reviewdiscusses a code review or commentdocumentationsuggests a documentation enhancementduplicatemarks that a similar issue has been raisedenhancementproposes a new feature or requesthelp wantedmeans that extra attention is needed to this issueinvalidmarks that the issue is in a valid formatquestionrequests further informationreportstarts a periodic report discussiontodocreates a new taskwontfixmarks that the issue is ignored
Label your issue with at least one of the labels above before you submit.
You can have a look at the whole schedule of each project in a timeline using the projects feature.
See CONTRIBUTING.md.


