diff --git a/nhf/touhou/houjuu_nue/electronics.py b/nhf/touhou/houjuu_nue/electronics.py index 300c6e0..f8ea616 100644 --- a/nhf/touhou/houjuu_nue/electronics.py +++ b/nhf/touhou/houjuu_nue/electronics.py @@ -302,19 +302,20 @@ LINEAR_ACTUATOR_21 = LinearActuator( stroke_length=21, front_hole_ext=4, back_hole_ext=4, - segment1_length=75/2, - segment2_length=75/2, + segment1_length=34, + segment2_length=34, ) LINEAR_ACTUATOR_10 = LinearActuator( - # FIXME: Measure - mass=0.0, + mass=41.3, stroke_length=10, - front_hole_ext=4.5/2, - back_hole_ext=4.5/2, - segment1_length=30.0, - segment2_length=30.0, - segment1_width=15.0, - segment2_width=21.0, + front_hole_ext=4.02, + back_hole_ext=4.67, + segment1_length=13.29, + segment1_width=15.88, + segment1_height=12.07, + segment2_length=42.52, + segment2_width=20.98, + segment2_height=14.84, ) LINEAR_ACTUATOR_HEX_NUT = HexNut( mass=0.8, diff --git a/nhf/touhou/houjuu_nue/test.py b/nhf/touhou/houjuu_nue/test.py index 465891c..6e8fd7e 100644 --- a/nhf/touhou/houjuu_nue/test.py +++ b/nhf/touhou/houjuu_nue/test.py @@ -14,6 +14,12 @@ class TestElectronics(unittest.TestCase): self.assertAlmostEqual( ME.LINEAR_ACTUATOR_30.conn_length, 83.9 ) + self.assertAlmostEqual( + ME.LINEAR_ACTUATOR_10.conn_length, 64.5 + ) + self.assertAlmostEqual( + ME.LINEAR_ACTUATOR_21.conn_length, 76.0 + ) def test_flexor(self): flexor = ME.Flexor( diff --git a/nhf/touhou/houjuu_nue/wing.py b/nhf/touhou/houjuu_nue/wing.py index 8aa4d0e..49b3283 100644 --- a/nhf/touhou/houjuu_nue/wing.py +++ b/nhf/touhou/houjuu_nue/wing.py @@ -44,6 +44,8 @@ class WingProfile(Model): root_joint: RootJoint = field(default_factory=lambda: RootJoint()) panel_thickness: float = 25.4 / 16 + # s0 is armoured + panel_thickness_s0: float = 25.4 / 8 # 1/4" acrylic for the spacer. Anything thinner would threathen structural # strength spacer_thickness: float = 25.4 / 4 @@ -242,7 +244,7 @@ class WingProfile(Model): return sketch def outer_shell_s0(self) -> Cq.Workplane: - t = self.panel_thickness + t = self.panel_thickness_s0 profile = Cq.Wire.assembleEdges(self.outer_profile_s0().edges().vals()) result = ( Cq.Workplane('XZ') @@ -254,7 +256,7 @@ class WingProfile(Model): plane.moveTo(0, self.root_height + t*2).tagPlane("top") return result def inner_shell_s0(self) -> Cq.Workplane: - t = self.panel_thickness + t = self.panel_thickness_s0 #profile = Cq.Wire.assembleEdges(self.inner_profile_s0()) result = ( Cq.Workplane('XZ') @@ -364,7 +366,7 @@ class WingProfile(Model): ] result = extrude_with_markers( self.profile_s0(top=top), - self.panel_thickness, + self.panel_thickness_s0, tags, reverse=not top, ) @@ -1139,13 +1141,15 @@ class WingR(WingProfile): angle_neutral=-20.0, child_arm_radius=23.0, parent_arm_radius=30.0, - flexor_offset_angle=30.0, - flexor_child_arm_radius=50.0, + flexor_line_length=50.0, + flexor_line_slack=3.0, + flexor_offset_angle=45.0, + flexor_child_arm_radius=None, flexor_mount_angle_parent=20, flexor_mount_angle_child=-40, hole_pos=[10, 20], lip_length=50, - actuator=LINEAR_ACTUATOR_21, + actuator=LINEAR_ACTUATOR_10, #flexor_pos_smaller=False, **WRIST_PARAMS ))