Thursday, October 24, 2013

Super Matter Tools - Adding a Graphical User Interface

I've been working on a program called Super Matter Tools at Taubman College at the University of Michigan. I've been collaborating  with Taubman Fab Lab Director, Wes McGee, and with Dave Pigram, Director, Master of Advanced Architecture Program at University of Technology Sydney. They were the original developers of Super Matter Tools (SMT).

SMT is one of the programs used for tool path programming of the lab's robots. It's important that the lab develops its own software tools because of the number of unique research tracks taken in the lab. These custom tools and operations are not supported by commercial CAM applications such as MasterCAM, RhinoCAM, etc.

Developing a Graphical User Interface for Rhino Python

SMT began as a command line script. The first step was to eliminate the command line and replace it with a graphical user interface.

The earliest prototypes were created using SharpDevelop. Here's an example of a very early mock up done using SharpDevelop:

We didn't want to rely on that tool. Instead we wanted to have it all coded in python without the need for an external IDE. I developed those fundamental UI tools back in late 2012. They are available for any Rhino Python programmer to use - see my post Easily Create Graphical User Interfaces in Rhino Python to download the code and learn to use it.

The code continued to develop (!) until functionally it did as much as the command line version. That is, generated code for a single robot and a single operation. Here's the UI at that point - it only worked for one robot and operation - but the aim was to support more eventually and the UI reflects this:

Multiple Robots

In 2013 the lab upgraded its robotics capabilities by adding four more robots. We then needed to update the SMT workflow to support multiple robots, with multiple operations for each robot. The python class structure was revised and the tree view was updated to support this. Here are a few screen grabs of various UI panels.

This panel is for the Workcell. The workcell determines which robot or robots are available. From here you can import the workcell geometry (a 3D model of the robot environment) as well as add programs.

This is the panel for editing programs. A program is associated with a single machine. Controls here allow you to import the machine geometry, generate code for the robot to execute, and add operations. 

This is the panel for editing operations. The process determines which tool is used. 

Under each operation are pages for selecting geometry, specifying tool orientation, and curve division. 

There are other panels, for instance this one, which allow you to set the start and end point for the robots movements.

Interactive Posing and Code Generation

Initially, you set everything up in SMT and only after pressing OK to exit the UI did it generate code or pose the robots. It became clear quickly that we could keep the UI up and do both those things.
So the UI was updated to support interactive posing and generation of single operations as well as full programs.

We also added the capability to generate videos of the simulation. Here's an example of this type of rendering. This shows the robot moving along a helix toolpath.

A Simulate button and Trackbar control were added to control the simulation of the robot over the toolpaths. You can simulate a single operation, a single program, or multiple synchronized robots.  

Dynamic Draw

We are in the process of adding temporary drawing (similar to Grasshopper) rather than posing the Rhino geometry.

For an update on that progress please see: Rhino 3dm File Load / Draw / Bake.

No comments:

Post a Comment