EasyRobot

module
v0.0.0-...-4d863a0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 2, 2025 License: MIT

README

EasyRobot Golang implementation

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.

Architecture

Plugin system

In order to register a plugin, you must first import it.

Backend implementations

E.g. OpenCV set of algorithms will operate on gocv.Mat, whilst TF implementation might use appropriate tensors and might need conversions.

With*GoCV methods and steps

These steps/processors operate on gocv.Mat only and require GoCV to build.

With*TF methods and steps
With*TFLite methods and steps
With*Image methods and steps

These steps operate on image.Image only.

Display GIO

This sink will accept either gocv.Mat, image.Image or TF/TFLite tensors depending on build tags.

Contribute

Features

Core

  • 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

EasyVision

  • 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

EasyLocomotion

  • 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

EasyNetwork

  • Backend
  • Native port from EasyNetwork
  • gorgonia
  • TFLite
  • FF learning
  • RN learning
  • Q Learning algorithms
  • DQN
  • PPO

Integrations

  • Frontends
  • Fyne
  • GIO
  • OpenCV
  • Backend
  • Native linear algebra (EasyLocomotion/EasyNetwork ports)
  • gonum
  • gorgonia
  • [ ]
  • Simulators
  • GoBot
  • OpenAI gym
  • Webots
  • Gazebo
  • CopelliaSim
  • ISAAC
  • Platform

Directories

Path Synopsis
cmd
audio command
calibrate command
cr30 command
display command
manipulator command
monitor command
spectrometer command
drivers
lidar command
internal
types
nn
x
devices
Package devices provides platform-agnostic interfaces for I2C, SPI, Serial (UART), and Pin.
Package devices provides platform-agnostic interfaces for I2C, SPI, Serial (UART), and Pin.
devices/adns3080
Package adns3080 provides a driver for the ADNS3080 optical mouse sensor.
Package adns3080 provides a driver for the ADNS3080 optical mouse sensor.
devices/as734x
Package as734x provides a driver for the AS7341 and AS7343 spectral sensors.
Package as734x provides a driver for the AS7341 and AS7343 spectral sensors.
devices/encoder
Package encoder provides a quadrature encoder driver that uses pin interrupts to efficiently track motor position and calculate rotation speed.
Package encoder provides a quadrature encoder driver that uses pin interrupts to efficiently track motor position and calculate rotation speed.
devices/mpu6050
Package mpu6050 provides a driver for the MPU6050 6-axis accelerometer and gyroscope.
Package mpu6050 provides a driver for the MPU6050 6-axis accelerometer and gyroscope.
devices/pca9685
Package pca9685 provides a driver for the PCA9685 16-channel 12-bit PWM driver.
Package pca9685 provides a driver for the PCA9685 16-channel 12-bit PWM driver.
devices/pcf8574
Package pcf8574 provides a driver for the PCF8574 8-bit I2C GPIO expander.
Package pcf8574 provides a driver for the PCF8574 8-bit I2C GPIO expander.
devices/tca9548a
Package tca9548a provides a driver for the TCA9548A 8-channel I2C multiplexer.
Package tca9548a provides a driver for the TCA9548A 8-channel I2C multiplexer.
devices/vl53l0x
Package vl53l0x provides tuning data for the VL53L0X time-of-flight sensor.
Package vl53l0x provides tuning data for the VL53L0X time-of-flight sensor.
marshaller/proto
Package marshallerv1 implements protobuf-based marshalling/unmarshalling for EasyRobot domain objects (tensors, layers, models, etc.).
Package marshallerv1 implements protobuf-based marshalling/unmarshalling for EasyRobot domain objects (tensors, layers, models, etc.).
math/control/kinematics/thrusters
Package thrusters provides forward and inverse kinematics for rigid bodies actuated by thrust-generating devices with bounded force and torque output.
Package thrusters provides forward and inverse kinematics for rigid bodies actuated by thrust-generating devices with bounded force and torque output.
math/control/kinematics/wheels
Package wheels hosts kinematic models for wheeled drive bases.
Package wheels hosts kinematic models for wheeled drive bases.
math/control/kinematics/wheels/differential
Package differential implements classic two-wheel differential drive kinematics.
Package differential implements classic two-wheel differential drive kinematics.
math/control/kinematics/wheels/mecanum
Package mecanum implements kinematics for mecanum-wheel omnidirectional bases.
Package mecanum implements kinematics for mecanum-wheel omnidirectional bases.
math/control/kinematics/wheels/steer4
Package steer4 implements four-wheel platforms with steerable front wheels.
Package steer4 implements four-wheel platforms with steerable front wheels.
math/control/kinematics/wheels/steer4dual
Package steer4dual implements four-wheel steer platforms with front and rear steering.
Package steer4dual implements four-wheel steer platforms with front and rear steering.
math/control/kinematics/wheels/steer6
Package steer6 implements six-wheel platforms with steerable front and rear axles.
Package steer6 implements six-wheel platforms with steerable front and rear axles.
math/control/motion
Package vaj provides jerk-limited motion profiles with bounded velocity and acceleration for one-dimensional trajectories.
Package vaj provides jerk-limited motion profiles with bounded velocity and acceleration for one-dimensional trajectories.
math/dsp
Package dsp provides digital signal processing functions for EasyRobot.
Package dsp provides digital signal processing functions for EasyRobot.
math/tensor/gorgonia
Package gorgonia provides a lightweight wrapper around gorgonia.org/tensor that implements the EasyRobot tensor types.Tensor interface.
Package gorgonia provides a lightweight wrapper around gorgonia.org/tensor that implements the EasyRobot tensor types.Tensor interface.
math/vec/types
Package types hosts the common vector interfaces used across math modules.
Package types hosts the common vector interfaces used across math modules.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL