jAER project on SourceForge

ch.unizh.ini.jaer.projects.pencilbalancer
Class PencilBalancer

java.lang.Object
  extended by net.sf.jaer.eventprocessing.EventFilter
      extended by net.sf.jaer.eventprocessing.EventFilter2D
          extended by ch.unizh.ini.jaer.projects.pencilbalancer.PencilBalancer
All Implemented Interfaces:
java.util.Observer, FrameAnnotater

public class PencilBalancer
extends EventFilter2D
implements FrameAnnotater, java.util.Observer

Uses a pair of DVS cameras to control an XY table to balance a pencil.

Author:
jc

Field Summary
 
Fields inherited from class net.sf.jaer.eventprocessing.EventFilter2D
enclosedFilter, out
 
Fields inherited from class net.sf.jaer.eventprocessing.EventFilter
annotationEnabled, chip, enclosedFilterChain, filterEnabled, log, perf, propertyTooltipMap, support
 
Constructor Summary
PencilBalancer(AEChip chip)
          Creates a new instance of PencilBalancerFilter
 
Method Summary
 void annotate(float[][][] frame)
          annotate the RGB frame somehow by color pixels in the rendered pixel frame data.
 void annotate(javax.media.opengl.GLAutoDrawable drawable)
          Each annotator enters annotate with graphics context current, in coordinates with pixel 0,0 in LL corner (note opposite from Java2D) and pixel spacing 1 unit after the scaling transform (which is already active).
 void annotate(java.awt.Graphics2D g)
          each annotator is called by the relevant class (e.g.
 void computeDesiredTablePosition()
           
 EventPacket<?> filterPacket(EventPacket<?> in)
          Subclasses implement this method to define custom processing.
 int getComPortNumber()
           
 java.lang.Object getFilterState()
          should return the filter state in some useful form
 float getGainAngle()
           
 float getGainBase()
           
 float getGainMotion()
           
 float getMotionDecay()
           
 boolean getObtainTrueTablePosition()
           
 boolean getOffsetAutomatic()
           
 float getOffsetX()
           
 float getOffsetY()
           
 float getPolyDecay()
           
 float getPolyStddev()
           
 void initFilter()
          this should allocate and initialize memory: it may be called when the chip e.g.
 boolean isConnectServo()
           
 boolean isDisplayXEvents()
           
 boolean isDisplayYEvents()
           
 boolean isEnableLogging()
           
 boolean isIgnoreTimestampOrdering()
           
 void resetFilter()
          should reset the filter to initial state
 void setComPortNumber(int comPortNumber)
           
 void setConnectServo(boolean connectServoFlag)
           
 void setDisplayXEvents(boolean displayXEvents)
           
 void setDisplayYEvents(boolean displayYEvents)
           
 void setEnableLogging(boolean enableLogging)
           
 void setGainAngle(float gainAngle)
           
 void setGainBase(float gainBase)
           
 void setGainMotion(float gainMotion)
           
 void setIgnoreTimestampOrdering(boolean ignoreTimestampOrdering)
           
 void setMotionDecay(float motionDecay)
           
 void setObtainTrueTablePosition(boolean obtainTrueTablePosition)
           
 void setOffsetAutomatic(boolean offsetAutomatic)
           
 void setOffsetX(float offsetX)
           
 void setOffsetY(float offsetY)
           
 void setPolyDecay(float polyDecay)
           
 void setPolyStddev(float polyStddev)
           
 void update(java.util.Observable o, java.lang.Object arg)
           
 
Methods inherited from class net.sf.jaer.eventprocessing.EventFilter2D
checkOutputPacketEventType, checkOutputPacketEventType, getEnclosedFilter, resetOut, setEnclosedFilter, setFilterEnabled
 
Methods inherited from class net.sf.jaer.eventprocessing.EventFilter
getChip, getDescription, getEnclosedFilterChain, getEnclosingFilter, getPrefs, getPropertyChangeSupport, getPropertyTooltip, isAnnotationEnabled, isEnclosed, isFilterEnabled, prefsEnabledKey, setAnnotationEnabled, setChip, setEnclosed, setEnclosedFilter, setEnclosedFilterChain, setEnclosingFilter, setPreferredEnabledState, setPrefs, setPropertyTooltip
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface net.sf.jaer.graphics.FrameAnnotater
isAnnotationEnabled, setAnnotationEnabled
 

Constructor Detail

PencilBalancer

public PencilBalancer(AEChip chip)
Creates a new instance of PencilBalancerFilter

Method Detail

filterPacket

public EventPacket<?> filterPacket(EventPacket<?> in)
Description copied from class: EventFilter2D
Subclasses implement this method to define custom processing.

Specified by:
filterPacket in class EventFilter2D
Parameters:
in - the input packet
Returns:
the output packet

annotate

public void annotate(float[][][] frame)
Description copied from interface: FrameAnnotater
annotate the RGB frame somehow by color pixels in the rendered pixel frame data.

Specified by:
annotate in interface FrameAnnotater
Parameters:
frame - the RGB pixel information. First dimension is Y, second is X, third is RGB

annotate

public void annotate(java.awt.Graphics2D g)
Description copied from interface: FrameAnnotater
each annotator is called by the relevant class (e.g. EyeTracker) and enters annotate with graphics context current, in coordinates with pixel 0,0 in UL corner and pixel spacing 1 unit before scaling transform (which is already active).

Specified by:
annotate in interface FrameAnnotater
Parameters:
g - the Graphics2D context

annotate

public void annotate(javax.media.opengl.GLAutoDrawable drawable)
Description copied from interface: FrameAnnotater
Each annotator enters annotate with graphics context current, in coordinates with pixel 0,0 in LL corner (note opposite from Java2D) and pixel spacing 1 unit after the scaling transform (which is already active). The FrameAnnotater then can use JOGL calls to render to the screen by getting the GL context, e.g. the following code, used in the context of an AEChip object, draws a golden lines from LL to UR of the pixel array.
        GL gl = drawable.getGL();
        gl.glBegin(GL.GL_LINES);
        gl.glColor3f(.5f, .5f, 0);
        gl.glVertex2f(0, 0);
        gl.glVertex2f(getSizeX() - 1, getSizeY() - 1);
        gl.glEnd();
 

Specified by:
annotate in interface FrameAnnotater
Parameters:
drawable - the OpenGL drawable components, e.g., GLCanvas

getFilterState

public java.lang.Object getFilterState()
Description copied from class: EventFilter
should return the filter state in some useful form

Specified by:
getFilterState in class EventFilter

resetFilter

public void resetFilter()
Description copied from class: EventFilter
should reset the filter to initial state

Specified by:
resetFilter in class EventFilter

initFilter

public void initFilter()
Description copied from class: EventFilter
this should allocate and initialize memory: it may be called when the chip e.g. size parameters are changed after creation of the filter

Specified by:
initFilter in class EventFilter

update

public void update(java.util.Observable o,
                   java.lang.Object arg)
Specified by:
update in interface java.util.Observer

computeDesiredTablePosition

public void computeDesiredTablePosition()

getPolyDecay

public float getPolyDecay()

setPolyDecay

public void setPolyDecay(float polyDecay)

getPolyStddev

public float getPolyStddev()

setPolyStddev

public void setPolyStddev(float polyStddev)

getObtainTrueTablePosition

public boolean getObtainTrueTablePosition()

setObtainTrueTablePosition

public void setObtainTrueTablePosition(boolean obtainTrueTablePosition)

getGainMotion

public float getGainMotion()

setGainMotion

public void setGainMotion(float gainMotion)

getMotionDecay

public float getMotionDecay()

setMotionDecay

public void setMotionDecay(float motionDecay)

getGainAngle

public float getGainAngle()

setGainAngle

public void setGainAngle(float gainAngle)

getGainBase

public float getGainBase()

setGainBase

public void setGainBase(float gainBase)

getOffsetAutomatic

public boolean getOffsetAutomatic()

setOffsetAutomatic

public void setOffsetAutomatic(boolean offsetAutomatic)

getOffsetX

public float getOffsetX()

setOffsetX

public void setOffsetX(float offsetX)

getOffsetY

public float getOffsetY()

setOffsetY

public void setOffsetY(float offsetY)

isConnectServo

public boolean isConnectServo()

setConnectServo

public void setConnectServo(boolean connectServoFlag)

isDisplayXEvents

public boolean isDisplayXEvents()

setDisplayXEvents

public void setDisplayXEvents(boolean displayXEvents)

isDisplayYEvents

public boolean isDisplayYEvents()

setDisplayYEvents

public void setDisplayYEvents(boolean displayYEvents)

isIgnoreTimestampOrdering

public boolean isIgnoreTimestampOrdering()

setIgnoreTimestampOrdering

public void setIgnoreTimestampOrdering(boolean ignoreTimestampOrdering)

isEnableLogging

public boolean isEnableLogging()

setEnableLogging

public void setEnableLogging(boolean enableLogging)

getComPortNumber

public int getComPortNumber()

setComPortNumber

public void setComPortNumber(int comPortNumber)

jAER project on SourceForge