The Dynamo team has been exploring integrations of Dynamo with different design tools. One of these design areas is manufacturing and robotic control.
We’ve been looking at connecting Dynamo to PowerMill and PowerMill Robot. PowerMill CAM software provides milling solutions for high-speed and 5-axis machining, industry standard tools for generating toolpaths, simulating, and controlling industrial robots.
We recently ran a workshop demonstrating these tools and getting them into the hands of students, artists, and sculptors. (Keep in mind that this work is experimental and in progress.)
Powermill is all about creating toolpaths, which define the movement of a tool through space.
Dynamo can be used to construct geometry, and that geometry can be used to define or control the resulting toolpath in PowerMill.
Below, Dynamo curve geometry is used to construct a toolpath directly, including the tool frame orientation and tool vector. The Dynamo geometry is converted to a series of GCode G01 moves, which are linear movements. This process is lossy, you convert the spline input curve or nurbs surface to a series of coordinate systems in space with enough resolution for your intended purpose. And finally output a GCode string like:
G01 x y z i j k u v w F
G01 x100 y100 z100 i0 j0 k1 u0 v1 w0
where the variables are specified as:
x = x component of position y = y component of position z = z component of position i x component of tool vector j y component of tool vector k z component of tool vector u x component of tool frame x axis v y component of tool frame x axis w z component of tool frame x axis F feedrate speed
You generate strings like this for every move you want to perform. See the image of a tool frame above.
This GCode file is then sent to PowerMill and converted to a toolpath.
Another option for creating toolpaths is to use the Dynamo geometry as one of many inputs to a PowerMill ToolPath Generation Strategy, like raster finishing, which produces a series of equally spaced moves. PowerMill provides many of these toolpath strategies, and Dynamo exposes a few so far. They require some input geometry, either a MeshToolKit mesh, or Dynamo Geometry for defining input surfaces, center lines, and boundaries, etc.
Another strategy, for example, is raster clearance or roughing, which clears material with raster moves.
The resulting toolpaths in PowerMill can be sent back to Dynamo as a series of lines and arcs.
When you start experimenting with industrial 6 and 7 axis arms you will quickly find that the movements you can perform with your mind effortlessly, are not so simple for the controllers driving these machines. PowerMill provides a simulation environment where it converts from your intended toolpath into an intermediate format, which specifies the locations in space of the tool, the joint angles of the robot, and the time – as well as a bunch of other information about the movements.
This simulation file is used to simulate the intended robot movements, and along the way, check for errors, like collisions, out of reach errors, singularities, and other issues.
Dynamo can parse this file as well and display your robot geometry in the position specified by PowerMill, so you can see a preview of your robot at different points in the simulation.
There is also a node with custom interface that shows a simplified timeline of the simulation and displays errors. It also allows for selection of the coordinate systems at each point in the simulation so errors in the simulation can be correlated with specific points in the toolpath.
PowerMill also provides the conversion from the intermediate format to actual robot controller code that will run on the various industrial controllers. The following image is of a an ABB specific format which was generated from the Dynamo graph above.
This file contains information on the orientation and size of the tool, which was generated through Dynamo. This information is required so the controller knows the where the actual tool center point is relative to the 6th axis end of the robot.
The other piece of information that is minimally required is a workOffset – which defines the coordinate system that the robot should move in.
Connecting Dynamo to manufacturing software like PowerMill opens up all kinds of possibilities for both platforms. Can Dynamo be used to automate toolpath parameter finding or minimization of simulation errors? Can we use Dynamo to turn PowerMill into a semi realtime control platform for robots? What can be done with toolpath geometry once back in Dynamo?
To see some other examples of Dynamo being
used for fabrication or to get Dynamo connected to robots on your machine checkout these resources below:
- Dynamo Toro (Dynamo to Robot ) – is a library for generating ABB specific robot programs. There are a few different versions of this repository floating around on github and we’ll be standardizing and hosting one somewhere central soon, but if you want to get the source now, check this repo. You can see Toro in use here at the RobArch conference.RobArch2016 DynamoBUILD workshop in Sydney Australia
- To connect Dynamo to Arduino you can use Andy Payne’s firefly , which has been ported to Dynamo and lives on the package manager.
- During an internal Autodesk hackathon, the team I was part of got to hack on Dynamo and Lego Mindstorms! We ended up converting a c# library for controlling the Lego microcontroller (monoBrick) into a series of zero touch nodes, and tied sensor readings from the robot to the weka machine learning library (also imported with zero touch) to control the robot motors in realtime.>