Intuitive User Interaction¶
After the initial choreography is generated by the LLM, the user is given a change to reprompt the LLM and change the choreography with natural launguage. For example, the user could say "Please make the drones go faster" or really anything else. Allowing the user to speak to SwarmGPT in natural language ensures that the application is intuitive to use. If you would like to see an example interaction between the user and the llm please see the below video:
Generating Choreographies¶
The LLM will automatically generate choreographies for the drones using SwarmGPT's pre programmed primitives. When reprompting the LLM, users may find it helpful to ask it to use specific primitives. Users can prompt it with phrases like "Please use the star instead of the helix", or users can create the entire choreography themselves if they would like using primitives.
Here is a list of the primitives SwarmGPT uses:¶
Move: The drones move a specific amount in the X, Y, Z directions.
Rotate: Rotates the drone swarm.
Center: Centers the swarm.
Swap: Swaps the position of the drones in the swarm.
Move Z: The drones move up a specific amount.
Spiral: A circular swarm rotates
Spiral Speed: A faster edition of spiral.
Helix: A faster and expanding spiral.
Form Circle: Drones get in a circular formation.
Zig Zag: Drones move in a zig zag motion.
Wave: the swarm moves into a wave shape.
Twister: Drones move around a lot as if they were in a tornado.
Star: Drones go into a star formation.
Cone: Drones take the shape of a cone.
*Plan is also a primitive used by the LLM and it used to plan out drone movements when transitioning from one primitive to another.
Example LLM Output and Drone Choreography:¶
Here is an example of the LLM's output when asked to generate choreography for Clair De Lune by Debussy:
song_mood: Clair de Lune, composed by Claude Debussy, is a serene and melancholic piece that evokes a sense of tranquility and contemplation. Its flowing melodies and gentle crescendos paint a picture of moonlight reflecting off calm waters, with an underlying tone of wistfulness. cord_analysis: The piece predominantly features minor chords such as C#, F#m, A#m, and D#m, which contribute to its mellow and reflective mood. Minor chords generally evoke a more somber tone, and this piece is no exception. The occasional presence of G# and F# major chords adds a sense of contrast, giving moments of light within the overarching melancholic setting. choreography_plan: The choreography aims to mirror the serene and contemplative nature of the song while incorporating the dynamics of the beats and chords. Given the varying amplitude and novelty of the beats, the drones will engage in a mix of gentle, sweeping motions and tight, intricate patterns. The use of symmetrical formations and dynamic height changes will help create a visually captivating performance. - For the initial beats (1 to 3), the drones will form and rotate in a circle formation to reflect the calm opening. - During beats 4 to 7, as the song crescendos, the drones will transition into a cone formation, adding vertical dynamics to represent the rising intensity. - For beats 8 to 11, we will use a spiral pattern to capture the flowing melodies and the contemplative conclusion of the piece. choreography: 1: form_circle([1, 2, 3, 4, 5, 6], 100) 2: rotate(45, 'z') 3: PLAN 4: move_z([1, 2, 3, 4, 5, 6], 20) 5: form_cone(50, 60, 0) 6: PLAN 7: PLAN # Extra PLAN for the drone choreography switch 8: rotate(30, 'z') 9: move_z([1, 2, 3, 4, 5, 6], -30) 10: spiral_speed(2, 140, 180, 1.0) 11: PLAN END