GithubHelp home page GithubHelp logo

machineagency / taxon Goto Github PK

View Code? Open in Web Editor NEW
9.0 9.0 0.0 6.41 MB

⚙️ A language for formal reasoning with digital fabrication machines

JavaScript 92.01% HTML 0.16% Python 0.47% G-code 0.01% CSS 3.80% SCSS 3.54% Dockerfile 0.01%

taxon's People

Contributors

jhaazpr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

taxon's Issues

Leftover DSL-coarse feature requests

Feature requests:

  • resolve above issue with machine instantiation and ids—probably easiest just to remove ids
  • add model upload back in (only stl—at scale)
  • add world ruler
  • load model graphically into work envelope and do static checking there
  • remix and duplicate rather than raw new (addresses above issue)

Response map basic implementation

Support e.g. bridge length, overhang angle, and dimensional accuracy in a print. Allow the user to enter the results and tie it to a machine. Create a class to represent this information. Allow user to ask simple queries using the response maps.

SM-fine ideas

idea for SM-fine: just parameter settings. these are compared against clustered data (unsupervised learning) coming from either past prints or an online repository of prints. we condition clusters on: model features and machine topologies from SM-coarse. E.g. people using a prusa typically used 2 more of parameterX versus other 3d printer, 1 more than gantry systems, and 2 more than other platform-moves systems.

(clamp and vise support)? maybe

High-level constraint filtering

Revamp the interface to support higher level questions somehow for someone who knows nothing about machines. For example, using a constraint we already have of having the model fit in the work envelope, either have some annotation, or check boxes e.g. "model fits in container," for hard constraints. For soft constraints, this is trickier; consider the example of driveTrain type, maybe explaining tradeoffs and using that to fill in the JSON. In either case, having just the raw JSON filter isn't super usable.

SM Demo Schedule

Idea: create an share a working demo (every 2-3 weeks), demo to lab, maybe post to Twitter.

  • Files printed and simulated. Kinematic checks.
  • End-Products visualized and formalized e.g. plastic cup, wooden cup, Matthew dot task.
  • Task and Machine spaces visualized (small-scale). Mappings. Put visualization in the UI and let people play around with different machines.

Actual Checker

Implementing RoTs, checking heuristics, having its own widget.

SM-coarse static checker started

Enforce invariants such as:

  • A spec must have all the required properties like blocks
  • A stage must have the correct number of driving motors

Add more later

UI makeover with procedure support

  • LHS machine database, current machine program
  • RHS procedure UI
  • port file upload to procedure calls
  • allow for stepping through procedure calls
  • toolpaths get their own instruction window (existing one)
  • keep warning/ui box

Featurize Model

  • Detect overhangs (in 3d case)
  • Detect fine features (how to do this?)

"price" -> "vendorInfo"

Expand from simply having price to listing an object with price, sourcing, how many people have it, etc. to help beginner users make informed decisions.

Implement sexy use case #1: given model, filter all machines that can fabricate it

Implement the checking as part of the GUI—think about how to do this checking. My hunch is that we need to revive the bottom frame.

Hard constraints to check

  • Work envelope
  • Correct type of machine
  • Correct number of dimensions

Soft constraints

  • Price and community info
  • (Reach goal) is this a complicated model? Should we check sm-fine programs to see if it can handle it

All example block plans implemented

  • prusa
  • axidraw
  • othermill
  • hot wire cutter
  • wasp printer
  • pick and place
  • em printer
  • matchsticks
  • jubilee

Including any changes that we need to make to accommodate these, e.g. delta bot kinematics.

Don't do parts assembly yet.

Toggle Visualizations

Specifically, toggle visuals for: kinematic paths, dofs maybe, root nodes, work envelope.

Subtractive tool crash check

This may require showing stock material, but as far as I know we would want to defer stock to SM-fine. Will think about.

Specifically, check: is it possible for the tool plunged to maximum depth to crash into the stock? Is this a model-level or CAM-level check?

Additional filtering criteria

  • drive mechanism
  • structural loop: “cantileveredness” gantry pushes straight down, robot arm has to distribute
  • evenness of work envelope
  • has moving XY platform

Change Aesthetic to match Bounding Box Concept

Main idea: the "stages" should look like wireframe or transparent boxes with actual machine parts inside e.g. a leadscrew or timing belt, even though these parts are purely cosmetic.

Connections should be marked probably as a transparent bounding box with labeling information.

Comparison visualization improvement

During a comparison preview:

  • Render the current machine as red (or some colorblind-ok color)
  • Render both work envelopes
  • Render labels on both machines in the scene

Sexy idea #2: projecting SM-coarse (or -fine) info onto the physical machine/envelope

Keep thinking about this and how this might work.

Perhaps: previewing model sizes of recommended models, highlighting tools that would be needed on jubilee or another tool changing machine, or highlighting part of the machine that deserves extra attention for a particular model/job.

If we characterize structural loop, maybe we can project parts of the Axidraw work envelope that are subject to more wobble (calculating this is possible with volumetric and drive mechanism data, but not trivial), and give an interface to move the drawing away from those zones if there are fine features.

Physical attribute implementation

Attributes: step displacement ratio we calculate (it's a distance). Person could know: kind of motor, what kind of gear—we calculate distance -> full rotation of motor corresponds to 2mm travel e.g.

Tool Characteristic Implementation

tool characteristics e.g. wattage, horsepower for spindle are uninterpreted. just set baseline recommendations outside the language. jk interpreted: just rules of thumb.

Visual Geometry Aids for Parallel and Cross Stages

  • By default add parallel stages on the ends of the longest axis in a ParallelStage
  • For a CrossStage add either the old moving stack (e.g. Axidraw) or gantry (e.g. Jubilee), perhaps have these specified by an optional property.

Sorting RoTs, filtering with RoTs

There are on-action RoTs, and there are "always" or "what's feasible" RoTs, and the latter can be used to filter machines (possibly given no other constraints, or given constraints with materials or models). Find a way to identify these quickly but also use them to filter machines.

Procedure implementation for 3DP and milling example

Can port over stuff from previous mom

Materials: on the the topic of where materials go, maybe just have them in a procedure call, with static checking about what machines work with what materials.

Regions and Sensors: These don't go in the machine—they are only instantiated with library calls. Try to have minimum effort here.

  • Per-line preview (running) so that somebody typing let material = ... sees the stock loaded in the window
  • Static checking e.g. if you use wood with a 3d printer it should error

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.