This repo brings together EasyLocomotion, EasyVision, EasyNetwork concepts and ideas into one big cross platform project.
The biggest idea is that you can develop your algorithms and AI pipelines/graphs on whatever platform(even the cloud!) you wish and then be able to reproduce the same behavior on mobile robot platform (e.g. Raspberry Pi, Nano Pi or even ARM microcontrollers).
NOTE: You still need to keep track of the data types that are being passed around from step to step.
In order to register a plugin, you must first import it.
E.g. OpenCV set of algorithms will operate on gocv.Mat
, whilst TF implementation might use appropriate tensors and might need conversions.
These steps/processors operate on gocv.Mat
only and require GoCV to build.
These steps operate on image.Image
only.
This sink will accept either gocv.Mat
, image.Image
or TF/TFLite tensors depending on build tags.
- Metrics
- registrable and optional metrics
- Prometheus
- Logs
- Zero Log as backend
- be able to optimize away the logs (for embedded: build tag
logless
) - arbitrary data framework (store)
- interface implementation
- Helper methods for get/set for common types
- unit tests
- benchmarks
- plugin framework
- interface implementation
- unit tests
- benchmarks
- pipeline framework
- generic implementation
-
[x] image source
-
[x] sink
-
[x] processor
-
[x] fan in
-
[x] fan out
-
[x] frame syncronizer
-
[x] bridge
- unit tests
- benchmarks
- Options marshalling
- save pipeline to json
- load pipeline from json
- pipeline elements referenced by NamedStep interface
- transports
- tcp
- udp
- EasyLocomotion C library
- transforms
- color transform
- mat<->image
- undistort transform
- stereo rectify
- extractors
- features
-
[x] ORB
-
[x] SIFT
-
[ ] calibration corners
- OpenCV DNN
- tensorflow
- tensorflow lite
- algorithms
- monocular odometry
- stereo odometry
- map building
- sinks
- silent OpenCV image consumer
- OpenCV video/image writer
- OpenCV image viewer
- Gio+OpenCV interface
- sources
- OpenCV video/device/image reader
- tools
- read and write video streams
- calibrate mono camera
- calibrate stereo camera
- learn hsv
- pipeline/graph editor/viewer
- standalone pipeline runner
- Locomotion
- Differential drive robot
- Omni wheel robot
- Mechanum wheel robot
- Hexapod
- Quadrupod
- Biped
- FK/IK Solvers
- Native
- gonum
- gorgonia
- Actuators
- PWM motor drivers
- PWM motor drivers with encoder
- Servo motor drivers
- Sensors
- Range sensors
- Backend
- Native port from EasyNetwork
- gorgonia
- TFLite
- FF learning
- RN learning
- Q Learning algorithms
- DQN
- PPO
- Frontends
- Fyne
- GIO
- OpenCV
- Backend
- Native linear algebra (EasyLocomotion/EasyNetwork ports)
- gonum
- gorgonia
- [ ]
- Simulators
- GoBot
- OpenAI gym
- Webots
- Gazebo
- CopelliaSim
- ISAAC
- Platform