Grasshopper

algorithmic modeling for Rhino

Information

Firefly

Firefly offers a set of comprehensive software tools dedicated to bridging the gap between Grasshopper, (a free plug-in for Rhino) the Arduino microcontroller and other input/output devices. It allows near real-time data flow between the digital and physical worlds – enabling the possibility to explore virtual and physical prototypes with unprecedented fluidity.

Website: http://www.fireflyexperiments.com/
Location: Cambridge, MA
Members: 628
Latest Activity: Dec 12

Firefly Experiments

As a generative modeling tool, Grasshopper offers a fluid visual interface for creating sophisticated parametric models, but by default, it lacks the ability to communicate with hardware devices such as programmable microcontrollers or haptic interfaces. Firefly fills this void. It is an extension to the Grasshopper’s parametric interface; combining a specialized set of components with a novel communication protocol (called the Firefly Firmata or Firmware) which together enable real-time communication between hardware devices and the parametric plug-in for Rhino.


Key Features

  • Read / Write to Arduino microcontrollers and other devices
  • Visualize Sensor Data within Firefly / Grasshopper
  • Control LEDS, Lights, Motors, Valves and more
  • Control Stepper Motors (for 3d Printers and end effectors) 
  • Stream Web Cams and connect with Mobile Devices (iOS + Android) using OSC and UDP
  • Connect to Internet Feeds and search XML Feeds 
  • Generate code to upload to an Arduino Board
  • Basic sound input and processing tools
  • Datalogging, counting and playback
  • Machine Vision toolkit including edge detection, color filtering, convolution filtering and much more
  • Kinect toolkit including skeleton tracking


A notable distinction for Firefly is that it is the first visual microcontroller programming environment designed specifically for a 3-D parametric CAD package (such as Rhino). This feature means that real-world data, acquired from various types of sensors or other input devices (video cameras, internet feeds, or mobile phone devices, etc.) can be used to explicitly define parametric relationships within a Grasshopper model. Firefly completes the communication feedback loop by allowing users the ability to send information from Grasshopper back to the microcontroller in order to incite specific actuations (ie. lights, motors, valves, etc). Ultimately, this workflow creates a new way to create interactive prototypes.

Discussion Forum

Writing to SPI/I2C devices through FT232H 2 Replies

Hi all.I'm recently working on a kinetic project involving a number of hobby servo motors controlled by a I2C PWM controller PCA9685. (or some of you refer to the famous Adafruit 16 channel 12-bit PWM/Servo Driver - I2C interface )I realize it would…Continue

Started by Victor Leung. Last reply by KieshaEFrederick Dec 12.

Firefly media types: raw video bitmaps vs ordinary firefly bitmaps. 2 Replies

I have a prerecorded video clip that I'd like to run through the 'optical flow' component to generate an extra layer for my video.using the 'video player' as the input for the 'optical flow' component makes the outcome appear bumpy because the video…Continue

Tags: mediatypes, rawvideobitmap, opticalflow, framerate

Started by Johanna Jõekalda. Last reply by yogamaja Nov 25.

How to Sync with ABB robot controller? 3 Replies

Hey There. A quick question: is there any way to synch Arduino/Firefly with HAL?I have a tool attached to my robot arm and I kinda manually control it through Arduino. I need to use Firefly to parametrically and maybe in almost real time (if…Continue

Tags: IRC5, Arduino, ABB, Firefly, Robot

Started by Mehdi FarahBakhsh. Last reply by GabrielaSullivan Mar 21.

Serial read problem in Firefly 7 Replies

Hi guys,I'm communicating with a 3D printer via Grasshopper / Firefly (and eventually) Silkworm.So far, I can quite happily send G-Code move commands to the printer  - which is a Leapfrog Creatr, based on Arduino Mega / RAMPS electronics - via the…Continue

Tags: GCode, Read, Serial, Firefly

Started by fergal.coulter. Last reply by Aaron Porterfield May 16, 2022.

News

Comment Wall

Comment

You need to be a member of Firefly to add comments!

Comment by Pablo0o0oo0o000oo on March 1, 2012 at 6:29pm

KINECT+FIREFLY INSTALATION

In this post pretty well explains the work done during the workshop of parametric motionthat was used for grasshopper + kinect

I HOPE U LIKE IT...

Comment by Philipp on December 28, 2011 at 2:37am

Andy, thank you for quick reaction. oh yeah, it will be great to implement some face/hand recognision components...)

Yes, actually i just wanted to "separate" data 0 to show only the data   connected to selected point or face, or start a reaction algorithm (kangaroo or spm, lets say). But it will be cool also to connect this to firefly to actuate led or servos, you are right.

 

Comment by Andy Payne on December 27, 2011 at 7:57am

Hi Phillip,

Thank you for your suggestions.  I have been working on a whole new suite of computer vision components... and your Kinect suggestion would work well here.  It's something I plan to implement... I just I have to find the time to work on it.  But thank you for bringing it to my attention.

I will also look into the second idea... But I was wondering if you could describe the application for such a component.  It looks like you want to find the GUID from the geometry in a Rhino file, and when a certain piece of geometry is selected, then this component would return true, otherwise it would return false.  Is this correct?  Do you want this to drive a light? motor? start a counter? all of the above?  I'm just curious as to where you might want to use this type of component.

Cheers,

Andy

Comment by Philipp on December 26, 2011 at 12:44pm

Hey, i have two requests for the nest version.

First, i played aroud with a kinect node and it is awesome. Altrought, i think it will be nice to have another one just with customizable grid of points, their depth and color.

Second idea is actually already realised bu David here - it is a node which works same as "if button pressed" but instead "if object selected"/ But now it works bit slowly, maybe you`l find how to speed it up (  just rewrite it in c#?) 

Comment by Andy Payne on December 14, 2011 at 7:03am

Hi claudemit,

I guess I'm a little confused as to what it is you would like to do.  How many sensors do you have in your setup?  There are a few different ways to tackle this problem... I'm just trying to find out the most efficient way to do it.  

As I said, the Uno Read has been setup specifically to work with the Firefly Firmata.  If you modify the Firmata (which is totally fine to do) just know that the data being sent over to Grasshopper has to be formatted the same as the original Firmata sketch.  The Uno Read component uses commas as the delimeter (where to split the data).  If you add in some of you're own data, make sure it's separated by commas and not semi-colons.  The Uno Read component isn't really that different from the Generic Serial Read component.  The biggest difference is that the Uno Read has already been setup to parse through the string of data, splitting it up at the commas and sending the values out to the right output pin.  The Generic Serial Read component just returns the overall string of information (without doing any post-processing on the string data).  So, I don't know why you would want to use both of them at the same time.  I would recommend using one or the other.  If you use the Generic Serial Read, you can basically send any string of data over the serial port... however, you may need to do some post-processing on this data (such as splitting the string up at the commas).  If you use the Uno Read, then the string has to be formatted in the exact same way as the original firmata sketch (so the same number of sensor values separated by commas).  Otherwise it will throw you an error.  Does this make sense?

Comment by claudemit on December 14, 2011 at 6:53am

Hi andy,

Thanks for your reply.
I have tyied just sending one of the sensor readings to GH each time using the Generic Serial Read component. The problem occurs when I use the uno Read component to read the other pins at the same time. So I change the Firefly firmata file to send all the information to GH using the Generic Serial Read component. I find that the Uno Read uses the comma to determine where to parse up the string coming over from the Arduino...so I change it to a semi-colon (;) ,and segment them in GH.I don't know why I can't send somthing by Generic Serial Read component and use the Uno Read at the same time.

Comment by Andy Payne on December 13, 2011 at 7:48am

Hi claudemit,

There's two different approaches you could take to get this to work.  The first, and I believe the easiest in this case, would be to use the Generic Serial Read component instead of the Uno Read.  The Uno Read has been specifically set up to work with the Firefly_Firmata and expects that the data being sent over from the Arduino has been formatted properly.  If you just try to use the code from the LadyAda tutorial, then the data doesn't match what the Uno Read component is expecting, and it throws you an error.  The Generic Serial Read component is much more flexible... Essentially, it will return anything coming over the serial port (looking for a carriage return and new line feed as the end of line marker).  I haven't test this, but you should be able to use the code (as is) from the LadyAda tutorial, and just use the Generic Serial Read to return the data.  You'll need to open the port first (just like before) but just use the Generic Read instead of the Uno Read.

The other option is hacking up the Firefly firmata to get it to work with the DHT library and so that the data is properly formatted correctly.  It looks like you were fairly close... but here are a few problems that I see. First, I see you commented out the DPin2 sensor reading line... which is completely fine... but farther down you're actually adding two sensor readings (humidity and temperature).  The Uno Read component is looking for a string with a certain amount of elements in the buffer... so if you're sending two new sensor elements, you need to comment out two of the other lines.  So, I would recommend also commenting out the DPin4 sensor reading line.  Also, I see you changed the delimter between the sensor elements to a semi-colon (;) instead of a comma (,).  The Uno Read uses the comma to determine where to parse up the string coming over from the Arduino... Thus, these need to remain as commas and not semi-colons.  As far as I can tell, the rest looks good.  Hopefully this helps.

Cheers,

Andy

Comment by claudemit on December 13, 2011 at 1:32am

hi andy,I use the DPin2 connect a Temperature &Humidity sensor AM2302 with  the library written by  http://www.ladyada.net/learn/sensors/dht.html. if I send the result to firefly meanwhile i use the "UNO read " ,it just show "solution exception:conversion from string "23.20" to type 'integer' is not valid" and not work.I have tried to change the type of the result ,as integer and  float,but it comes out similar error . So i reedit the arduino file like this,it seems to solve my problem.Firefly_UNO_Firmata.pde Please give me some suggestion.

Comment by Andy Payne on December 9, 2011 at 3:26pm

Hi claudemit.  Do you think you could upload a screenshot of your definition?  I'm just curious to know how you setup your definition/arduino sketch to see how I can help troubleshoot your problem.

Cheers,

Andy

Comment by claudemit on December 9, 2011 at 2:58pm

hi,I meet a problem,when i  send some data to grasshopper with the serial read,the UNO read shows error:solution exception:conversion from string "23.20" to type 'integer' is not valid. How can i solve this problem?

 

Members (628)

 
 
 

About

Translate

Search

© 2024   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service