Ir al contenido

Uso cámara del celular

Vamos a usar la cámara del celular como sensor óptico para nuestra plataforma móvil. Para esto deberemos usar una aplicación en el celular para permitir la conexión:

Sistema OperativoNombreIcono
En Android podremos usar

IP Webcam

icono de aplicación ip webcam
En iOS podremos usar

IP Camera Lite

icono de aplicación ip camera lite

Para probar la conexión debemos tener el celular y el PC conectados al mismo router. Si con la red de la Universidad tenemos problemas, crear un hotspot o Zona de cobertura inalambrica desde el PC o el celular.

Desde la aplicación en el celular deberemos buscar la direción IP del celular, la cual cambia cada vez que nos conectamos a una red wifi (en general).

Con el siguiente código podremos probar la cámara y la aplicación.

Una nueva versión de la plataforma movil puede ser descargada a continuación:

robot diferencial
Paso 1 — Instalar la aplicación y arrancar el servidor

Instale IP Webcam (Android) o IP Camera Lite (iOS) desde la tabla de arriba y siga los pasos de su aplicación.

IP Camera Lite (iOS)

  1. Abra la aplicación y active Turn on IP Camera Server.
  2. En los ajustes de video baje la resolución a 640 × 480 y el Frame Rate a 15 FPS: es suficiente para lo que vamos a hacer y reduce el retraso.
  3. Anote la IP y el puerto HTTP que muestra la aplicación, por ejemplo http://192.168.137.49:8081. La aplicación también ofrece un servidor RTSP (puerto 8554), pero no lo usaremos: medimos más de 1 s de retraso con RTSP, contra unos 150 ms por HTTP.

IP Webcam (Android)

  1. Abra la aplicación. En Connection settings → Local broadcasting verifique que el puerto es 8080, que es el que usan los programas del curso.
  2. En IP Webcam settings → Video preferences baje la resolución a 640 × 480 y limite los cuadros por segundo a 15 FPS: es suficiente para lo que vamos a hacer y reduce el retraso.
  3. Abra el menú de los tres puntos (⋮), arriba a la derecha, y seleccione Start server.
  4. Anote la dirección que muestra la aplicación en pantalla, por ejemplo http://192.168.137.49:8080.
menú principal de IP Webcam con Local broadcasting en el puerto 8080menú de los tres puntos de IP Webcam con la opción Start server
Ajustes de conexión: puerto 8080Menú ⋮ → Start server
Paso 2 — Conectar el celular y el PC a la misma red
  1. Conecte el celular y el PC al mismo wifi. Si la red de la universidad no deja ver un dispositivo desde el otro, cree una zona de cobertura inalámbrica (hotspot) desde el PC o el celular y conecte el otro a ella.

  2. Abra en el navegador del PC la dirección del paso anterior: debe ver la página de la aplicación. Si no carga, el problema es de red y ningún programa de Python va a funcionar todavía.

    • IP Webcam (Android): en Video renderer elija Browser para ver la imagen de la cámara.
    • IP Camera Lite (iOS): el navegador pide usuario y contraseña; ambos son admin. La página muestra el video en vivo.
    interfaz web de IP Webcam en el navegador del PCinterfaz web de IP Camera Lite en el navegador del PC
    http://192.168.137.49:8080http://192.168.137.49:8081
    IP Webcam (Android)IP Camera Lite (iOS) — usuario y contraseña: admin
  3. Recuerde que la IP del celular cambia casi siempre que se conecta a una red: revísela al empezar cada sesión.

Paso 3 — Instalar OpenCV

Copie y ejecute estos dos comandos en la terminal, en ese orden. El primero borra cualquier versión de OpenCV que ya tenga instalada; el segundo instala la que usamos en el curso.

Ventana de terminal
pip uninstall -y opencv-python opencv-python-headless opencv-contrib-python opencv-contrib-python-headless
pip install opencv-contrib-python
Paso 4 — Probar la transmisión con C01
  1. Descargue C01-ip-cam.py y llene las tres líneas del inicio con los datos que muestra la aplicación de su celular:

    IP = '192.168.137.49'
    PUERTO = 8080
    IPHONE = False

    Ponga IPHONE = True si usa IP Camera Lite (iPhone) y IPHONE = False si usa IP Webcam (Android). El puerto es el que aparece en la dirección de la aplicación: en IP Webcam suele ser 8080 y en IP Camera Lite 8081. El programa arma la dirección correcta para cada aplicación y la imprime al empezar.

  2. Ejecute el programa. Debe aparecer una ventana llamada temp con el video del celular.

  3. Presione q con la ventana de video seleccionada para salir.

  4. Mueva la mano frente a la cámara y estime el retraso. El programa lee la cámara en segundo plano y muestra siempre la imagen más reciente, para no mostrar imágenes viejas acumuladas.

Paso 5 — Montar el celular en el robot y probar C02
  1. Arme la plataforma Differential Micro y ubique el celular en el soporte, con la cámara mirando hacia el piso.
  2. Ejecute C02-ip-cam-rotate.py llenando IP, PUERTO e IPHONE como en C01. Este programa rota la imagen 90° en sentido horario y la muestra vertical, de 480 × 640.
  3. Empuje el robot hacia adelante con la mano: lo que está al frente del robot debe aparecer en la parte de arriba de la imagen. Si aparece abajo, cambie cv2.ROTATE_90_CLOCKWISE por cv2.ROTATE_90_COUNTERCLOCKWISE. Todas las prácticas siguientes usan esta misma rotación, así que anote cuál le funcionó.
Problemas frecuentes
  • La ventana nunca aparece o el programa termina de inmediato: la IP está mal, el servidor de la aplicación está detenido o el PC y el celular no están en la misma red. Vuelva al paso 2.
  • Error The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support : tiene instalada una versión de OpenCV que no puede abrir ventanas. Vuelva a ejecutar los dos comandos del paso 3.
  • El video se congela: el celular bloqueó la pantalla o la aplicación pasó a segundo plano. Desactive el bloqueo automático de pantalla mientras trabaja.
  • Mucho retraso: baje la resolución en la aplicación y acerque el celular al router o al hotspot.