diff --git a/y2023/vision/aprilrobotics.cc b/y2023/vision/aprilrobotics.cc
index d20a247..fbbc01d 100644
--- a/y2023/vision/aprilrobotics.cc
+++ b/y2023/vision/aprilrobotics.cc
@@ -19,7 +19,9 @@
                         HandleImage(image_color_mat, eof);
                       }),
       target_map_sender_(
-          event_loop->MakeSender<frc971::vision::TargetMap>("/camera")) {
+          event_loop->MakeSender<frc971::vision::TargetMap>("/camera")),
+      april_debug_sender_(
+          event_loop->MakeSender<y2023::vision::AprilDebug>("/camera")) {
   tag_family_ = tag16h5_create();
   tag_detector_ = apriltag_detector_create();
 
@@ -120,6 +122,10 @@
 
   std::vector<std::pair<apriltag_detection_t, apriltag_pose_t>> results;
 
+  std::vector<flatbuffers::Offset<AprilCorners>> corners_vector;
+
+  auto builder = april_debug_sender_.MakeBuilder();
+
   for (int i = 0; i < zarray_size(detections); i++) {
     apriltag_detection_t *det;
     zarray_get(detections, i, &det);
@@ -155,9 +161,35 @@
                                                before_pose_estimation)
                      .count()
               << " seconds for pose estimation";
+
+      std::vector<Point> corner_points;
+
+      corner_points.emplace_back(det->p[0][0], det->p[0][1]);
+      corner_points.emplace_back(det->p[1][0], det->p[1][1]);
+      corner_points.emplace_back(det->p[2][0], det->p[2][1]);
+      corner_points.emplace_back(det->p[3][0], det->p[3][1]);
+
+      auto corner_points_fbs =
+          builder.fbb()->CreateVectorOfStructs(corner_points);
+
+      AprilCorners::Builder april_corners_builder =
+          builder.MakeBuilder<AprilCorners>();
+
+      april_corners_builder.add_id(det->id);
+      april_corners_builder.add_points(corner_points_fbs);
+
+      corners_vector.emplace_back(april_corners_builder.Finish());
     }
   }
 
+  auto corners_vector_fbs = builder.fbb()->CreateVector(corners_vector);
+
+  AprilDebug::Builder april_debug_builder = builder.MakeBuilder<AprilDebug>();
+
+  april_debug_builder.add_corners(corners_vector_fbs);
+
+  builder.CheckOk(builder.Send(april_debug_builder.Finish()));
+
   apriltag_detections_destroy(detections);
 
   const aos::monotonic_clock::time_point end_time = aos::monotonic_clock::now();
