refactor: Separate options for Wing{L,R}
This commit is contained in:
parent
ac6710eeeb
commit
a6ddfec552
|
@ -340,6 +340,7 @@ class Flexor:
|
||||||
"""
|
"""
|
||||||
motion_span: float
|
motion_span: float
|
||||||
arm_radius: Optional[float] = None
|
arm_radius: Optional[float] = None
|
||||||
|
pos_smaller: bool = True
|
||||||
|
|
||||||
actuator: LinearActuator = LINEAR_ACTUATOR_50
|
actuator: LinearActuator = LINEAR_ACTUATOR_50
|
||||||
nut: HexNut = LINEAR_ACTUATOR_HEX_NUT
|
nut: HexNut = LINEAR_ACTUATOR_HEX_NUT
|
||||||
|
@ -358,6 +359,7 @@ class Flexor:
|
||||||
d_closed=self.actuator.conn_length,
|
d_closed=self.actuator.conn_length,
|
||||||
theta=math.radians(self.motion_span),
|
theta=math.radians(self.motion_span),
|
||||||
r=self.arm_radius,
|
r=self.arm_radius,
|
||||||
|
smaller=self.pos_smaller,
|
||||||
)
|
)
|
||||||
return r, math.degrees(phi), r_
|
return r, math.degrees(phi), r_
|
||||||
|
|
||||||
|
|
|
@ -1074,6 +1074,7 @@ class ElbowJoint(Model):
|
||||||
# Rotates the surface of the mount relative to radially inwards
|
# Rotates the surface of the mount relative to radially inwards
|
||||||
flexor_mount_angle_parent: float = 0
|
flexor_mount_angle_parent: float = 0
|
||||||
flexor_mount_angle_child: float = -90
|
flexor_mount_angle_child: float = -90
|
||||||
|
flexor_pos_smaller: bool = True
|
||||||
flexor_child_arm_radius: Optional[float] = None
|
flexor_child_arm_radius: Optional[float] = None
|
||||||
|
|
||||||
def __post_init__(self):
|
def __post_init__(self):
|
||||||
|
@ -1084,6 +1085,7 @@ class ElbowJoint(Model):
|
||||||
self.flexor = Flexor(
|
self.flexor = Flexor(
|
||||||
actuator=self.actuator,
|
actuator=self.actuator,
|
||||||
motion_span=self.motion_span,
|
motion_span=self.motion_span,
|
||||||
|
pos_smaller=self.flexor_pos_smaller,
|
||||||
arm_radius=self.flexor_child_arm_radius,
|
arm_radius=self.flexor_child_arm_radius,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -40,8 +40,6 @@ WRIST_PARAMS = dict(
|
||||||
lip_length=30,
|
lip_length=30,
|
||||||
child_arm_radius=23.0,
|
child_arm_radius=23.0,
|
||||||
parent_arm_radius=30.0,
|
parent_arm_radius=30.0,
|
||||||
hole_diam=4.0,
|
|
||||||
angle_neutral=0.0,
|
|
||||||
actuator=LINEAR_ACTUATOR_10,
|
actuator=LINEAR_ACTUATOR_10,
|
||||||
flexor_offset_angle=30.0,
|
flexor_offset_angle=30.0,
|
||||||
flexor_child_arm_radius=None,
|
flexor_child_arm_radius=None,
|
||||||
|
@ -116,12 +114,10 @@ class WingProfile(Model):
|
||||||
|
|
||||||
self.elbow_top_loc = self.elbow_bot_loc * Cq.Location.from2d(0, self.elbow_height)
|
self.elbow_top_loc = self.elbow_bot_loc * Cq.Location.from2d(0, self.elbow_height)
|
||||||
self.wrist_top_loc = self.wrist_bot_loc * Cq.Location.from2d(0, self.wrist_height)
|
self.wrist_top_loc = self.wrist_bot_loc * Cq.Location.from2d(0, self.wrist_height)
|
||||||
if self.flip:
|
self.elbow_axle_loc = self.elbow_bot_loc * \
|
||||||
self.elbow_axle_pos = 1 - self.elbow_axle_pos
|
Cq.Location.from2d(0, self.elbow_height * self.elbow_axle_pos)
|
||||||
self.elbow_axle_loc = self.elbow_bot_loc * Cq.Location.from2d(0, self.elbow_height * self.elbow_axle_pos)
|
self.wrist_axle_loc = self.wrist_bot_loc * \
|
||||||
if self.flip:
|
Cq.Location.from2d(0, self.wrist_height * self.wrist_axle_pos)
|
||||||
self.wrist_axle_pos = 1 - self.wrist_axle_pos
|
|
||||||
self.wrist_axle_loc = self.wrist_bot_loc * Cq.Location.from2d(0, self.wrist_height * self.wrist_axle_pos)
|
|
||||||
|
|
||||||
assert self.elbow_joint.total_thickness < min(self.s1_thickness, self.s2_thickness)
|
assert self.elbow_joint.total_thickness < min(self.s1_thickness, self.s2_thickness)
|
||||||
assert self.wrist_joint.total_thickness < min(self.s2_thickness, self.s3_thickness)
|
assert self.wrist_joint.total_thickness < min(self.s2_thickness, self.s3_thickness)
|
||||||
|
@ -1068,6 +1064,7 @@ class WingR(WingProfile):
|
||||||
wrist_height: float = 60.0
|
wrist_height: float = 60.0
|
||||||
wrist_joint: ElbowJoint = field(default_factory=lambda: ElbowJoint(
|
wrist_joint: ElbowJoint = field(default_factory=lambda: ElbowJoint(
|
||||||
flip=True,
|
flip=True,
|
||||||
|
angle_neutral=0.0,
|
||||||
**WRIST_PARAMS
|
**WRIST_PARAMS
|
||||||
))
|
))
|
||||||
|
|
||||||
|
@ -1292,14 +1289,17 @@ class WingL(WingProfile):
|
||||||
elbow_rotate: float = 15.0
|
elbow_rotate: float = 15.0
|
||||||
elbow_joint: ElbowJoint = field(default_factory=lambda: ElbowJoint(
|
elbow_joint: ElbowJoint = field(default_factory=lambda: ElbowJoint(
|
||||||
angle_neutral=30.0,
|
angle_neutral=30.0,
|
||||||
flexor_mount_angle_child=180,
|
flexor_mount_angle_child=170,
|
||||||
|
flexor_mount_angle_parent=-30,
|
||||||
flexor_offset_angle=15,
|
flexor_offset_angle=15,
|
||||||
|
child_lip_extra_length=5.0,
|
||||||
flexor_child_arm_radius=60.0,
|
flexor_child_arm_radius=60.0,
|
||||||
|
flexor_pos_smaller=False,
|
||||||
flip=True,
|
flip=True,
|
||||||
**ELBOW_PARAMS
|
**ELBOW_PARAMS
|
||||||
))
|
))
|
||||||
|
|
||||||
wrist_angle: float = -45.0
|
wrist_angle: float = 0.0
|
||||||
wrist_bot_loc: Cq.Location = Cq.Location.from2d(460.0, -10.0, -45.0)
|
wrist_bot_loc: Cq.Location = Cq.Location.from2d(460.0, -10.0, -45.0)
|
||||||
wrist_height: float = 43.0
|
wrist_height: float = 43.0
|
||||||
wrist_joint: ElbowJoint = field(default_factory=lambda: ElbowJoint(
|
wrist_joint: ElbowJoint = field(default_factory=lambda: ElbowJoint(
|
||||||
|
@ -1316,7 +1316,7 @@ class WingL(WingProfile):
|
||||||
arrow_height: float = 120.0
|
arrow_height: float = 120.0
|
||||||
|
|
||||||
flip: bool = True
|
flip: bool = True
|
||||||
elbow_axle_pos: float = 0.4
|
elbow_axle_pos: float = 0.5
|
||||||
wrist_axle_pos: float = 0.5
|
wrist_axle_pos: float = 0.5
|
||||||
elbow_joint_overlap_median: float = 0.5
|
elbow_joint_overlap_median: float = 0.5
|
||||||
wrist_joint_overlap_median: float = 0.5
|
wrist_joint_overlap_median: float = 0.5
|
||||||
|
@ -1326,7 +1326,7 @@ class WingL(WingProfile):
|
||||||
assert self.wrist_height <= self.shoulder_joint.height
|
assert self.wrist_height <= self.shoulder_joint.height
|
||||||
self.wrist_bot_loc = self.wrist_bot_loc.with_angle_2d(self.wrist_angle)
|
self.wrist_bot_loc = self.wrist_bot_loc.with_angle_2d(self.wrist_angle)
|
||||||
|
|
||||||
self.wrist_joint.angle_neutral = self.wrist_bot_loc.to2d_rot() + 30.0
|
self.wrist_joint.angle_neutral = self.wrist_bot_loc.to2d_rot() + 50.0
|
||||||
self.wrist_rotate = -self.wrist_joint.angle_neutral
|
self.wrist_rotate = -self.wrist_joint.angle_neutral
|
||||||
self.shoulder_joint.flip = True
|
self.shoulder_joint.flip = True
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue