Exercise: Dynamic Array¶
The main objective of this exercise is to explore the potential for spatial pattern in a visual machine performance. The sample simulation for this exercise is an array of two-link pendulum devices. The model was partly motivated by the work of Zimoun and Daniel Rozin.
Each unit in the array has a motorized first link and a freely pivoting second link. This approach exhibits both rigidly controlled movement and dynamic reaction. This design was chosen to allow for an arbitrary degree of complexity such that direct control is not feasible, but still within the space of machines we could conceivably build.
Underactuated Systems¶
The sample machine includes an uncontrolled element in each unit which exhibits pendulum. Each unit is considered to be an underactuated system in contrast to a fully actuated system in which every degree of freedom is controlled. For example, a typical industrial robot arm has six joints, each with an servomotor actuator with position control. Within the workspace the end effector has six degrees of freedom and the pose is fully controlled. Such system frequently manipulate parts by gripping the part to rigidly connect the object kinematics to the robot.
In contrast, an underactuated system has degrees of freedom which cannot be directly controlled. Our specific interest is in systems with more degrees of freedom than actuators, resulting in one or more passive freedoms. We utilize this kind of dynamics constantly, e.g. when pushing an object across a table using one fingertip, the point contact has only two freedoms but the object has three planar freedoms, and we use our experience of friction and dynamic control to stabilize the action.
In some sense, every robotic system is underactuated. At the core, the very notion of rigid body system is an abstraction which omits freedoms. But also in practice, robots which are mobile or which manipulate objects come into contact with a great many external freedoms which may transiently become part of the robot system. E.g. a mobile robot might need to open a door, or push around objects, or grasp a flexible or articulated object.
As a creative practice, passive freedoms add dynamic kinetic possibilities to a machine in a parsimonious way. Consider the use of clothing and hair in animation: the core expressive movements of the body are amplified through the motion of the attached soft materials.
Objectives¶
After this exercise, you should be able to:
Program generative behavior to create abstract machine expression using a grid form.
Develop a simple narrative concept.
Resources
The sample Webots world is included in the reference project Webots.zip described under Webots Robot Simulator Examples.
The sample model is documented in Array.
Creative Constraints¶
The Array model is provided as a recommended system, although you are free to choose another or design your own underactuated robot. The model may also be configured for a larger number of elements as desired.
Whichever model you use, the essential principles to observe are using a regular ensemble of similar units, and creating behaviors that include a mix of programmed movements and natural dynamics.
General Recommendations¶
Try experimenting with the given system. See if you can develop different modes of expression by applying different inputs over time.
Formulate a narrative conceit. This doesn’t need to be manifest in the form, but sometimes is useful as a title.
Identify new activation patterns which could be useful for the narrative and program them into the controller. These could be as simple as the fixed patterns in the demo, but could conceivably involve significant computed animation.
Deliverables¶
A Google Doc with a brief paragraph describing your choreographic intent and outcome, submitted as per Documentation Procedure. This may be private if you prefer.
Your Python controller script, submitted as a properly-formatted block within the document.
Short video clip (less than 60 seconds) of robot performance, uploaded to the Google Shared Drive and included as a link within the document.
Zip file of your Webots project uploaded to the Google Shared Drive and linked into the document. Please note the relevant world and controller file names in your doc. Please preserve the folder structure (e.g. worlds/, protos/, controllers/) so it could be unpacked and used. If possible, please give distinctive names to your modified worlds, controllers, and protos (or delete the extraneous ones).