Skip to content
Snippets Groups Projects
Commit 47771244 authored by pjil27's avatar pjil27
Browse files

adding Right45Triangle.py, Pivot.yaml, PivotBuilder.py

parent 2edcab26
No related merge requests found
Pipeline #74 failed with stage
in 6 minutes
from rocolib.api.components.Component import Component
c = Component()
c.addParameter("length", 76, paramType="length", minValue=65) #tested minValue
c.addParameter("width", 60, paramType="length", minValue=60) #tested minValue
c.addSubcomponent("servo", "MountedServo", inherit="angle")
c.addParameter("driveservo", "pivotservo", paramType="dimension")
c.addConstraint(("servo", "servo"), "driveservo")
c.addConstraint(("servo", "length"), "driveservo", 'getDim(x, "motorlength") + 2 * getDim(x, "shoulderlength")')
c.addConstConstraint(("servo", "center"), False)
for i in range(7):
c.addSubcomponent("belt%d" %i, "Rectangle")
c.addConstraint(("belt%d"%i, "w"), "driveservo", 'getDim(x, "motorheight")')
for i in range(3):
c.addConstraint(("belt%d"%i, "l"), ("width", "driveservo"), "(x[0]-getDim(x[1], 'motorwidth'))/2")
for i in range(3, 5):
c.addConstraint(("belt%d" % i, "l"), "driveservo", 'getDim(x, "motorlength") + 2 * getDim(x, "shoulderlength")')
for i in range(5, 7):
c.addConstraint(("belt%d"%i, "l"), "length")
c.addConnection(("servo", "botedge3"), ("belt0", "l"), angle=-90)
c.addConnection(("servo", "botedge1"), ("belt1", "l"), angle=-90)
c.addConnection(("servo", "topedge1"), ("belt3", "l"), angle=-180)
c.addConnection(("servo", "topedge3"), ("belt4", "l"), angle=-180)
c.addConnection(("belt2", "l"), ("belt4", "r"), angle=90)
c.addConnection(("belt0", "r"), ("belt5", "l"), angle=90)
c.addConnection(("belt1", "r"), ("belt6", "l"), angle=90)
c.addSubcomponent("pivotface", "Trapezoid")
c.addConstraint(("pivotface", "width"), "width", "x-(2*x*.15)")
c.addConstraint(("pivotface", "depth"), "driveservo", "getDim(x, 'motorlength')")
c.addConstraint(("pivotface", "bangle"), ("width", "driveservo"),
"float(np.atan(getDim(x[1], 'motorlength')/(x[0]*.15))* 180 * 0.318309)")
c.addConnection(("servo", "mount"), ("pivotface", "face0"))
c.inheritAllInterfaces("servo")
c.inheritAllInterfaces("pivotface")
for i in range(3):
c.inheritAllInterfaces("belt%d" %i)
c.toLibrary("Pivot")
\ No newline at end of file
connections:
connection0:
- - servo
- botedge3
- - belt0
- l
- angle: -90
connection1:
- - servo
- botedge1
- - belt1
- l
- angle: -90
connection2:
- - servo
- topedge1
- - belt3
- l
- angle: -180
connection3:
- - servo
- topedge3
- - belt4
- l
- angle: -180
connection4:
- - belt2
- l
- - belt4
- r
- angle: 90
connection5:
- - belt0
- r
- - belt5
- l
- angle: 90
connection6:
- - belt1
- r
- - belt6
- l
- angle: 90
connection7:
- - servo
- mount
- - pivotface
- face0
- {}
interfaces:
belt0.b:
interface: b
subcomponent: belt0
belt0.face:
interface: face
subcomponent: belt0
belt0.l:
interface: l
subcomponent: belt0
belt0.r:
interface: r
subcomponent: belt0
belt0.t:
interface: t
subcomponent: belt0
belt1.b:
interface: b
subcomponent: belt1
belt1.face:
interface: face
subcomponent: belt1
belt1.l:
interface: l
subcomponent: belt1
belt1.r:
interface: r
subcomponent: belt1
belt1.t:
interface: t
subcomponent: belt1
belt2.b:
interface: b
subcomponent: belt2
belt2.face:
interface: face
subcomponent: belt2
belt2.l:
interface: l
subcomponent: belt2
belt2.r:
interface: r
subcomponent: belt2
belt2.t:
interface: t
subcomponent: belt2
pivotface.botedge:
interface: botedge
subcomponent: pivotface
pivotface.face0:
interface: face0
subcomponent: pivotface
pivotface.ledge:
interface: ledge
subcomponent: pivotface
pivotface.redge:
interface: redge
subcomponent: pivotface
pivotface.topedge:
interface: topedge
subcomponent: pivotface
servo.botedge0:
interface: botedge0
subcomponent: servo
servo.botedge1:
interface: botedge1
subcomponent: servo
servo.botedge2:
interface: botedge2
subcomponent: servo
servo.botedge3:
interface: botedge3
subcomponent: servo
servo.face0:
interface: face0
subcomponent: servo
servo.face1:
interface: face1
subcomponent: servo
servo.face2:
interface: face2
subcomponent: servo
servo.face3:
interface: face3
subcomponent: servo
servo.horn:
interface: horn
subcomponent: servo
servo.mount:
interface: mount
subcomponent: servo
servo.mount.decoration:
interface: mount.decoration
subcomponent: servo
servo.slotedge:
interface: slotedge
subcomponent: servo
servo.tabedge:
interface: tabedge
subcomponent: servo
servo.topedge0:
interface: topedge0
subcomponent: servo
servo.topedge1:
interface: topedge1
subcomponent: servo
servo.topedge2:
interface: topedge2
subcomponent: servo
servo.topedge3:
interface: topedge3
subcomponent: servo
parameters:
driveservo:
defaultValue: pivotservo
spec:
valueType: str
length:
defaultValue: 76
spec:
minValue: 65
units: mm
valueType: (float, int)
servo.angle:
defaultValue: 0
spec:
maxValue: null
minValue: null
units: degrees
valueType: (float, int)
width:
defaultValue: 60
spec:
minValue: 60
units: mm
valueType: (float, int)
source: ../builders/PivotBuilder.py
subcomponents:
belt0:
classname: Rectangle
kwargs: {}
parameters:
l:
function: (x[0]-getDim(x[1], 'motorwidth'))/2
parameter: &id001
- width
- driveservo
w:
function: getDim(x, "motorheight")
parameter: driveservo
belt1:
classname: Rectangle
kwargs: {}
parameters:
l:
function: (x[0]-getDim(x[1], 'motorwidth'))/2
parameter: *id001
w:
function: getDim(x, "motorheight")
parameter: driveservo
belt2:
classname: Rectangle
kwargs: {}
parameters:
l:
function: (x[0]-getDim(x[1], 'motorwidth'))/2
parameter: *id001
w:
function: getDim(x, "motorheight")
parameter: driveservo
belt3:
classname: Rectangle
kwargs: {}
parameters:
l:
function: getDim(x, "motorlength") + 2 * getDim(x, "shoulderlength")
parameter: driveservo
w:
function: getDim(x, "motorheight")
parameter: driveservo
belt4:
classname: Rectangle
kwargs: {}
parameters:
l:
function: getDim(x, "motorlength") + 2 * getDim(x, "shoulderlength")
parameter: driveservo
w:
function: getDim(x, "motorheight")
parameter: driveservo
belt5:
classname: Rectangle
kwargs: {}
parameters:
l:
parameter: length
w:
function: getDim(x, "motorheight")
parameter: driveservo
belt6:
classname: Rectangle
kwargs: {}
parameters:
l:
parameter: length
w:
function: getDim(x, "motorheight")
parameter: driveservo
pivotface:
classname: Trapezoid
kwargs: {}
parameters:
bangle:
function: float(np.atan(getDim(x[1], 'motorlength')/(x[0]*.15))* 180 * 0.318309)
parameter: *id001
depth:
function: getDim(x, 'motorlength')
parameter: driveservo
width:
function: x-(2*x*.15)
parameter: width
servo:
classname: MountedServo
kwargs: {}
parameters:
angle:
parameter: servo.angle
center: false
length:
function: getDim(x, "motorlength") + 2 * getDim(x, "shoulderlength")
parameter: driveservo
servo:
parameter: driveservo
from rocolib.api.components import FoldedComponent
from rocolib.api.composables.graph.Face import Face
class Right45Triangle(FoldedComponent):
def define(self):
self.addParameter("height", 3, paramType="length")
self.addParameter("base", 4, paramType="length")
self.addParameter("hypotenuse", 5, paramType="length")
self.addParameter("angle", 45, paramType="angle", minValue=45, maxValue=45)
self.addEdgeInterface("hedge", "r0.e0", "height")
self.addEdgeInterface("bedge", "r0.e1", "base")
self.addEdgeInterface("hypoedge", "r0.e2", "hypotenuse")
def assemble(self):
h = self.getParameter("height")
b = self.getParameter("base")
x = h**2 + b**2
rs = []
rs.append(Face("", ((b, 0), (0,0), (0, -h))))
self.attachEdge(None, rs[0], "e0", prefix="r0", angle=90)
if __name__ == "__main__":
Right45Triangle.test()
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment