With vision having the potential to play a crucial role in competitions this upcoming year, we hope the ideas in this white paper help other teams benefit from the results of an effective vision system. This paper provides a detailed analysis of the implementation of vision processing for both rookie and veteran FRC robotics teams. After first-hand experiences of vision processing throughout the 2018 Power Up season and years prior, we have recognized both our successes and failures. After compiling these key findings together, we created this guide to lead teams through current and future challenges, in hope to aid them in putting together a complete and accurate vision system in sync with their robot. Using this step by step process, teams have access to a detailed outline, guiding them to create their own successful system.

For more information on the server, check out our GitHub. Good luck this year!

World coordinates are coordinates relative to the target (with for example the center of the target being the coordinate (0, 0, 0)) while camera coordinates are relative to the camera itself. The OpenCV method solvePnP() does this transformation between systems for you. Calculations just turn out to be simpler when placing the origin at the target rather than at the camera when calculating the distance and angle in accordance with the robot since we only care about the target.

The world coordinates are the real life coordinates of the corners of the vision target. As degman said, it simplifies life if you set the origin “(0,0,0)” at the target itself. Given that, you get the coordinates from the size of the reflective tape. So in 2018, the corners of the retro-reflective target on the Switch would have world coordinates of:
(-4,0,0), (+4,0,0), (-4,15.3,0), (+4,15.3,0)
These are the outer corners of the two strips combined. You could also use all 8 corners of the two strips if you wanted. Also, the above coordinates implies that the exact origin of World coordinates is at the floor midway (horizontally) between the two strips.

I guess technically it is a step-down converter, but will deliver the 4A. Make sure to adjust the voltage before connecting the ODROID. The potentiometer screw did take a bunch of turns before it started affecting anything. But the unit worked well throughout competition, and holds 5V output down well below brownout for the Rio.

I have not looked at the RPi image. My guess is that the extra work is setting up the OS with the correct software. Not hard, but benefits from some experience with compiling etc.

But I really do like the ODROID-XU4. It is really about 3x faster than the RPi, which is significant. Its GPU is technically useful in OpenCV (using OpenCL), which is not true with the RPi; however, what I have learned is that the GPU is used for so little with typical FRC processing that it is a minor improvement.