Presentation is loading. Please wait.

Presentation is loading. Please wait.

Robot compiler: scripted design composition

Similar presentations


Presentation on theme: "Robot compiler: scripted design composition"— Presentation transcript:

1 Robot compiler: scripted design composition
Ankur Mehta Joe DelPreto, Vincent Kee, Roger Lo, Ben Shaya, Daniela Rus PPR meeting, 11/4/2013

2 Long-term vision $ vim myrobot.rbt
“I want a robot to cook breakfast for me” $ make myrobot Parsing specification …done. Determining behaviors …done. Generating mechanisms …done. Assembling components …done. Printing …done. Success! Ankur Mehta PPR meeting, 11/4/2013

3 Current plan User has knowledge of desired geometries and degrees and ranges of freedom. Standard user: assembles building blocks (GUI) Expert user: can generate building blocks (Python) “We need a robot with two rotating joints in series, rotating about the vertical axis. Each link is around 10cm. In ascii art form it is: | | t where | is a rotational axis, and t is the tool.” Ankur Mehta PPR meeting, 11/4/2013

4 System diagram New component design Component Library Sub- components
Parameter Inheritance Input parameters Exposed connections Composition Algorithms Implementation engine 2D Fold pattern Wiring and software Ankur Mehta PPR meeting, 11/4/2013

5 Mechanical building blocks
Ankur Mehta PPR meeting, 11/4/2013

6 Composite structures Ankur Mehta PPR meeting, 11/4/2013

7 Actuated robots Ankur Mehta PPR meeting, 11/4/2013

8 Manipulator arm design
Hand Flexure Block Finger Beam k x ( ) x n x m Ankur Mehta PPR meeting, 11/4/2013

9 Manipulator arm design
Hand Flexure Block Finger Beam k x ( ) x n x m Servo x 4 Motor Ankur Mehta PPR meeting, 11/4/2013

10 Electromechanical subsystem
Brain Ankur Mehta PPR meeting, 11/4/2013

11 Python API (expert user)
class Finger(Component): def defComponents(self): self.components.setdefault("baseknuckle", Beam()) self.components.setdefault("knuckle", Beam()) def defConnections(self): self.connections.setdefault("topedge") self.connections.setdefault("botedge") def defParameters(self): self.parameters.setdefault("count", 3) self.parameters.pop("angle") def setSubParameters(self): self.components["knuckle"].parameters["angle"] = 30 self.components["baseknuckle"].parameters["langle"] = 30 self.components["baseknuckle"].parameters["rangle"] = -30 self.components["knuckle"].parameters["length"] = self.parameters["length"] * 1.0 / self.parameters["count"] self.components["baseknuckle"].parameters["length"] = Ankur Mehta PPR meeting, 11/4/2013

12 Python API (cont.) def assemble(self): # Insert the first knuckle self.addComponent("k0", "baseknuckle") # Set the edges of the finger to that of the first knuckle self.connect("topedge", ("k0", "baseknuckle", "topedge")) self.connect("botedge", ("k0", "baseknuckle", "botedge")) for i in range(1, self.parameters["count"]): # Attach the bottom edge of the next knuckle to the top edge of the finger self.connectComponent("topedge", ("k%d" % i, "knuckle", "botedge"), FOLD) # Set the new top edge of the finger self.connect("topedge", ("k%d" % i, "knuckle", "topedge")) Ankur Mehta PPR meeting, 11/4/2013

13 Interface Ankur Mehta PPR meeting, 11/4/2013

14 Simulation and verification
Ankur Mehta PPR meeting, 11/4/2013

15 Library / database lookup
“We need a robot with two rotating joints in series, rotating about the vertical axis. Each link is around 10cm. In ascii art form it is: | | t where | is a rotational axis, and t is the tool.” “rotating joint”  ActuatedHinge “link”  Beam “the tool”  ?? Ankur Mehta PPR meeting, 11/4/2013


Download ppt "Robot compiler: scripted design composition"

Similar presentations


Ads by Google