Program: 150914
Project: 150914
Buggy source:
public static void main(String args[]){
  IntrinsicParameters intrinsic=UtilIO.loadXML("String_Node_Str");
  String fileName="String_Node_Str";
  SimpleImageSequence<ImageFloat32> video=DefaultMediaManager.INSTANCE.openVideo(fileName,ImageType.single(ImageFloat32.class));
  CalibrationFiducialDetector<ImageFloat32> detector=FactoryFiducial.calibChessboard(new ConfigChessboard(5,4,0.03),ImageFloat32.class);
  detector.setIntrinsic(intrinsic);
  List<Point2D_F64> calibPts=detector.getCalibrationPoints();
  JPanel gui=new JPanel();
  PointCloudViewer viewer=new PointCloudViewer(intrinsic,0.01);
  DenseMatrix64F rotY=RotationMatrixGenerator.rotY(-Math.PI / 2.0,null);
  viewer.setWorldToCamera(new Se3_F64(rotY,new Vector3D_F64(0.75,0,1.25)));
  ImagePanel imagePanel=new ImagePanel(intrinsic.width,intrinsic.height);
  gui.add(BorderLayout.WEST,imagePanel);
  gui.add(BorderLayout.CENTER,viewer);
  ShowImages.showWindow(gui,"String_Node_Str",true);
  MousePauseHelper pauseHelper=new MousePauseHelper(gui);
  List<Point3D_F64> path=new ArrayList<Point3D_F64>();
  Se3_F64 targetToCamera=new Se3_F64();
  while (video.hasNext()) {
    detector.detect(video.next());
    if (detector.totalFound() == 0)     throw new RuntimeException("String_Node_Str");
    detector.getFiducialToCamera(0,targetToCamera);
    viewer.reset();
    Point3D_F64 center=new Point3D_F64();
    SePointOps_F64.transform(targetToCamera,center,center);
    path.add(center);
    for (    Point3D_F64 p : path) {
      viewer.addPoint(p.x,p.y,p.z,0x00FF00);
    }
    for (int j=0; j < calibPts.size(); j++) {
      Point2D_F64 p=calibPts.get(j);
      Point3D_F64 p3=new Point3D_F64(p.x,p.y,0);
      SePointOps_F64.transform(targetToCamera,p3,p3);
      viewer.addPoint(p3.x,p3.y,p3.z,0);
    }
    imagePanel.setBufferedImage((BufferedImage)video.getGuiImage());
    viewer.repaint();
    imagePanel.repaint();
    BoofMiscOps.pause(30);
    while (pauseHelper.isPaused()) {
      BoofMiscOps.pause(30);
    }
  }
}

Fixed version (ground truth):
public static void main(String args[]){
  IntrinsicParameters intrinsic=UtilIO.loadXML("String_Node_Str");
  String fileName="String_Node_Str";
  SimpleImageSequence<ImageFloat32> video=DefaultMediaManager.INSTANCE.openVideo(fileName,ImageType.single(ImageFloat32.class));
  CalibrationFiducialDetector<ImageFloat32> detector=FactoryFiducial.calibChessboard(new ConfigChessboard(5,4,0.03),ImageFloat32.class);
  detector.setIntrinsic(intrinsic);
  List<Point2D_F64> calibPts=detector.getCalibrationPoints();
  JPanel gui=new JPanel();
  PointCloudViewer viewer=new PointCloudViewer(intrinsic,0.01);
  DenseMatrix64F rotY=RotationMatrixGenerator.rotY(-Math.PI / 2.0,null);
  viewer.setWorldToCamera(new Se3_F64(rotY,new Vector3D_F64(0.75,0,1.25)));
  ImagePanel imagePanel=new ImagePanel(intrinsic.width,intrinsic.height);
  gui.add(BorderLayout.WEST,imagePanel);
  gui.add(BorderLayout.CENTER,viewer);
  ShowImages.showWindow(gui,"String_Node_Str",true);
  MousePauseHelper pauseHelper=new MousePauseHelper(gui);
  List<Point3D_F64> path=new ArrayList<Point3D_F64>();
  Se3_F64 targetToCamera=new Se3_F64();
  while (video.hasNext()) {
    detector.detect(video.next());
    if (detector.totalFound() == 0)     continue;
    detector.getFiducialToCamera(0,targetToCamera);
    viewer.reset();
    Point3D_F64 center=new Point3D_F64();
    SePointOps_F64.transform(targetToCamera,center,center);
    path.add(center);
    for (    Point3D_F64 p : path) {
      viewer.addPoint(p.x,p.y,p.z,0x00FF00);
    }
    for (int j=0; j < calibPts.size(); j++) {
      Point2D_F64 p=calibPts.get(j);
      Point3D_F64 p3=new Point3D_F64(p.x,p.y,0);
      SePointOps_F64.transform(targetToCamera,p3,p3);
      viewer.addPoint(p3.x,p3.y,p3.z,0);
    }
    imagePanel.setBufferedImage((BufferedImage)video.getGuiImage());
    viewer.repaint();
    imagePanel.repaint();
    BoofMiscOps.pause(30);
    while (pauseHelper.isPaused()) {
      BoofMiscOps.pause(30);
    }
  }
}