(formerly Grasshopper_ArduinoCommunication)
Grasshopper_Machine-Bridge is a modular, bidirectional communication framework connecting Grasshopper (Rhino), Universal Robots (UR RTDE), and Arduino/ESP32 microcontrollers.
It allows ambient sensing (light, proximity, buttons, audio cues) and robotic feedback (LEDs, buzzers, motion visualization) to work in tandem—enabling legible, expressive, and context-aware non-anthropomorphic robots.
- Bidirectional Communication: Real-time data exchange between Grasshopper, UR robots, and Arduino/ESP32.
- Multi-Protocol Support: Serial (USB) and UDP/Wi-Fi for flexible setups.
- UR Integration: Direct connection to UR and Dashboard Server for robot state feedback and motion control.
- Ambient Interaction: Translate environmental changes into robotic responses, and vice versa.
- Extensible Demo Library: Each demo showcases a unique sensing/actuation workflow—ready to fork, extend, or remix.
| Component | Notes |
|---|---|
| Grasshopper | Rhino 6, 7, 8 (ensure correct .NET runtime in Rhino 8) |
| Arduino IDE / ESP32 | Works with UNO, Mega, and ESP32 boards (Wi-Fi capable) |
| Firefly / UDP Plugins | For serial or network communication within Grasshopper |
- Rhino + Grasshopper
- Arduino IDE 2.x or ESP32 core (Installation Guide)
- Firefly Plugin (Download)
- Optional: Stable Wi-Fi connection for UDP communication
Each demo lives in /Project/demos/<demo-name>/ and includes:
serial/andudp/variants (for Arduino and ESP32).inoand.ghfiles- wiring diagrams and media assets
- a local
README.md(human guide) - a
manifest.yaml(machine-readable metadata)
Example:
/Project/demos/lux-trigger/
/serial/
LuxTrigger_Serial.gh
LuxTrigger_Serial.ino
wiring-LDR.pdf
README.md
/udp/
LuxTrigger_UDP.gh
LuxTrigger_UDP.ino
wiring-LDR-ESP32.pdf
README.md
manifest.yaml
Upload the relevant .ino from the chosen variant folder.
Use Serial for Arduino (USB) or UDP for ESP32 (Wi-Fi).
Open the corresponding .gh file.
Set COM port (Serial) or IP address (UDP).
Start streaming data bidirectionally.
- Firefly for Grasshopper (Video)
- Interactive Design with Firefly
- Arduino Getting Started Guide
- ESP32 UDP Example
/Project/
/_shared/ → Shared libraries & Grasshopper clusters
/demos/ → Individual demo projects
/templates/demo/ → Starter demo templates
/Docs/ → Technical papers, safety, RTDE notes
/Assets/ → Images & videos
LICENSE
README.md → Root overview
| File | Purpose | Audience | Example Content |
|---|---|---|---|
manifest.yaml |
Metadata for indexing, CI, and automation | Machines / scripts | name, slug, sensors, transports, board types, file paths |
README.md |
Instructions, wiring, behavior, safety notes | Humans (users / students / researchers) | setup steps, screenshots, expected output, troubleshooting |
Originally developed as Grasshopper_ArduinoCommunication, this project focused solely on serial communication.
It has since evolved into Grasshopper_Machine-Bridge, supporting multi-protocol, bidirectional communication between Grasshopper, UR RTDE, and Arduino/ESP32 hardware.
The new modular structure enables dozens of stand-alone demos, each illustrating a distinct human–robot interaction or intention visualization workflow.
If you are unfamiliar with Arduino, ESP32, or electronics, seek guidance from a qualified advisor before building physical prototypes.
Although most circuits run at low voltage (5 V), driving motors, LED strips, or actuators can require external power and introduce hazards.
Always:
- Simulate first (e.g., TinkerCAD Circuits, URSim, RoboDK).
- Keep a hardware E-Stop within reach.
- Avoid live wiring on moving robots.
- Follow institutional safety policies and wear proper PPE (gloves, glasses, ESD strap).
The authors and maintainers assume no liability for damage or injury from improper use.
Loy Wei Win
PhD Researcher, Human-Robot Interaction & Parametric Design Systems
Queensland University of Technology (QUT)
Loy W. Win, Grasshopper_Machine-Bridge: A Bidirectional Interface for Robotic Legibility, GitHub (2025)
- Fork the repository and create a feature branch.
- Follow the existing naming and documentation style.
- Add your demo under
/Project/demos/. - Include a
manifest.yamlandREADME.mdfor each variant. - Submit a Pull Request with a clear description and media assets.
- Copy
/templates/demo/serialor/templates/demo/udpinto/Project/demos/<new-demo>/. - Rename files (e.g.,
MyDemo_Serial.ino,MyDemo_Serial.gh). - Edit the demo’s
manifest.yaml. - Update the local
README.mdwith setup instructions and safety notes. - Test in simulation → tethered → Wi-Fi progression.