Skip to content
This repository was archived by the owner on Feb 21, 2021. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions src/drivers/PiBot/real/JdeRobotKids.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Opciones -> "mBotReal", "mBotGazebo", "piBot"
JdeRobotKids.Robot=piBot
JdeRobotKids.Puerto=/dev/ttyUSB0
JdeRobotKids.Camara=PiCam # opciones: "PiCam", "WebCam"

# Sin registro:
#JdeRobotKids.Motors=default -h 0.0.0.0 -p 9999:ws -h 0.0.0.0 -p 11000

# Con registro:
JdeRobotKids.Motors.Proxy=Motors:default -h 0.0.0.0 -p 9999
#JdeRobotKids.PiCam.Proxy=Camera:default -h 0.0.0.0 -p 8995
#JdeRobotKids.Sonar.Proxy=Sonar:default -h 0.0.0.0 -p 8993

#Configuración usada por Gazebo:
#Motors Endpoints > default -h 0.0.0.0 -p 9999:ws -h 0.0.0.0 -p 11000
#Sonar Endpoints > default -h 0.0.0.0 -p 8993:ws -h 0.0.0.0 -p 11005
#CameraGazebo picam Endpoints > default -h 0.0.0.0 -p 8995:ws -h 0.0.0.0 -p 11002

153 changes: 153 additions & 0 deletions src/drivers/PiBot/real/JdeRobotKids.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
#(c) JdeRobot-kids 2018

# -*- coding: utf-8 -*-
import abc
from abc import ABCMeta

class JdeRobotKids(object):
__metaclass__ = ABCMeta

# METODOS DE VISIONLIB
@abc.abstractmethod
def damePosicionDeObjetoDeColor(image, color):
print ("damePosicionDeObjetoDeColor abstracto")

# METODOS COMUNES A LAS TRES PLATAFORMAS
@abc.abstractmethod
def quienSoy(self):
print ("Soy un tipo de robot abstracto")

@abc.abstractmethod
def avanzar(self, vel):
print ("Avanzar abstracto")

@abc.abstractmethod
def retroceder(self, vel):
print ("Retroceder abstracto")

@abc.abstractmethod
def parar(self):
print ("Parar abstracto")

@abc.abstractmethod
def girarIzquierda(self, vel):
print ("Girar izquierda abstracto")

@abc.abstractmethod
def girarDerecha(self, vel):
print ("Girar derecha abstracto")

@abc.abstractmethod
def move(self, velV, velW):
print ("Move abstracto")

# METODOS COMUNES A PIBOT Y MBOTREAL
@abc.abstractmethod
def leerIntensidadLuz(self):
print ("leerIntensidadLuz abstracto")

@abc.abstractmethod
def leerUltrasonido(self):
print ("leerUltrasonido abstracto")

@abc.abstractmethod
def leerIRSigueLineas(self):
print ("leerIRSigueLineas abstracto")

@abc.abstractmethod
def leerIntensidadSonido(self):
print ("leerIntensidadSonido abstracto")

@abc.abstractmethod
def leerPotenciometro(self):
print ("leerPotenciometro abstracto")

@abc.abstractmethod
def moverServo(self, *args):
print ("moverServo abstracto")

def get_tipo(self):
pass

def set_tipo(self, valor):
pass

tipo = abc.abstractproperty(get_tipo, set_tipo)

# METODOS PROPIOS DEL MBOTREAL
@abc.abstractmethod
def encenderLedPlaca(self, indice, r, g, b):
print ("encenderLedPlaca abstracto")

@abc.abstractmethod
def apagarLedPlaca(self, indice):
print ("apagarLedPlaca abstracto")

@abc.abstractmethod
def encenderLed(self, puerto, indice, r, g, b):
print ("encenderLed abstracto")

@abc.abstractmethod
def apagarLed(self, puerto, indice):
print ("apagarLed abstracto")

@abc.abstractmethod
def escribirTexto(self, puerto, texto, dx, dy, brillo):
print ("escribirTexto abstracto")

@abc.abstractmethod
def escribirFrase(self, puerto, texto, brillo = 3):
print ("escribirFrase abstracto")

@abc.abstractmethod
def dibujosPosibles(self):
print ("dibujosPosibles abstracto")

@abc.abstractmethod
def pintarDibujo(self, puerto, nombreDibujo, brillo):
print ("pintarDibujo abstracto")

@abc.abstractmethod
def dibujar (self, puerto, dibujo, posicionX, posicionY, brillo, ancho):
print ("dibujar abstracto")

@abc.abstractmethod
def escribirReloj(self, puerto, hora, minuto, brillo):
print ("escribirReloj abstracto")

@abc.abstractmethod
def borrarMatriz(self, puerto):
print ("borrarMatriz abstracto")

@abc.abstractmethod
def leerBoton(self):
print ("leerBoton abstracto")

@abc.abstractmethod
def playTono(self, tono, tiempo):
print ("playTono abstracto")

@abc.abstractmethod
def valoresMandoPosibles(self):
print ("valoresMandoPosibles abstracto")

@abc.abstractmethod
def leerMandoIR(self):
print ("leerMandoIR abstracto")

@abc.abstractmethod
def dameImagen(self):
print ("dameImagen abstracto")

@abc.abstractmethod
def mostrarImagen(self):
print ("mostrarImagen abstracto")

@abc.abstractmethod
def dameSonarVisual (self, image, cameraModel):
print ("dameSonarVisual abstracto")

@abc.abstractmethod
def damePosicionDeObjetoDeColor(self, image, color):
print ("damePosicionDeObjetoDeColor abstracto")

Empty file.
71 changes: 71 additions & 0 deletions src/drivers/PiBot/real/piBot/filters/hsvFilter.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@

from threading import Lock
import cv2
import numpy as np

'''Max Values supported by OpenCV'''
HSVMAX = (179,255,255)
HSVMIN = (0,0,0)


class HsvFilter:

def __init__(self):

self.lock = Lock()

self.MAX = HSVMAX
self.MIN = HSVMIN

self.uLimit = list(HSVMAX)
self.dLimit = list(HSVMIN)

def getName(self):
return 'HSV'

def setUpLimit (self, h, s, v):
self.lock.acquire()
self.uLimit = [h,s,v]
self.lock.release()


def getUpLimit (self):
self.lock.acquire()
lim = self.uLimit
self.lock.release()
return lim

def setDownLimit(self, h, s, v):
self.lock.acquire()
self.dLimit = [h,s,v]
self.lock.release()

def getDownLimit(self):
self.lock.acquire()
lim = self.dLimit
self.lock.release()
return lim

def getMAX(self):
return self.MAX

def getMIN(self):
return self.MIN

def apply (self, img):

hup,sup,vup = self.getUpLimit()
hdwn,sdwn,vdwn = self.getDownLimit()

hsv = cv2.cvtColor(img, cv2.COLOR_RGB2HSV)

# http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_imgproc/py_colorspaces/py_colorspaces.html
minValues = np.array([hdwn,sdwn,vdwn],dtype=np.uint8)
maxValues = np.array([hup,sup,vup], dtype=np.uint8)

mask = cv2.inRange(hsv, minValues, maxValues)

res = cv2.bitwise_and(img,img, mask= mask)


return res
71 changes: 71 additions & 0 deletions src/drivers/PiBot/real/piBot/filters/rgbFilter.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@

from threading import Lock
import cv2
import numpy as np


'''Max Values supported by OpenCV'''
RGBMAX = (255,255,255)
RGBMIN = (0,0,0)


class RgbFilter:

def __init__(self):

self.lock = Lock()

self.MAX = RGBMAX
self.MIN = RGBMIN

self.uLimit = list(RGBMAX)
self.dLimit = list(RGBMIN)

def getName(self):
return 'RGB'

def setUpLimit (self, r, g, b):
self.lock.acquire()
self.uLimit = [r,g,b]
self.lock.release()


def getUpLimit (self):
self.lock.acquire()
lim = self.uLimit
self.lock.release()
return lim

def setDownLimit(self, r, g, b):
self.lock.acquire()
self.dLimit = [r,g,b]
self.lock.release()

def getDownLimit(self):
self.lock.acquire()
lim = self.dLimit
self.lock.release()
return lim

def getMAX(self):
return self.MAX

def getMIN(self):
return self.MIN

def apply (self, img):

rup,gup,bup = self.getUpLimit()
rdwn,gdwn,bdwn = self.getDownLimit()


minValues = np.array([rdwn,gdwn,bdwn],dtype=np.uint8)
maxValues = np.array([rup,gup,bup], dtype=np.uint8)

mask = cv2.inRange(img, minValues, maxValues)

res = cv2.bitwise_and(img,img, mask= mask)


return res
return img
76 changes: 76 additions & 0 deletions src/drivers/PiBot/real/piBot/filters/yuvFilter.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@

from threading import Lock

import cv2
import numpy as np

'''Max Values supported by OpenCV'''
YUVMAX = (255,255,255)
YUVMIN = (0,0,0)



class YuvFilter:

def __init__(self):

self.lock = Lock()

self.MAX = YUVMAX
self.MIN = YUVMIN

self.uLimit = list(YUVMAX)
self.dLimit = list(YUVMIN)

def getName(self):
return 'YUV'

def setUpLimit (self, y, u, v):
self.lock.acquire()
self.uLimit = [y,u,v]
self.lock.release()


def getUpLimit (self):
self.lock.acquire()
lim = self.uLimit
self.lock.release()
return lim

def setDownLimit(self, y, u, v):
self.lock.acquire()
self.dLimit = [y,u,v]
self.lock.release()

def getDownLimit(self):
self.lock.acquire()
lim = self.dLimit
self.lock.release()
return lim

def getMAX(self):
return self.MAX

def getMIN(self):
return self.MIN

def apply (self, img):


yup,uup,vup = self.getUpLimit()
ydwn,udwn,vdwn = self.getDownLimit()

''' We convert RGB as BGR because OpenCV
with RGB pass to YVU instead of YUV'''

yuv = cv2.cvtColor(img, cv2.COLOR_BGR2YUV)

minValues = np.array([ydwn,udwn,vdwn],dtype=np.uint8)
maxValues = np.array([yup,uup,vup], dtype=np.uint8)

mask = cv2.inRange(yuv, minValues, maxValues)

res = cv2.bitwise_and(img,img, mask= mask)


return res
Loading