Class PhotonPipelineResult

java.lang.Object
org.photonvision.targeting.PhotonPipelineResult
All Implemented Interfaces:
edu.wpi.first.util.protobuf.ProtobufSerializable, edu.wpi.first.util.WPISerializable

public class PhotonPipelineResult extends Object implements edu.wpi.first.util.protobuf.ProtobufSerializable
Represents a pipeline result from a PhotonCamera.
  • Field Details

  • Constructor Details

    • PhotonPipelineResult

      public PhotonPipelineResult()
      Constructs an empty pipeline result.
    • PhotonPipelineResult

      public PhotonPipelineResult(long sequenceID, long captureTimestamp, long publishTimestamp, List<PhotonTrackedTarget> targets)
      Constructs a pipeline result.
      Parameters:
      sequenceID - The number of frames processed by this camera since boot
      captureTimestamp - The time, in uS in the coprocessor's timebase, that the coprocessor captured the image this result contains the targeting info of
      publishTimestamp - The time, in uS in the coprocessor's timebase, that the coprocessor published targeting info
      targets - The list of targets identified by the pipeline.
    • PhotonPipelineResult

      public PhotonPipelineResult(long sequenceID, long captureTimestamp, long publishTimestamp, List<PhotonTrackedTarget> targets, MultiTargetPNPResult result)
      Constructs a pipeline result.
      Parameters:
      sequenceID - The number of frames processed by this camera since boot
      captureTimestamp - The time, in uS in the coprocessor's timebase, that the coprocessor captured the image this result contains the targeting info of
      publishTimestamp - The time, in uS in the coprocessor's timebase, that the coprocessor published targeting info
      targets - The list of targets identified by the pipeline.
      result - Result from multi-target PNP.
  • Method Details

    • getPacketSize

      public int getPacketSize()
      Returns the size of the packet needed to store this pipeline result.
      Returns:
      The size of the packet needed to store this pipeline result.
    • getBestTarget

      public PhotonTrackedTarget getBestTarget()
      Returns the best target in this pipeline result. If there are no targets, this method will return null. The best target is determined by the target sort mode in the PhotonVision UI.
      Returns:
      The best target of the pipeline result.
    • getLatencyMillis

      public double getLatencyMillis()
      Returns the time between image capture and publish to NT
    • getTimestampSeconds

      public double getTimestampSeconds()
      Returns the estimated time the frame was taken, in the recieved system's time base. This is calculated as (NT recieve time (robot base) - (publish timestamp, coproc timebase - capture timestamp, coproc timebase))
      Returns:
      The timestamp in seconds
    • getCaptureTimestampMicros

      public long getCaptureTimestampMicros()
      The time that this image was captured, in the coprocessor's time base.
    • getPublishTimestampMicros

      public long getPublishTimestampMicros()
      The time that this result was published to NT, in the coprocessor's time base.
    • getSequenceID

      public long getSequenceID()
      The number of non-empty frames processed by this camera since boot. Useful to checking if a camera is alive.
    • getNtRecieveTimestampMicros

      public long getNtRecieveTimestampMicros()
      The time that the robot recieved this result, in the FPGA timebase.
    • setRecieveTimestampMicros

      public void setRecieveTimestampMicros(long timestampMicros)
      Sets the FPGA timestamp this result was recieved by robot code
    • hasTargets

      public boolean hasTargets()
      Returns whether the pipeline has targets.
      Returns:
      Whether the pipeline has targets.
    • getTargets

      public List<PhotonTrackedTarget> getTargets()
      Returns a copy of the vector of targets.
      Returns:
      A copy of the vector of targets.
    • getMultiTagResult

      public MultiTargetPNPResult getMultiTagResult()
      Return the latest multi-target result. Be sure to check getMultiTagResult().estimatedPose.isPresent before using the pose estimate!
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object