Scottapotamas / total-perspective-vortex

Path planning and generation tooling for the delta robot

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Delta Path Planning

Background

I've developed a light painting delta robot called zaphod-bot. This tooling converts blender exported spline data into an intermediate format ready for execution (load the generated folder structure into the delta-ui and hit Start).

The artistic side of the light-painting is done in Blender, and then a simple blender export script generates basic JSON matching the spline geometry.

Build

Developed against rust stable 1.38. With cargo setup, simply invoke cargo build --release to generate the binary.

Usage

Invoke total-perspective-vortex, where the working directory contains folders for each frame of the animation. Frame folders are only accepted with numeric filenames.

For each frame folder in the working directory, the tool:

  • Ingests data exported from Blender
    • Ingests the .json file generated by the Blender plugin representing a spline,
    • Ingests the matching .png files which contains the UV map for the spline.
  • Solves a toolpath to draw the splines with light
    • Applies Cartesian transforms to blender coordinates
    • Walks through coordinates and generates a valid move set suitable for execution by zaphod-bot, this includes creation of transit moves between disconnected geometry.
    • Prepares a set of LED linear fade animations in HSV space which zaphod-bot can use to light paint. These are clustered based on visual distance to reduce the quantity of generated events,
    • Writes the toolpath and lighting events to json ready for execution with the delta-ui event mode.
  • Creates a preview file for use with the delta-ui 3D preview
    • Generates a list of line segments matching visible movements. Samples complex spline geometries like catmull-rom splines into linear segments for easier display.
    • Generates a UV map representing the delta's planned lighting events, to be used with the list of polylines.
  • Creates a summary.json file in the working directory which contains paths to relevant toolpath and preview files, along with durations of the planned movements.

About

Path planning and generation tooling for the delta robot


Languages

Language:Rust 100.0%