Welcome to KevinbotLib
KevinbotLib is a modular robot control system integrating a high-speed server-client communication system, robust logging, gamepad inputs, and more.
Features
The Command Scheduler
- A way to asynchronously run robot tasks
- Commands can be grouped to run sequentially or in parallel if desired
- Commands can be executed at a set interval
The Communication System
- Uses Redis for set/get and pub/sub communication
- Data can be easily sent from robot to client or vice versa
- Data is synchronized between all clients
- Out-of-the-box ready-made sendables for builtin primitive types
- Create custom sendables based on pydantic models
The Vision Pipeline System
- Create vision pipelines based on OpenCV
- Pre-made sendables for video frames
- Pre-made encoders and decoders for the communication system
Robust Logging
- Logging is based on loguru
- Automatic file rotations
- Logs to
stdout
, an inbuilt file server over HTTP, and/or files.
Gamepad Inputs
- Based on SDL2
- Builtin-support for all Game Controllers supported under the SDL2 GameController API
- Joystick data sender and receiver through the communication system
The Control Console
- Operate a KevinbotLib robot through a simple GUI interface
- Supports up to 8 gamepad devices (up to 32 buttons each)
- View live robot telemetry
- View battery voltage (planned)
- Change robot state and OpModes
- Monitor robot system metrics
Development
This project is in the early stage of development. There are many missing functions that will be supported in the future.