Light Painting Butterfly Animation

ROS, Python, Motion Planning
Higor Alves De Freitas
Luke Hillery
David Prior Hope
Pauline Ng
Harvey Upton
A stop-motion animation, where each frame is a long-exposure photo of a butterfly, drawn by the Franka Emika Panda robot holding an LED torch. The butterfly was designed in Rhino, Python code was developed to create a motion plan, poses and time functions were visualised using RViz and then implemented on the actual robot arm.
1. Animation Sequencing
A low-poly model of a butterfly was created in Rhino 3D and Grasshopper plugin and iteratively altered for each frame of the animation to make the butterfly flap its wings.
2. Coordinate Generation
These models were used to generate the paths needed to trace the butterfly in 3D space. The frame sequence was then treated as individual frames, with the coordinates of each one being extracted and processed to eliminate duplicate points. The coordinates were processed to prevent duplicate paths. The paths were combined into a complete cartesian-based trajectory and stored as a list of coordinates.
3. Motion Planning
A motion plan was then generated for each frame using the coordinate list. Code to iterate over the list of frames and plan each motion was developed.
4. Simulation
All poses and time functions were simulated in RViz and Gazebo. RViz settings were altered to recreate light painting within the program’s viewport.
5. Implementation
Once simulated successfully, the code was implemented on Franka Emika’s Panda robotic arm using ROS. An end-effector attachment containing a controllable LED was simultaneously developed and manufactured to facilitate light painting
6. Image Capture
Once the code successfully ran repeatedly on the Panda robot, long-exposure photographs were captured of the motion. These photographs were then collated and displayed in sequence to create an animation of a butterfly in flight.

If you’re interested in a more in-depth explanation, please see the documentation here.