|
jAER project on SourceForge | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectnet.sf.jaer.eventprocessing.EventFilter
net.sf.jaer.eventprocessing.EventFilter2D
ch.unizh.ini.jaer.projects.tobi.goalie.ServoArm
public class ServoArm
Controls the servo arm in Goalie to decouple the motor actions from the sensory processing and manages self-calibration of the arm. This arm can also be controlled directly with visual feedback control using the tracked arm position. In this mode, the servo command is formed from an error signal that is the difference between the actual position and the desired position. The actual arm position comes from the cluster tracker that tracks the arm, while the desired position is the pixel position that the arm should go to.
Field Summary | |
---|---|
java.lang.Object |
learningLock
|
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 | |
---|---|
ServoArm(AEChip chip)
Creates a new instance of ServoArm |
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 |
doShowSamples()
|
EventPacket<?> |
filterPacket(EventPacket<?> in)
Subclasses implement this method to define custom processing. |
protected void |
finalize()
|
float |
getAcceptableAccuracyPixels()
|
int |
getActualPosition()
A tracker tracks the arm; this method returns the arm position. |
RectangularClusterTracker |
getArmTracker()
|
int |
getDesiredPosition()
The desired position of the arm |
java.lang.Object |
getFilterState()
should return the filter state in some useful form |
float |
getLastServoSetting()
Returns the last servo command value, default 0.5f if nothing has been commanded yet. |
float |
getLearningLeftSamplingBoundary()
|
float |
getLearningRightSamplingBoundary()
|
float |
getOutputFromPosition(int position)
Applies the learned model to return the learned motor value from the desired pixel position of the arm. |
ServoInterface |
getServoInterface()
|
float |
getServoLimitLeft()
|
float |
getServoLimitRight()
|
float |
getServoPulseFreqHz()
|
float |
getVisualFeedbackPIDControllerTauMs()
|
float |
getVisualFeedbackProportionalGain()
|
void |
initFilter()
this should allocate and initialize memory: it may be called when the chip e.g. |
boolean |
isLearningFailed()
|
boolean |
isRealtimeLogging()
|
boolean |
isVisualFeedbackControlEnabled()
|
void |
onAdd()
|
void |
onRemove()
|
void |
relax()
|
void |
resetFilter()
should reset the filter to initial state |
void |
setAcceptableAccuracyPixels(float acceptableAccuracyPixels)
|
void |
setFilterEnabled(boolean yes)
Resets the filter |
void |
setLearningFailed(boolean learningFailed)
|
void |
setLearningLeftSamplingBoundary(float value)
|
void |
setLearningRightSamplingBoundary(float value)
|
void |
setPosition(int position)
Sets the arm position in pixel space. |
void |
setRealtimeLogging(boolean v)
|
void |
setServoInterface(ServoInterface servo)
|
void |
setServoLimitLeft(float servoLimitLeft)
|
void |
setServoLimitRight(float servoLimitRight)
|
void |
setServoPulseFreqHz(float servoPulseFreqHz)
|
void |
setVisualFeedbackControlEnabled(boolean visualFeedbackControlEnabled)
|
void |
setVisualFeedbackPIDControllerTauMs(float visualFeedbackPIDControllerTauMs)
|
void |
setVisualFeedbackProportionalGain(float visualFeedbackProportionalGain)
|
void |
startLearning()
|
void |
startLogging()
|
void |
stopLearning()
|
void |
stopLogging()
|
void |
update(java.util.Observable o,
java.lang.Object arg)
|
Methods inherited from class net.sf.jaer.eventprocessing.EventFilter2D |
---|
checkOutputPacketEventType, checkOutputPacketEventType, getEnclosedFilter, resetOut, setEnclosedFilter |
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, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface net.sf.jaer.graphics.FrameAnnotater |
---|
isAnnotationEnabled, setAnnotationEnabled |
Field Detail |
---|
public java.lang.Object learningLock
Constructor Detail |
---|
public ServoArm(AEChip chip)
Method Detail |
---|
public boolean isVisualFeedbackControlEnabled()
public void setVisualFeedbackControlEnabled(boolean visualFeedbackControlEnabled)
public float getVisualFeedbackProportionalGain()
public void setVisualFeedbackProportionalGain(float visualFeedbackProportionalGain)
public float getVisualFeedbackPIDControllerTauMs()
public void setVisualFeedbackPIDControllerTauMs(float visualFeedbackPIDControllerTauMs)
public ServoInterface getServoInterface()
public void setServoInterface(ServoInterface servo)
protected void finalize() throws java.lang.Throwable
finalize
in class java.lang.Object
java.lang.Throwable
public EventPacket<?> filterPacket(EventPacket<?> in)
EventFilter2D
filterPacket
in class EventFilter2D
in
- the input packet
public java.lang.Object getFilterState()
EventFilter
getFilterState
in class EventFilter
public void resetFilter()
EventFilter
resetFilter
in class EventFilter
public void initFilter()
EventFilter
initFilter
in class EventFilter
public void setFilterEnabled(boolean yes)
EventFilter2D
setFilterEnabled
in class EventFilter2D
yes
- true to resetEventFilter.setPreferredEnabledState()
public void annotate(float[][][] frame)
FrameAnnotater
annotate
in interface FrameAnnotater
frame
- the RGB pixel information. First dimension is Y, second is X, third is RGBpublic void annotate(java.awt.Graphics2D g)
FrameAnnotater
annotate
in interface FrameAnnotater
g
- the Graphics2D contextpublic void annotate(javax.media.opengl.GLAutoDrawable drawable)
FrameAnnotater
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();
annotate
in interface FrameAnnotater
drawable
- the OpenGL drawable components, e.g., GLCanvaspublic int getActualPosition()
public int getDesiredPosition()
public void setPosition(int position)
state
to be ServoArmState.active
.
position
- the position of the arm in pixels in image
space in the x coordinate (along the bottom of the scene in the arm tracking region).public void relax()
public float getOutputFromPosition(int position)
position
- the diseired postion in pixels [0,chip.getSizeX()-1]
public void stopLearning()
public void startLearning()
public void startLogging()
public void stopLogging()
public float getLearningLeftSamplingBoundary()
public void setLearningLeftSamplingBoundary(float value)
public float getLearningRightSamplingBoundary()
public void setLearningRightSamplingBoundary(float value)
public float getServoLimitLeft()
public void setServoLimitLeft(float servoLimitLeft)
public float getServoLimitRight()
public void setServoLimitRight(float servoLimitRight)
public boolean isRealtimeLogging()
public void setRealtimeLogging(boolean v)
public void onAdd()
onAdd
in interface de.thesycon.usbio.PnPNotifyInterface
public void onRemove()
onRemove
in interface de.thesycon.usbio.PnPNotifyInterface
public void update(java.util.Observable o, java.lang.Object arg)
update
in interface java.util.Observer
public void doShowSamples()
public float getServoPulseFreqHz()
public void setServoPulseFreqHz(float servoPulseFreqHz)
public float getAcceptableAccuracyPixels()
public void setAcceptableAccuracyPixels(float acceptableAccuracyPixels)
public float getLastServoSetting()
public RectangularClusterTracker getArmTracker()
public boolean isLearningFailed()
public void setLearningFailed(boolean learningFailed)
|
jAER project on SourceForge | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |