Skip to content
Snippets Groups Projects
Forked from rocoelec / rocoelectrical
60 commits behind the upstream repository.

ENGINEERING JOURNAL

Jingyan Ling

06/27/2019 (Thur)

  • Compile OldRoCo repo
    • Record of modification:
      • ++line 8 of vstart.sh
      • --> pip install -r requirements.txt --user
  • Export paperbot dxf file : graph-silhouette.dxf to OnShape
    • Record of Tips:
      • Onshape does not read dxf file as its own saved unit. Manual settings needed when import.
      • onshape_dxf_unit
  • Draw circuit diagram as CAD on Onshape
    • Multiple connection approaches:
      • Cross shape of 0.039 in
      • Cross shape of 0.049 in
      • Octangular shape of 0.049 in
      • connection_approaches.png
      • actual_connection_cuts.JPG
    • Note and issue:
    • Octangular shape is the best connection approach so far, but none of approach has stable conductivity. More research is needed.
    • Scratches can be made easily when attaching microcontroller to the sheet. Potential disconnection may occur due to such scratches on metal layer.
  • Export 2D CAD drawing with PCB to SVG for silhouette cameo
    • Record of Tips:
      • OnShape unit need to be consisted with unit setting in Inkscape (default: mm)
    • Plugin Inkscape-silhouette cannot take multiple types of trace for cutting.
      • Different trace (especially cut and etching) need to be sent separately. Use coordinate tool of Inkscape to ensure separated cuts have same origin.
    • TODO:
      • Cut and etching from same Inkscape file

06/28/2019 (Fri)

Connection and fabrication approach confirmed !
  • Confirm that copper tape has better conductivity than aluminum sheet when attaching microcontroller pins through H-shape cut

    • Copper tape is harder to be scratched, which provides less risk of disconnection during assembly.
  • Etching on copper type isolates connections

  • Research on PCB editor

    • EAGLE
      • EAGLE cannot import .pcb file
      • svg can be exported but not imported
      • Custom library needed if doing schematic design
    • KiCad
      • Can import .pcb file
      • svg can be exported but not imported
    • LayoutEditor
      • support multiply file type
      • svg can be exported with different color makers as multiple layers
      • include open-sourced auto-router freerouting
  • Auto-routing package:

    • TopoR
    • Python-PCB
    • FreeRouting
  • Approaches:

    • A. convert SVG/DXF file to schematic/board design of PCB. Use KiCAD or EAGLE to do auto routing.
    • B. develop algorithm on auto routing for single layer svg/dxf file. (path finding problem)
Approach A
  • Use regular shape board for PCB in EAGLE/KiCAD

    • image processing: divide the shape of paperbot to multiple rectangles (ezdxf)

    • Pull required connections and place additional header pins around edges of each rectangle

  • Make each connection pin to be two parallel connections so auto-router does parallel trace for each wiring.

    • Etching a pair of parallel trace provides isolation, and leave the space between traces to be conductible.
  • Build Library for schematic design

    • Schematic design helps with router to know desired connection
    • Additional header pins at each side of kink mark

06/29 & 06/30/2019 (Sat & Sun)

Approach B
  • Potential needed functions of packages

    • A package draws on DXF file through script
    • A script that pulls out pins' coordinate on paper chassis
      • Or a image process package (OpenCV) that reads pins' coordinate on paper chassis
    • A package solves multi-node path finding problem*
Record of Research
  • Python Pathfinding package:
  • Python DXF editor:
  • Going through tutorials of ezdxf
    • All lines on paper spacelayer0

07/01/2019 (Mon)

  • Continue the dxf processing with 'graph-silhouette.dxf'
Record of tips:
  • Put circuit design on a new layer of dxf drawing

  • Use block feature to draw similar pattern

  • Blocks are symbol in Inkscape. Convert symbol to path

    • Edit > Clone > Unlink Clone (Shift+Alt+D), and you have a group, ungroup (Object > Ungroup, or Shift+Ctrl+G) and edit
  • Convert text to path

    • Path combine (Ctrl+K)
  • msp.delete_enetity('__') to remove existing entity

  • Test fabrication with different drawing settings

    • Layers can be cut separately by toggling visibility
    • Set cuts with same intensity and feedrate on same layer
    • Entities' layer can be changed through Entity.dxf.layer

07/02/2019 (Tue)

  • Continue the dxf processing

  • Following tasks can be completed by running the code:

    • Able to detect pin center coordinate
    • Able to draw arbitrary shape around the pin center
    • isolation_circuit.png
    • Issue & TODO

    • Convert dxf image to matrix

    • Explore pathfinding package

    • pathfinding package solve path finding problem by shortest path algorithm, one point to another

    • To solve multiple nodes problem, use concept from reinforcement learning

      • Build Q function that represents total reward of choosing certain path to be solved first
      • Update Q function in a loop with certain amount of episodes
      • Choose the order of solving paths randomly, and add possibility of choosing it from Q function
      • Exploration-exploitation method
  • To solve the problem "convert dxf to matrix" for pathfinding:

    • Have tried:
      • Export to png and read file by OpenCV
        • Resolution problem: single point does not represented as a pixel in png
      • TODO:
        • create an empty matrix and fill in numbers with the information of each lines' start and end point

07/03/2019 (Wed)

  • dxf processing completed

  • Convert dxf to matrix with resolution (270X210) (mm)

    • Potential issue:
      • the pathfinding package is based on pixel
      • When round up the line's start and end point, the accuracy of pin position is low
  • Apply single point to point path finding

    • Able to draw the path on matrix
    • Able to draw the path on original dxf file
  • matrix

  • TODO:

    • Write out algorithm for multi-node path finding
    • break single circuit trace to parallel traces
    • solve the accuracy problem

07/05/2019 (Fri)

  • Write out algorithm for multi-node path finding
    • pseudo code:
 for (episode in E):
    set initial state s (choose first pair of nodes to connect randomly)
    while not every connection is built:
      choose next connection
      find a path 
      update matrix
      retrieve cost (length of path)
    update Q (as sum of all cost)  
	
  • Q here represents total cost of certain choice of path finding order.

    • Cost defined by length of path
    • If path cannot be found, cost 1000
  • Input: NX2X2 array specifies desired pin connections

  • Research on KiCAD import needs and python API

07/082019 (Mon)

  • Debug multi-node path finding:
    • some obstacles are ignored
    • too close to each other
  • Able to show the learning process:
    • Trying different combination of solving order
    • Try to give the best order of solving multiple path
Auto-routing learning process:
  • path_learning.gif

  • Comparison between episodes and choose best combo of paths

  • learning_episodes.gif

Issues and TODO
  • Path export from optimization is messed up
  • Obstacles setting are incorrect