Skip to the content
2 layers64.5 × 49.8 mmTlapixki HelloWorld, the printed circuit board in 3D

Códigos utilizados para el proyecto de ingeniería

Size
64.5 × 49.8 mm
Copper layers
2
Thickness
1.6 mm
Parts
33
Nets
63
Pads
153
Tracks, vias
266, 57
Pours
5
Routed
Yes
KiCad
KiCad 6 (file 20211014)
Created
21 Aug 2021
Updated
31 Mar 2023

Overview

Tlapixki HelloWorld is an open-source printed circuit board by Hugondon, from the Hugondon/Proyecto-Trayectorias repository on GitHub. It is a 2-layer board of 64.5 × 49.8 mm with 33 parts on 63 nets, routed with 266 tracks and 57 vias.

It is built around the ESP32-WROOM-32, CP2102N-A02-GQFN24 and AMS1117CD-3.3, with the BC817 among its other parts. Its parts include 9 resistors, 7 capacitors, 4 connectors, 3 ICs and 2 diodes. It belongs with the ESP32 boards of this library.

Main components

4

README

README.md

Proyecto de Ingeniería

Generación y Monitoreo de Trayectorias 3D sobre superficies regulares para Cobots UR

diagrama-bloques

Herramientas Utilizadas

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 carpeta Imagenes 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.
    Modifica edgeLenght.Hmax y edgeLenght.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 en CADparameters.mat y las poses en latrayectoria del modelo CAD junto con el modelo CAD son guardados en processedCAD.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 modificar displacementVector y rotationVector afectara a ambas.
    El modelo CAD y la trayectoria en su superficie son guardados en transformedCAD.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úmeroTipo de Trayectoria
0Test Trajectory
1CAD Trajectory
2Image 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
Parser

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:

  1. 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ón Load CSV File

    image

  2. Seleccionar el path en el cual se desea crear este archivo a través del uso del botón Save to specific folder image

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:

image

Polyscope
Instalación Polyscope en Ubuntu

Seguir tutorial en este repositorio con las siguientes modificaciones:

  1. Instalar Java con este tutorial
  2. 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.

Ejecutar programa en el Robot

TO-DO

ESP-IDF

Parts

33
QtyValueFootprintReferences
4MountingHoleMountingHole:MountingHole_3.2mm_M3H1, H2, H3, H4
30.1uCapacitor_SMD:C_0603_1608MetricC2, C5, C7
310kResistor_SMD:R_0603_1608MetricR1, R2, R6
34k7Resistor_SMD:R_0603_1608MetricR3, R7, R8
2220Resistor_SMD:R_0603_1608MetricR4, R9
222uCapacitor_SMD:C_0603_1608MetricC1, C3
2BC817Package_TO_SOT_SMD:SOT-23Q1, Q2
2Conn_01x04_MaleConnector_PinHeader_1.27mm:PinHeader_1x04_P1.27mm_VerticalJ3, J4
2REDLED_SMD:LED_0603_1608MetricD1, D2
110uCapacitor_SMD:C_0603_1608MetricC6
11uCapacitor_SMD:C_0603_1608MetricC4
1470Resistor_SMD:R_0603_1608MetricR5
1AMS1117CD-3.3Package_TO_SOT_SMD:SOT-223-3_TabPin2U1
1CP2102N-A02-GQFN24Package_DFN_QFN:QFN-24-1EP_4x4mm_P0.5mm_EP2.6x2.6mmU2
1Conn_01x06_FemaleConnector_PinHeader_1.27mm:PinHeader_1x06_P1.27mm_VerticalJ2
1ESP32-WROOM-32RF_Module:ESP32-WROOM-32U3
1LOGOLOGOG***
1SW_SPSTButton_Switch_SMD:SW_SPST_B3S-1000S1
1USB_B_MicroConnector_USB:USB_Micro-B_Amphenol_10118194_HorizontalJ1

Similar boards

  • 4 layers60 × 80 mmDigitalPCB, the printed circuit board in 3D

    DigitalPCB

    dwynnychuk/SmartSmoker

    Upgrades for Traeger to add smart capability

    111 parts
  • 4 layers68 × 60 mmRoboCore, the printed circuit board in 3D

    RoboCore

    Plastal-Bot-Builders/RoboCoreDocumentation

    RoboCore is a classroom robot kit and coding platform, designed and built in Zambia by Plastal-Bot Builders (Lusaka).

    104 partsMIT
  • 2 layers63.9 × 41.7 mmESP32-aqs, the printed circuit board in 3D

    ESP32-aqs

    JokerIsMyBae/AirQualityHoboken

    Applied IoT project voor luchtkwaliteitsmetingen in Hobokense Polder

    51 parts
  • 2 layers59.3 × 38.1 mmWay To Silence, the printed circuit board in 3D

    Way To Silence

    juthomas/Way-To-Silence

    67 parts
  • 2 layers85.7 × 78.8 mmESP32-Home Automation PCB, the printed circuit board in 3D

    ESP32-Home Automation PCB

    brandmaharaj12-cmyk/ESP32-Home-Automation-PCB

    ESP32 based 30A Home Automation PCB designed using KiCad.

    33 parts
  • 2 layers78 × 92 mmESPCARproject, the printed circuit board in 3D

    ESPCARproject

    Sumya99/RobotCarPCB

    NAND сургалтын төвийн сурагчдад зориулсан робот машины PCB төсөл

    92 parts
  • 2 layers150 × 150 mmESP32, the printed circuit board in 3D

    ESP32

    Tomoshibi-technology/Tomoshibi_Circuit

    燈のプロダクト達を動かしている基板開発用リポジトリ

    230 partsMIT

Questions

How big is the Tlapixki HelloWorld PCB?

It measures 64.5 × 49.8 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Tlapixki HelloWorld use?

33 parts, built around the ESP32-WROOM-32, CP2102N-A02-GQFN24, AMS1117CD-3.3 and BC817. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Tlapixki HelloWorld KiCad files?

From the Hugondon/Proyecto-Trayectorias repository on GitHub, at the commit this page was made from: the board is Hardware/KiCad/Tlapixki-HelloWorld/Tlapixki-HelloWorld.kicad_pcb and its schematic Hardware/KiCad/Tlapixki-HelloWorld/Tlapixki-HelloWorld.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Tlapixki HelloWorld design in my own project?

Its repository states no licence, so its author keeps all rights: ask Hugondon before reusing the design.