compas_fab icon indicating copy to clipboard operation
compas_fab copied to clipboard

Fabrication process language (DSL)

Open gonzalocasas opened this issue 8 years ago • 4 comments

Building up on top of #8, explore the possibility of creating a domain-specific language for digital fabrication, heavily leaning towards declarative programming models.

There's an overview of DSL for robotics here, and there's some prior work done on Haskell, including some older papers that should be analyzed.

gonzalocasas avatar Nov 29 '17 12:11 gonzalocasas

This is very closely linked to #11 .

yijiangh avatar Oct 26 '18 13:10 yijiangh

g-code or RAPID can be considered DSL's as well 🍹 but I think you have a dsl in mind to generate a nr of targets such as Karel, KRL, RAPID, g-code, APT? Being able to parse and cross-compile would be interesting.

There's a pretty decent RAPID parser that actually interprets the RAPID code in python! So that's a start of a fabrication dsl ;) I think the original intent was to to test-driven development

jf--- avatar Mar 11 '19 22:03 jf---

That RAPID parser is a very interesting project.

This feature is still up for definition and your feedback is more than welcome! The overall idea goes slightly more in the direction of building an internal DSL that allows to model/express the fabrication process with all its nodes, interactions and inter-dependencies. And while some nodes will be targets for vendor-specific code, the focus is on online integration (i.e. drivers), not so much on code generation for offline programming.

As for programming model, something along the lines of the actor model defined using declarative programming might also be a good fit, probably in some combination with finite state machines. But yeah, very much open for discussion :)

gonzalocasas avatar Mar 13 '19 08:03 gonzalocasas

the focus is on online integration (i.e. drivers), not so much on code generation for offline programming

interesting, indeed I was thinking more in terms of (high level) code generation

probably in some combination with finite state machines

some associated projects that come to mind are abb_librws is utilizing a statemachine on the controller to control the routines invoked by the lib.

perhaps abb_libegm can be thought of as a driver.

jf--- avatar Mar 19 '19 14:03 jf---