Download presentation
Presentation is loading. Please wait.
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.