using Unity.MLAgents.Sensors;
namespace Unity.MLAgentsExamples
{
///
/// A simple sensor that provides a number default implementations.
///
public abstract class SensorBase : ISensor
{
///
/// Write the observations to the output buffer. This size of the buffer will be product
/// of the sizes returned by .
///
///
public abstract void WriteObservation(float[] output);
///
public abstract int[] GetObservationShape();
///
public abstract string GetName();
///
/// Default implementation of Write interface. This creates a temporary array,
/// calls WriteObservation, and then writes the results to the ObservationWriter.
///
///
/// The number of elements written.
public virtual int Write(ObservationWriter writer)
{
// TODO reuse buffer for similar agents, don't call GetObservationShape()
var numFloats = this.ObservationSize();
float[] buffer = new float[numFloats];
WriteObservation(buffer);
writer.AddRange(buffer);
return numFloats;
}
///
public void Update() {}
///
public void Reset() { }
///
public virtual byte[] GetCompressedObservation()
{
return null;
}
///
public virtual SensorCompressionType GetCompressionType()
{
return SensorCompressionType.None;
}
}
}