Skip to content
This repository was archived by the owner on Nov 16, 2025. It is now read-only.

Progreso noviembre 2023

David Campoamor edited this page Nov 16, 2023 · 22 revisions

Progreso noviembre 2023

SEMANA 28 (30/10/2023-05/11/2023)

SEMANA 29 (06/10/2023-12/11/2023)

SEMANA 30 (13/10/2023-19/11/2023)

Semana 28 (30/10/2023-05/11/2023)

  • Detección de objetos por python

    Debido a que a tras la detección de las posiciones de las frutas mediante el programa de Jupyter Notebook, no se puede trabajar directamente con ellas y enviarlas al robot, ya que Jupyter Notebook está basado en web, por lo que haría falta un servidor web intermediario, como por ejemplo Django, se intentó llevar a cabo la detección mediante python, para que de este modo, se pudieran enviar al brazo robótico directamente las coordenadas, al estar trabajando en local, y tener todo el código unificado.

    Para ello se tomó como referencia y ayuda los repositorios Real Time Emotion Detection for Low Cost Robot in ROS y Detección de objetos en vídeo.

    Para tener en orden nuestras paqueterias de python creamos el ambiente "deteccionobj" el cual tiene la version 3.6 de python.

    conda create -n deteccionobj python=3.6
    

    Activamos el ambiente deteccionobj para asegurarnos que estemos en el ambiente correcto al momento de hacer la instalación de todas las paqueterias necesarias.

    conda activate deteccionobj
    

    Estando dentro de nuestro ambiente y habiendo clonado el repositorio Detección de objetos en vídeo se instalarán todas las paqueterías necesarias para correr nuestro detector de objetos en vídeo, la lista de los paquetes y versiones a instalar están dentro del archivo requirements.txt por lo cual instalaremos haciendo referencia a ese archivo.

    pip install -r requirements.txt
    

    Al instalar este archivo, apareció el siguiente error:

    ERROR cannot uninstall certifi

    No pudiendo desinstalar la versión de certifi para poder instalar una más reciente, por lo que se solucionó con el comando:

    pip install --ignore-installed certifi
    

    installed certifi

    Se volvió a intentar ejecutar el programa deteccion_video.py varias veces, obteniendo problemas ModuleNotFoundError, por lo que se tuvieron que instalar varios módulos:

    ModuleNotFoundError No module named torch

    pip install torch torchvision torchaudio
    

    ModuleNotFoundError No module named matplotlib

    pip install matplotlib
    

    ModuleNotFoundError No module named cv2

    pip install opencv-python
    

    Sin embargo, al volver a ejecutar el programa tras instalar estos módulos, se obtuvo lo siguiente:

    cv2 error

  • Pruebas de uso de la cámara Kinect en Ubuntu

    Paralelamente a las pruebas para la detección de objetos mediante python, se llevó a cabo la instalación de la cámara Kinect en Linux.

    Para ello, primero se instalaron las siguientes librerías:

    • git-core
    • cmake
    • libglut3-dev
    • pkg-config
    • build-essential
    • libxmu-dev
    • libxi-dev
    • libusb-1.0-0-dev
    • gcc
    • g++

    Después de haber instalado estas librerías, es necesario clonar el repositorio libfreenect de OpenKinect.

    git clone https://github.com/OpenKinect/libfreenect.git
    

    Después de haber clonado este repositorio, accederemos a la carpeta que se creó "libfreenect" donde se encuentra el paquete freenect.

    cd libfreenect
    

    En esta carpeta, se creará otra carpeta llamada "build", para posteriormente dirigirse a ella.

    mkdir build
    cd build
    

    Para compilar todos los archivos que contiene el paquete, se utilizará el comando CMake:

    cmake ..
    make
    

    Finalmente, se ejecutarán las siguientes instrucciones para finalizar la instalación del paquete:

    sudo make install
    sudo ldconfig /usr/local/lib64/
    

    Para ejecutar los ejemplos que contiene el paquete, se tendrá que acceder a la carpeta "examples".

    Una vez allí, se probará a ejecutar el glview, ejemplo en el que podremos obtener la imagen a color y en otro cuadro el diagrama de profundidad, además en este ejemplo se puede mover el motor hacia arriba y hacia abajo con las teclas w y x respectivamente; con la tecla s podemos centrar el motor en la posición normal. Ademas con las números del 0 al 6 podemos variar el color del LED del Kinect.

    cd examples
    ./glview.c
    

    Al ejecutar esto, se obtiene el mensaje "Permiso denegado", este error se debe a que se está intentando ejecutar un archivo fuente (en este caso, glview.c), en lugar de un archivo ejecutable.

    glview permiso denegado

    Para compilar y ejecutar un programa C, se debe compilar el código fuente en un archivo ejecutable antes de ejecutarlo:

    1. Compilar el programa: Primero, se debe compilar el archivo fuente glview.c en un archivo ejecutable. Se puede hacer utilizando el compilador de C, por ejemplo, GCC.

    gcc -o glview glview.c -lfreenect
    

    Sin embargo, al ejecutar este comando se obtuvo el siguiente fallo:

    fallo compilacion

    Este error indica que la constante FREENECT_AUTO_FLICKER no está definida en el programa glview.c. En su lugar, sugiere FREENECT_AUTO_EXPOSURE como una opción similar. Esto puede deberse a diferencias en las versiones de libfreenect o a cambios en la API de libfreenect, por lo que, en un editor de texto se busca la línea que contiene la referencia a FREENECT_AUTO_FLICKER y se reemplaza esa constante con FREENECT_AUTO_EXPOSURE.

    Tras este cambio, se intentó ejecutar de nuevo el comando anteriormente mencionado, obteniendo el error:

    Falta de definiciones

    Esto es debido a la falta de definiciones de funciones y bibliotecas relacionadas con OpenGL. Para compilar un programa que utiliza OpenGL, se debe enlazar adecuadamente con las bibliotecas de OpenGL. Esto se hace agregando las opciones de enlace correctas al comando gcc.

    Para solucionar este problema, puedes usar el siguiente comando de compilación:

    gcc -o glview glview.c -lfreenect -lGL -lGLU -lglut -lm
    

    Este comando agrega las siguientes opciones de enlace:

    • lGL: Enlaza con la biblioteca principal de OpenGL.
    • lGLU: Enlaza con la biblioteca OpenGL Utility (GLU) que proporciona funciones útiles para OpenGL.
    • lglut: Enlaza con la biblioteca GLUT, que es una biblioteca para crear ventanas y gestionar eventos de teclado y ratón en aplicaciones gráficas.
    • lm: Enlaza con la biblioteca matemática, que proporciona funciones matemáticas como sqrt y atan2.

    2. Otorgar permisos de ejecución: Una vez teniendo el archivo ejecutable, hay que otorgar permisos para ejecutarlo. Se puede hacer con el siguiente comando:

    chmod +x glview
    

    3. Ejecutar el programa:

    ./glview
    

    ejecutar controles

    El vídeo de la prueba se puede encontra en Prueba Kinect.mp4

    prueba camara

  • Elaboración de la memoria

    De manera paralela a la consecución de pruebas, se inició la elaboración de la memoria del trabajo.

Semana 29 (06/10/2023-12/11/2023)

  • Detección de objetos por python

    Para solucionar el cv2.error, se modificó el programa deteccion_video.py, más concretamente la iteración a través de las detecciones encontradas en la variable detections, siendo cada detection un objeto detectado en la imagen, en la que se declararon como enteros las coordenadas x1, y1, x2, y2.

    Declaracion enteros

    Además, se añadieron varias líneas más para calcular y mostrar por pantalla las coordenadas centrales de la detección.

    For detection in detections

    Finalmente, se ejecutó el programa, siendo el resultado el se muestra en el vídeo Prueba deteccionobj.mp4.

    Detecciones prueba deteccion_video.py

  • Elaboración de la memoria

    De manera paralela a la consecución de pruebas, se inició la elaboración de la memoria del trabajo.

Semana 30 (13/10/2023-19/11/2023)

  • Variaciones en programa para la detección de objetos por python

    Después de conseguir ejecutar el programa de detección de objetos basado en el proyecto PyTorch-YOLOv3 para correr detección de objetos sobre video, y que utiliza YOLO(You Only Look Once) como modelo para generar detecciones, debido a que este modelo se encuentra por defecto pre entrenado para detectar 80 objetos distintos, los cuales se encuentran recogidos en la lista data/coco.names, se intentó variar el programa deteccion_video_webcam.py para que las coordenadas centrales de los recuadros de los objetos detectados por el modelo, se guardasen en una lista dinámica, para poder guardar todas las posiciones que se detecten en el momento, para el posterior envío de estas al robot.

Clone this wiki locally