Skip to content
Snippets Groups Projects
Commit 0616d6d1 authored by mehtank's avatar mehtank
Browse files

Take angle from servo component

parent c4a9e24c
No related merge requests found
......@@ -4,21 +4,19 @@ from rocolib.api.Function import Function
c = newComponent("PoweredFlipper")
c.addParameter("angle", 180, paramType="angle")
c.addSubcomponent("flipper","Flipper", inherit=True, prefix=None)
c.delParameter("handlelength")
c.delParameter("pitch")
c.delParameter("yaw")
c.addSubcomponent("panel","Rectangle")
c.addSubcomponent("drive","MountedServo", inherit="servo", prefix=None)
c.addSubcomponent("drive","MountedServo", inherit=("servo", "angle"), prefix=None)
c.addSubcomponent("link","Rectangle")
h = lambda servo : f"({servo}.get('motorheight') + {servo}.get('hornheight') + {servo}.get('horndepth'))"
r = lambda servo : f"({servo}.get('hornlength'))"
yaw = lambda servo, angle : f"np.rad2deg(np.arctan2({r(servo)} * np.cos(np.deg2rad({angle})), {h(servo)}))"
pitch = lambda servo, angle : f"np.rad2deg(np.arctan2({r(servo)} * np.sin(np.deg2rad({angle})), {h(servo)}))"
yaw = lambda servo, angle : f"-np.rad2deg(np.arctan2({r(servo)} * np.cos(np.deg2rad({angle})), {h(servo)}))"
pitch = lambda servo, angle : f"-np.rad2deg(np.arctan2({r(servo)} * np.sin(np.deg2rad({angle})), {h(servo)}))"
gap = lambda servo : f"({servo}.get('motorheight') * {r(servo)} / {h(servo)})"
handlelength = lambda servo : f"(({h(servo)}**2 + {r(servo)}**2)**0.5)"
......@@ -36,7 +34,7 @@ c.addConstraint(("panel", "w"), "servo", "x.get('motorwidth')")
c.addConstraint(("drive", "length"), "servo", servolength('x'))
c.addConstConstraint(("drive", "offset"), (0,0))
c.addConstConstraint(("drive", "hornmount"), True)
c.addConstConstraint(("drive", "centermount"), True)
c.addConstConstraint(("drive", "centermount"), False)
c.addConstraint(("link", "l"), "servo", f"2*x.get('shoulderlength') + x.get('hornoffset') + {gap('x')} + 5")
c.addConstraint(("link", "w"), "servo", "x.get('motorwidth')")
......
......@@ -17,7 +17,7 @@ connections:
- - link
- l
- angle:
function: -90-np.rad2deg(np.arctan2((x[0].get('hornlength')) * np.cos(np.deg2rad(x[1])),
function: -90--np.rad2deg(np.arctan2((x[0].get('hornlength')) * np.cos(np.deg2rad(x[1])),
(x[0].get('motorheight') + x[0].get('hornheight') + x[0].get('horndepth'))))
parameter: &id001
- servo
......@@ -34,8 +34,8 @@ parameters:
angle:
defaultValue: 180
spec:
maxValue: 360
minValue: 0
maxValue: null
minValue: null
units: degrees
valueType: float
height:
......@@ -108,7 +108,9 @@ subcomponents:
classname: MountedServo
kwargs: {}
parameters:
centermount: true
angle:
parameter: angle
centermount: false
hornmount: true
length:
function: (x.get('motorlength') + 4*x.get('shoulderlength'))
......@@ -138,13 +140,13 @@ subcomponents:
- servo
- thickness
pitch:
function: np.rad2deg(np.arctan2((x[0].get('hornlength')) * np.sin(np.deg2rad(x[1])),
function: -np.rad2deg(np.arctan2((x[0].get('hornlength')) * np.sin(np.deg2rad(x[1])),
(x[0].get('motorheight') + x[0].get('hornheight') + x[0].get('horndepth'))))
parameter: *id001
thickness:
parameter: thickness
yaw:
function: np.rad2deg(np.arctan2((x[0].get('hornlength')) * np.cos(np.deg2rad(x[1])),
function: -np.rad2deg(np.arctan2((x[0].get('hornlength')) * np.cos(np.deg2rad(x[1])),
(x[0].get('motorheight') + x[0].get('hornheight') + x[0].get('horndepth'))))
parameter: *id001
link:
......
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