|
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.Objectjava.lang.Throwablepublic EventPacket<?> filterPacket(EventPacket<?> in)
EventFilter2D
filterPacket in class EventFilter2Din - the input packet
public java.lang.Object getFilterState()
EventFilter
getFilterState in class EventFilterpublic void resetFilter()
EventFilter
resetFilter in class EventFilterpublic void initFilter()
EventFilter
initFilter in class EventFilterpublic void setFilterEnabled(boolean yes)
EventFilter2D
setFilterEnabled in class EventFilter2Dyes - true to resetEventFilter.setPreferredEnabledState()public void annotate(float[][][] frame)
FrameAnnotater
annotate in interface FrameAnnotaterframe - the RGB pixel information. First dimension is Y, second is X, third is RGBpublic void annotate(java.awt.Graphics2D g)
FrameAnnotater
annotate in interface FrameAnnotaterg - 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 FrameAnnotaterdrawable - 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.PnPNotifyInterfacepublic 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.Observerpublic 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 | |||||||||