MATLAB R2021b
Procesamiento de Imagenes
Este modulo fue hecho especificamente para demostraciones.
Proyecto-Trayectorias\Software\MATLAB\Generacion_Trayectoria\Image_processing
: Path relativo al modulo para procesamiento de imagenes.
En la carpeta Imagenes
guarda la imagen que quieras procesar.
Estas son las caracteristicas que mejoran el resultado del procesamiento de imagenes:
- Formato JPEG
- Imagenes caricaturescas
- Alto contraste entre fondo y objeto de interes
En el path Proyecto-Trayectorias\Software\MATLAB\Generacion_Trayectoria\Image_processing
abre el script prueba_imagen.m
es donde atraves de procesamiento de imagenes algoritmos de deteccion de bordes el objeto de una imagen se convierte en una trayectoria. Las variables que debes modificar de este script son las siguientes:
-
nameImage
: nombre de la imagen en la carpetaImagenes
la cual se quiere procesar. -
physicalSize_m
: longitud del lado más largo del lienzo fisico del dibujo en metros. El programa en automatico expande o comprime la imagen, esto para que la longitud del lado más largo del dibujo digital coincida con la longitud del lado más largo del lienzo fisico. -
reductionConstant
: numero de reducion de waypoints en la trayectoria. Que el robot no ejecute una trayectoria de más de 3000 waypoints, de preferencia mantente por debajo de 1,800 waypoints. Para reducir el numero de waypoints aumenta esta variable a tu discreción. La relación se expresa con la siguiente formula:
$length(outputTrajectory) = \lceil {\frac {length(originalTrajectory)} {reductionConstant}}\rceil$ -
numLowPointsThreshold
: los objetos con menos de esta cantidad de waypoints son eliminados. Por lo general se usa para eliminar puntos muy pequeños de la imagen. -
numHighPointsThreshold
: los objetos con más de esta cantidad de waypoints son eliminados. Por lo general se usa para eliminar el marco de la imagen. -
eliminatedObject
: el ID de un objeto que se quiere eliminar en especifico.
El resultado es guardado en el archivo waypoints.mat
.
En el path Proyecto-Trayectorias\Software\MATLAB\Generacion_Trayectoria
abre el script imagePlacement.m
para que puedas apreciar el tamaño del dibujo con respecto al robot. Debido a que las poses son relativas con el primer waypoint de la trayectoria no importa la posicion u orientacion. Las poses son guardadas en trajectoryPoses.mat
para posteriormente ser simulados con el robot.
Procesamiento de Modelos CAD
En el path Proyecto-Trayectorias\Software\MATLAB\Generacion_Trayectoria\CAD_procesing
abre el script cad_interactive_node_selector.m
es un selector interactivo de los nodos del modelo CAD.
En la carpeta Parts
guarda las piezas CAD en formato CSV.
En la linea gm=importGeometry(msd,'Part\botella.STL')
esta el Path para exportar el modelo CAD.
En el apartado Generate Mesh
:
-
edgeLenght.Hmax
: maxima longitud de una arista de la malla. -
edgeLenght.Hmin
: minima longitud de una arista de la malla.
ModificaedgeLenght.Hmax
yedgeLenght.Hmin
a tu conveniencia, aristas muy pequeñas haran el programa muy lento, aristas muy grandes haran que se pierda resolución del modelo.
El modelo CAD y sus parametros es guardado enCADparameters.mat
y las poses en latrayectoria del modelo CAD junto con el modelo CAD son guardados enprocessedCAD.mat
.
En el path Proyecto-Trayectorias\Software\MATLAB\Generacion_Trayectoria
esta el script CADplacement.m
sirve para vizualizar el robot, el modelo CAD y la trayectoria sobre la superficie del modelo CAD. Además puedes modificar la pose del modelo CAD.
En el apartado Modifing Processed CAD
tienes las siguientes variables para modificar la pose del modelo CAD y la trayectoria en la superficie del modelo CAD:
-
displacementVector
: representa la posicion del modelo CAD y la trayectoria. -
rotationVector
: representa la orientacion del modelo CAD y la trayectoria.
Importante: la posicion y orientacion del modelo CAD y la trayectoria sobre su superficie estan ligadas modificardisplacementVector
yrotationVector
afectara a ambas.
El modelo CAD y la trayectoria en su superficie son guardados entransformedCAD.mat
, para posteriormente ser simulados con el robot.
Simulacion del Robot
En el path Proyecto-Trayectorias\Software\MATLAB\Generacion_Trayectoria
abre el script main.m
Toma la trayectoria deseada, calcula la cinematica inversa, grafica la trayectoria y simula el robot. Ve a la subseccion Get Waypoints
ahi podras definir de donde quieres que se obtenga la trayectoria. El numero en la variable typeTrajectory
define cual trayectoria es utilizada.
Número | Tipo de Trayectoria |
---|---|
0 | Test Trajectory |
1 | CAD Trajectory |
2 | Image Trajectory |
La funcion simulateRobot
unicamente simula el movimiento del robot. Si es comentada esa linea no afecta el resultado.
El tipo de movimiento, las poses y las configuraciones del robot en la trayectoria son guardadas en el CSV trajectory.csv
.
Python
Este módulo se diseñó para llevar a cabo la conversión de la información contenida en el archivo trajectory.csv
.
De forma general, el algoritmo para llevar a cabo esta tarea consiste en la iteración sobre las filas del archivo CSV para la extracción información de la pose y espacio de configuración y la generación del código .script a partir de esta.
Aprovechando que el lenguaje es orientado a objetos, se utilizó esto para encapsular información de los datos relevantes. La definición de estos se encuentra aquí.
La información contenida en cada una de las filas del CSV se almacena en forma de listas de objetos (una para el Tipo de Movimiento y otra para las Poses). Al terminar de extraer toda la información, comienza el proceso de generación del código .script
que será enviado al Robot. Esto se hace a través de la concatenación de strings conteniendo la información. Para ver directamente el funcionamiento de esto, ver la función parse_csv
de este archivo.
Para la generación del código .script
es importante mencionar que este se dividirá en dos partes:
initialization
. Se utiliza para la inicialización de configuraciones en general (por el momento utilizado solamente para un contador global para llevar a cabo la trayectoria por una o más veces).
main
. Aquí se encuentra en primer lugar la inicialización para llevar a cabo los movimientos de forma relativa al lugar en el que se encuentra actualmente el TCP y para llevar a cabo la información de la trayectoria
Todo esto se lleva a cabo como un programa debajo de una GUI, la cual se ejecuta con el siguiente comando:
python .\Software\Python\app.py
Es importante mencionar que este puede variar de acuerdo al Path desde el cual se ejecuta la aplicación, esto es considerando que se encuentra en el folder de Proyecto-Trayectorias
)
El uso general de la GUI consiste en dos pasos:
-
Seleccionar el archivo CSV con el que se desea generar el
.script
a través de la ventana que se abre cuando se presiona el botónLoad CSV File
-
Seleccionar el path en el cual se desea crear este archivo a través del uso del botón
Save to specific folder
Como comentario adicional, el botón de Save URScript File
es útil para guardar directamente el archivo después de una modificación en el path (el nombre del archivo, por ejemplo) sin tener que seleccionar el folder de nuevo desde la ventana.
Finalmente, en el folder correspondiente a este módulo se encuentra un archivo CSV de ejemplo. Se puede practicar con este, el archivo resultante debe verse de la siguiente forma al abrirse con Excel:
Polyscope
Seguir tutorial en este repositorio con las siguientes modificaciones:
- Instalar Java con este tutorial
- Hacer cambio de curl en archivo
install.sh
:
commonDependencies='libcurl4 openjdk-8-jre libjava3d-* ttf-dejavu* fonts-ipafont fonts-baekmuk fonts-nanum fonts-arphic-uming fonts-arphic-ukai'
Ejemplo de install.sh
en carpeta Polyscope.
TO-DO