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 philipp hornung on November 22, 2012 at 12:55pm

hi,

i am new to arduino/firefly..

and trying to build a kinetic modell, run two-axis's each by a stepper motor.

thats the hardware i am using:

2x stepper nema17

http://datenblaetter.physicalcomputing.at/StepperNEMA17.pdf

---

arduino mega2560 r3

http://arduino.cc/en/Main/ArduinoBoardMega2560

---

2x stepper drivers polulu

http://www.pololu.com/catalog/product/1201

http://www.pololu.com/file/download/a4983_DMOS_microstepping_driver...

i tried to do the wiring like shown in this picture:

http://www.physicalcomputing.at/.media/825136296502.png

and here you can see the wiring in my setup:

i tried to upload the quadstepper firmata onto my arduino board but without success. (uploading the firefly firmata seems to work on the first look.)

i allways get the following errors shown in the screenshot.

what i am doing wrong? is there something incompatible... what could be the problem?

i hope someone knows the problem/a solution/hint..

thank you in advance!

philipp

Comment by lmnts on October 26, 2012 at 12:18pm

I'm trying to get more speed on a stepper motor through the Quadstepper Driver.  The max speed I can get at the moment for a Vexta Nema 17 (http://www.interinar.com/vexta-px243m-03aa.html) is about .3 rotations per second.  If I test the quad stepper on a smaller stepper like this one ((http://robotics.reefat.com/wp-content/uploads/2008/08/PF35T-48L4.pdf), I'm able to get faster speeds.

At first I thought this was a hardware/power supply issue, but I tested a sample sketch from this site: http://lusorobotica.com/index.php/topic,106.0.html on the Vexta NEMA 17 and was able to get the increased speeds I was looking for.

I can't get higher speeds than .3 rotations per second using the Quadstepper Component.  Is there any way there a line in the code which is limiting the max speed?  

Thanks for any help.

-Erick

Comment by Philipp on October 10, 2012 at 3:35pm

it will be really nice not only to test colors for similarity but also find a most similar color in the list

Comment by Andy Payne on October 4, 2012 at 8:36pm

Hi David,

I haven't seen this behavior before... but I haven't used the Engine component much (since David re-wrote the GH Timer some time ago)... although I can see the benefit of using it because of the customized timing intervals.  Out of curiosity... does the number your sending to the motor fail at a given number? Say, something outside the bounds of -32,768 to 32,767.  Or does it just fail after a given number of intervals?  Do you want to share a definition?  Also, it might be helpful to start a discussion post on this topic so we can keep all of the comments in a specific thread.

-Andy

Comment by David Stasiuk on October 4, 2012 at 5:05am

I'm trying to send timer-triggered strings through the quad stepper motor controller and am having some difficulty...it will work for several timer steps, and then simply stop driving the motors...so, for example, every second I'd like to pulse my 1st motor by -250 steps using a 1000 max speed and 1000 acceleration. The string list goes as follows:

-250,0,0,0,1000,1000,1,0

-500,0,0,0,1000,1000,1,0

-750,0,0,0,1000,1000,1,0

-1000,0,0,0,1000,1000,1,0

etc.

Using Giulio Piacentino's "theEngine" script to drive a list selection of these string instructions, one by one, results in the motor being correctly pulsed for a variable number of changes in the timer value (which is actually dependent on the timer interval itself...the longer the interval, the fewer pulses will work...in this case, if I set the interval at 1000, 8 pulses work, if I set it at 100, 42 pulses work...so strange).  But really I'm trying to feed quite a long list of changes through...we're using this to drive a wire bending machine that relies on a feeder motor, a z-rotation motor, and a bending motor.

So the motor runs for these few pulses, then simply cuts out, although the arduino LED that indicates it's reading incoming information continues to pulse along with the timer.  Anyone have any idea what may be going on?  Something about the buffer in the arduino firmata script getting overloaded?  I have no idea!

Comment by Steve Moody on August 23, 2012 at 6:02pm

I'm unaware of how to link a file in one of these posts so I'll send an email with the gh file and the TouchOSC file I've been using with it to the  info@fireflyexperiments.com address for you to check out.

Steve

Comment by Andy Payne on August 23, 2012 at 4:59pm

Hi Steve,

I think downgrading to Rhino 5.0 32-bit should solve the issue with the toolbar.

As for the OSC problem... Do you think you could send me a file that shows the issue you described.  In theory, nothing in the list should be removed (and re-added) since the messages are stored in a dictionary (key, value) and only updated if the incoming message key matches one already stored in the dictionary.  Again, nothing (from a Firefly perspective) has really changed in that regard.  Perhaps something in the Grasshopper core changed, which is causing this issue.  If you have a working file that you could send... that would be helpful so I could try to diagnose the problem.

Cheers,

Andy

Comment by Steve Moody on August 23, 2012 at 4:55pm

Thanks for the quick reply,

I am using R5 64bit, the arduino and utility tools appear, but no networking, and none of the .dlls are blocked.  When I boot up Rhino 4, all of the components are there.  I'm going to try to reinstall to see if I can get the networking stuff into R5, as that's really what I need.

On a somewhat related note, I'm trying to upgrade so I can try the updated osc listener because I ran into problems with this component when I upgraded to grasshopper 0.9.  After the upgrade, the output of the osc listener toggles between the received data and an empty list at the rate of the attached timer.  Before it would simply update the values based on the timer, but now it seems to clear all the values and reload them with each tick of the timer, and this breaks the rest of my script.  Is there a way to avoid this?

If you have any tips they will be much appreciated, otherwise I think I will just downgrade both grasshopper and firefly till everything is worked out.

Thanks again!

Comment by Andy Payne on August 23, 2012 at 4:33pm

Hey Steve,

Sorry to hear your having trouble.  Are you using Rhino 5 32-bit or 64-bit?  Just curious.  All of the components should work in 32-bit and the Arduino, Networking, and Utility tools should work in both versions.  I've tested them in Rhino 5 and they work on my machine.  If your screen looks like CarloMaria's, can you double check that all of the .gha files and .dll's have been unblocked.  To do this, right-click on each of those files (included in the installation folder) and select Properties.  On the pop-up menu, at the bottom of the page, you should see a button that says Unblock (this only appears if they are currently being blocked).  For some reason, downloading files off the internet causes some of the files to get blocked... and Rhino 5.0 is more picky about loading them in that instance.  Let me know if that helps.  Also (and I found this out recently from another user)... it's better if you don't have both 32-bit and 64-bit versions installed on your machine at the same time.  It seems that sometimes this can cause a conflict too.  When the other user uninstalled the 64-bit version, everything loaded fine in the 32-bit application.

There' haven't been any major changes to the OSC components.  I did add a couple of features mainly to parse up some of the messages sent from other applications... notably from GyrOSC (http://www.grasshopper3d.com/video/gyrosc-kangaroo).  Some of the messages are sent as lists of 4 values (like the quaternions sent in that app) or lists of 9 values (like the matrices sent using that app).  Anyway, other than adding datatype parsers for these, I didn't change anything else about the component... so it should work as before.  Let me know if you're still having trouble.

Cheers,

Andy 

Comment by Steve Moody on August 23, 2012 at 4:16pm

Hey Andy, my Firefly tab looks similar to CarloMaria's, and I wanted to make sure there isn't something I'm missing.  I've never been able to use the vision or audio tools in rhino 5, but the OSC components were invaluable to me and were working fine in 64bit rhino 5 until I upgraded to grasshopper 0.9 and the timer attached to the listener started going haywire.  Are the OSC components also broken in 64bit now?

Thanks!

 

Members (628)

 
 
 

About

Translate

Search

© 2024   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service