1 | | OpenCV allows you to do sophisticated processing of the received frames using various algorithms to filter the images, detect edges, and more. Unfortunately, image processing is very CPU intensive and the RoboRIO is not really up to the task. The $435 [https://forums.ni.com/t5/FIRST-Robotics-Competition/roboRIO-Details-and-Specifications/ta-p/3494658?profile.language=en RoboRIO] has a 667MHz dual-core processor with 256MB of RAM. For comparison, a $40 [https://www.raspberrypi.org/products/raspberry-pi-3-model-b/ Raspberry Pi 3B] has a 1.2GHz quad-core processor with 1GB of RAM or nearly 4x the computing power. If you try to do much video processing using the RoboRIO, it slows to a crawl and can't perform its other robot-control duties well. |
| 1 | [https://first.wpi.edu/FRC/roborio/release/docs/java/ OpenCV] allows you to do sophisticated processing of the received frames using various algorithms to filter the images, detect edges, and more. Unfortunately, image processing is very CPU intensive and the RoboRIO is not really up to the task. The $435 [https://forums.ni.com/t5/FIRST-Robotics-Competition/roboRIO-Details-and-Specifications/ta-p/3494658?profile.language=en RoboRIO] has a 667MHz dual-core processor with 256MB of RAM. For comparison, a $40 [https://www.raspberrypi.org/products/raspberry-pi-3-model-b/ Raspberry Pi 3B] has a 1.2GHz quad-core processor with 1GB of RAM or nearly 4x the computing power. If you try to do much video processing using the RoboRIO, it slows to a crawl and can't perform its other robot-control duties well. |
9 | | Each method has its advantages; 2537 has traditionally used a Raspberry Pi running custom C++ OpenCV software because Java adds enough overhead that it significantly reduces processing resolution/framerates. The system is described in detail [VisionFramework here]. |
| 9 | 2537 has traditionally used a Raspberry Pi running custom C++ OpenCV software because Java adds enough overhead that it significantly reduces processing resolution/framerates. The system is described in detail [VisionFramework here]. |
| 10 | |
| 11 | When using a co-processor, there are multiple ways to send the results back to the RoboRIO including: |
| 12 | * [https://wpilib.screenstepslive.com/s/currentCS/m/75361/l/843361-what-is-networktables Network Tables] |
| 13 | * PWM |
| 14 | * Serial communications |
| 15 | |
| 16 | |
| 17 | To learn more about vision processing, see [https://wpilib.screenstepslive.com/s/currentCS/m/vision/l/682117-strategies-for-vision-programming ScreenStepsLive] and [https://www.youtube.com/watch?v=ZNIlhVzC-4g this video] from the RoboJackets |