You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.7 KiB
60 lines
1.7 KiB
10 months ago
|
using Unity.MLAgents.Sensors;
|
||
|
|
||
|
namespace Unity.MLAgentsExamples
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// A simple sensor that provides a number default implementations.
|
||
|
/// </summary>
|
||
|
public abstract class SensorBase : ISensor
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// Write the observations to the output buffer. This size of the buffer will be product
|
||
|
/// of the Shape array values returned by <see cref="ObservationSpec"/>.
|
||
|
/// </summary>
|
||
|
/// <param name="output"></param>
|
||
|
public abstract void WriteObservation(float[] output);
|
||
|
|
||
|
/// <inheritdoc/>
|
||
|
public abstract ObservationSpec GetObservationSpec();
|
||
|
|
||
|
/// <inheritdoc/>
|
||
|
public abstract string GetName();
|
||
|
|
||
|
/// <summary>
|
||
|
/// Default implementation of Write interface. This creates a temporary array,
|
||
|
/// calls WriteObservation, and then writes the results to the ObservationWriter.
|
||
|
/// </summary>
|
||
|
/// <param name="writer"></param>
|
||
|
/// <returns>The number of elements written.</returns>
|
||
|
public virtual int Write(ObservationWriter writer)
|
||
|
{
|
||
|
// TODO reuse buffer for similar agents
|
||
|
var numFloats = this.ObservationSize();
|
||
|
float[] buffer = new float[numFloats];
|
||
|
WriteObservation(buffer);
|
||
|
|
||
|
writer.AddList(buffer);
|
||
|
|
||
|
return numFloats;
|
||
|
}
|
||
|
|
||
|
/// <inheritdoc/>
|
||
|
public void Update() { }
|
||
|
|
||
|
/// <inheritdoc/>
|
||
|
public void Reset() { }
|
||
|
|
||
|
/// <inheritdoc/>
|
||
|
public virtual byte[] GetCompressedObservation()
|
||
|
{
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
/// <inheritdoc/>
|
||
|
public virtual CompressionSpec GetCompressionSpec()
|
||
|
{
|
||
|
return CompressionSpec.Default();
|
||
|
}
|
||
|
}
|
||
|
}
|