Determinación de la posición y la velocidad de un carro grúa puente utilizando una cámara digital y OpenCV





En visión por computadora, existe un método para medir la distancia a un objeto sin usar sensores de profundidad y cámaras estéreo. En este artículo, el método se utiliza para determinar la posición y la velocidad de un carro de grúa puente.



Debido al hecho de que el carro está equipado con codificadores, podré mostrar con qué precisión funciona este método, basado en la similitud de triángulos. El artículo muestra cómo medir la distancia con una cámara y cómo se puede utilizar en tareas prácticas.



El tema está dedicado a mi tesis de maestría, que escribí hace dos años.



Equipo



El estudio se llevó a cabo en el laboratorio industrial de OOO PO Privod-Avtomatika en la ciudad de Magnitogorsk, con una viga grúa instalada que simula el funcionamiento de un puente grúa real.







Durante el experimento, se grabó un video del movimiento de la grúa con un procedimiento simultáneo para tomar lecturas de los codificadores. Los gráficos de velocidad se obtuvieron utilizando el software SoMove de Schneider Electric.



El video fue grabado en una cámara Canon EOS 1200D con una resolución de 1920x1080.



Para detectar el carrito se utiliza una etiqueta gráfica con un rectángulo dibujado y un círculo en su interior. La solución no es del todo exitosa, antes del experimento debería haber entendido mejor las etiquetas. Pero con la ayuda del análisis de contorno (restricciones de área y relación de aspecto), aún pude detectar el rectángulo deseado. También agregaré que si el objeto es fácil de detectar y el tamaño físico se puede medir con precisión, no se necesita una etiqueta gráfica.



Algoritmo de trabajo



El método de cálculo de la distancia se basa en la semejanza de triángulos que convergen en la apertura del objetivo.







Midamos el área de la marca en papel usando una regla y el área de la marca en el marco usando la biblioteca opencv. Conociendo la distancia focal, podemos calcular la distancia al objeto.



Experimentando



Se instala una cámara digital frente a un carro de grúa puente. A una distancia suficiente para que el ángulo de visión cubra toda el área de la grúa.





Diagrama de instalación. Vista desde arriba.



Se grabaron dos videos de prueba, movimiento a lo largo del eje x, hacia atrás, lejos de la cámara y a lo largo del eje y, primero a la izquierda y luego a la derecha. Los valores de posición y tiempo se escriben en la matriz numpy y luego se

exportan a Matlab, donde se trazan los gráficos de movimiento S (t).







Al diferenciar los datos, obtenemos gráficos de la velocidad V (t).



x_veloc = np.diff(x_position) / np.diff(time_mas)


Dado que los gráficos de movimiento tienen un ruido sutil asociado con una detección de bordes inexacta y una iluminación desigual, la operación de diferenciación aumenta enormemente este ruido.







Suavicemos el ruido usando un filtro de primer orden en Matlab y comparemos las lecturas del codificador con las lecturas de la cámara digital.







Los gráficos muestran la precisión con la que se puede obtener la medición de la distancia con una cámara.



Con el fin de reducir el nivel de ruido y obtener gráficos más suaves, se desarrolló una segunda versión de la etiqueta con visor e iluminación local.







En teoría, esto debería permitir reducir el ruido y, por lo tanto, aumentar la precisión de la medición. Desafortunadamente, todavía no hemos podido probar la nueva versión de la etiqueta.



Para aquellos que estén interesados ​​en aprender más sobre el seguimiento de objetos basado en el análisis de contorno, hay un buen artículo Estimando la precisión de los métodos de seguimiento para determinar las coordenadas 2d y las velocidades de los sistemas mecánicos a partir de los datos de fotografía digital.



En el artículo, hablé sobre el método más simple para medir la distancia a un objeto y mostré qué precisión de medición se puede obtener. Gracias a todos por su atención.



All Articles