Uso de un coprocesador para el procesamiento de la visión

El procesamiento de Visión utilizando librerías como OpenCV para reconocer objetivos de campo o piezas de juego a menudo puede ser un proceso intensivo de CPU. A menudo la carga no es demasiado significativa y el procesamiento puede ser manejado fácilmente por la roboRIO. En casos donde hay más transmisiones de cámara o el procesamiento de imágenes es complejo, es deseable quitar la roboRIO colocando el código y la conexión de la cámara en un procesador diferente. Hay varias opciones de procesadores que son populares en FRC® como el Raspberry PI, el Kangaroo basado en inteligencia, la LimeLight para lo último en simplicidad, o para un código de visión más complejo, un acelerador de gráficos como uno de los modelos nVidia Jetson.

Estrategia

En general, la idea es configurar el coprocesador con el software requerido que generalmente incluye:

  • OpenCV- la biblioteca de visión por computadora de código abierto

  • NetworkTables - to commute the results of the image processing to the roboRIO program

  • Librería del Camera Sever- para manejar las conexiones de la cámara y publicar secuencias que pueden ser vistas en un dashboard

  • La librería de idiomas para cualquier lenguaje de computadora utilizado para el programa de visión.

  • El programa de visión real que hace la detección de objetos.

The coprocessor is connected to the roboRIO network by plugging it into the extra ethernet port on the network router or, for more connections, adding a small network switch to the robot. The cameras are plugged into the coprocessor, it acquires the images, processes them, and publishes the results, usually target location information, to NetworkTables so it is can be consumed by the robot program for steering and aiming.

Network diagram with the coprocessor and roboRIO on the same network.

Transmitir datos de la cámara al dashboard

A menudo es deseable simplemente transmitir los datos de la cámara al dashboard a través de la red del robot. En este caso, se pueden enviar una o más conexiones de cámara a la red y verlas en un dashboard de instrumentos como Shuffleboard o un navegador web. Usar Shuffleboard tiene la ventaja de tener controles sencillos para establecer la resolución de la cámara y la velocidad de bits, así como integrar las transmisiones de la cámara con otros datos enviados desde el robot.

También es posible procesar imágenes y agregar anotaciones a la imagen, como líneas de destino o cuadros que muestran lo que ha detectado el código de procesamiento de imagen y luego enviarlo al dashboard para que sea más fácil para los operadores ver una imagen clara de lo que hay alrededor del robot.