feat(arm): 电机双向夹紧与2mm厚度公差让位,立柱减重槽及文档同步更新
This commit is contained in:
+45
-15
@@ -13,12 +13,14 @@ docs/screws.json 是紧固件清单的唯一事实源(规格 / 长度 / 数量
|
||||
台阶 z=63(J1, p_fork th 54..63) / 58(其余, th 54..58);头深藏在 Ø5.6 螺丝刀通道内
|
||||
S02 P04~P08 4xM3 :下级电机 rear_mount_holes:沉孔 Ø5.5 从 -t_plate-1 到 -t_plate+4,
|
||||
台阶 z = -t_plate+4 = -4(t_plate=8)/ -3(t_plate=7),头沉入 1mm
|
||||
S03 P03 后法兰 4xM3 :J1 局部 (R27.5 @39.9°+90k, -5.5) (沉孔 Ø6.5 台阶 x=-56.5,法兰外端面 -61)
|
||||
S04 P03 前置锁紧凸台 4xM3 :J1 局部 (R27.5 @17.8/107.8/197.8/287.8°, 62.5)
|
||||
(沉孔 Ø6.0 在 Ø10 凸台端面 x=11.5,M3x10 旋入电机前端面咬合 3.5mm)
|
||||
S03 P03 后法兰 4xM3 :J1 局部 (R27.5 @39.9°+90k, -5.5) (Ø6.5 圆柱沉孔台阶 x=-56.5,法兰外端面 -61,
|
||||
圆柱头沉入 1.5mm)
|
||||
S04 P03 前置锁紧凸台 4xM3 :J1 局部 (R27.5 @17.8/107.8/197.8/287.8°, 60.5)
|
||||
(Ø6.0×2 圆柱沉孔在 Ø10 凸台内,台阶 x=9.5,M3x8 圆柱头露 1mm,旋入电机前端面咬合 3.5mm)
|
||||
S05 P01 分段对锁 8xM4x16:Ø3.9 直孔 x∈{-131,-93}, z∈{180,329}(母口壁与公榫壁同径),
|
||||
前后各拧一颗,头在 y=95 / y=161 外露(搭接壁薄不开沉孔),直接拧入自攻成型
|
||||
S06 P09 工具法兰 4xM4:R20 @0/90/180/270°,台阶 z=97(沉孔 Ø7.0 深 4mm,法兰底面 z=93)
|
||||
S06 P09 工具法兰 4xM4:R22 @0/90/180/270°(BCD44,原 R20 会与 S01 的 Ø5.6 通道咬穿沉孔),台阶 z=97(Ø7.0×4 圆柱沉孔 + Ø4.4 贯穿通孔,法兰底面 z=93,
|
||||
M4 圆柱头与法兰底面齐平)
|
||||
S07 P02 中核心 4xM5 :x∈{-135,-99}, y∈{110,146},台阶 z=6(Ø10 沉孔深 6mm,头沉入 1mm)
|
||||
S08 P02 力臂 4xM5 :(-10,76/180) + (-185,88/168),台阶 z=17(Ø10 沉孔深 5mm,头与顶面齐平)
|
||||
S09 P03 安装台 4xM4x16:x∈{-142.5,-87.5}, y∈{114.5,141.5},台阶 z=479(P03 鞍座顶面,
|
||||
@@ -27,6 +29,11 @@ docs/screws.json 是紧固件清单的唯一事实源(规格 / 长度 / 数量
|
||||
沿 +X Ø3.9 直孔穿 11mm 后壁 + 榫头同径,直接拧入自攻(榫头内咬合 4.7mm)
|
||||
S10 底座腰槽 6xM6 :3 件底座的 6 组 28x7 通腰槽中心(-97.5/120/-215 × 53/203/58/198),
|
||||
头面 z=22(底座顶面;腰槽为通槽无沉孔,桌面紧固螺栓头必然外露)
|
||||
S12 电机前端压盖 4xM3x8:J2(P04 夹 M2) / J3(P05 夹 M3) / J4(P06 夹 M4) / J5(P07 夹 M5) 各 4 颗。
|
||||
配方唯一事实源 = arm_model.motor_front_clamp(R35、4xM3x8 BCD55 @17.8°+90k、Ø6.0 沉孔
|
||||
深 3.0、沉孔台阶 = 前端盖外端面 +2.0mm、压盖背面 0.0 面压);J3 是同一套配方的 Z 轴版本
|
||||
(台阶落在 Z=(z_r-56)-2=387),半径/相位直接取 arm_model 的 CLAMP_BCD/CLAMP_CLOCK。
|
||||
孔位必须显式算全局 (x,z)/(x,y) 而不能用 to_global,原因见 instances() 内的注释。
|
||||
|
||||
长度处理:S08/S10 螺杆按真实长度会伸到底座底面(z=0)以下悬空(工作台/预埋螺母未建模),
|
||||
这里按可见段截断到 z=0,头部与孔位仍按 BOM 规格,避免出现"悬空螺杆"。
|
||||
@@ -50,6 +57,7 @@ _ROOT = os.path.dirname(_HERE)
|
||||
sys.path.insert(0, _HERE)
|
||||
|
||||
import human_layout as HL # noqa: E402
|
||||
from arm_model import CLAMP_BCD, CLAMP_CLOCK # noqa: E402 压盖孔位唯一事实源
|
||||
|
||||
X_COL = -115.0 # 立柱中心(与 arm_model.py 一致)
|
||||
Y_COL = HL.Y_AXIS # 128.0
|
||||
@@ -202,19 +210,39 @@ def instances(m2_bcd, m2_clock):
|
||||
for deg in (17.8, 107.8, 197.8, 287.8):
|
||||
u = 27.5 * math.cos(math.radians(deg))
|
||||
v = 27.5 * math.sin(math.radians(deg))
|
||||
out.append(("S04", to_global("J1", u, v, 62.5), d1, "root",
|
||||
out.append(("S04", to_global("J1", u, v, 60.5), d1, "root",
|
||||
"P03 前置锁紧凸台", "BCD55 @%.1f° -> M1 前端面" % deg))
|
||||
for u, v in REAR_SLOTS:
|
||||
out.append(("S03", to_global("J1", u, v, -5.5), tuple(-c for c in d1), "root",
|
||||
"P03 后置法兰", "BCD55 @39.9° 螺纹槽 -> M1 尾端面"))
|
||||
|
||||
# S12 P04 前端压盖 -> M2 前端盖(J2):沉孔台阶 Y=158(局部 z=58),与 S04 同 BCD55 相位
|
||||
d2 = frame("J2")[1]
|
||||
for deg in (17.8, 107.8, 197.8, 287.8):
|
||||
u = 27.5 * math.cos(math.radians(deg))
|
||||
v = 27.5 * math.sin(math.radians(deg))
|
||||
out.append(("S12", to_global("J2", u, v, 58.0), d2, "J1",
|
||||
"P04 前端压盖", "BCD55 @%.1f° -> M2 前端面(前端夹紧)" % deg))
|
||||
# S12 电机前端压盖 -> 电机前端盖:J2(P04 夹 M2) / J3(P05 夹 M3) / J4(P06 夹 M4) /
|
||||
# J5(P07 夹 M5) 各 4 颗。J2/J4/J5 三处压盖几何完全相同,J3 是同一套配方的 Z 轴版本。
|
||||
# R35、沉孔台阶都在"前端盖外端面 + 2.0mm":Y 轴是 Y_COVER+2=158,Z 轴是 (z_r-56)-2=387。
|
||||
# 4xM3x8 @BCD55 17.8°+90k、沉孔 Ø6.0 深 3.0、压盖背面与前端盖 0.0 面压,
|
||||
# 相位与 S04(P03→M1 前端锁紧)同一套约定,全机 BCD55 孔位一致。
|
||||
#
|
||||
# 孔位必须按 motor_front_clamp 的写法直接算全局 (x,z)/(x,y),不能用 to_global:
|
||||
# 压盖成孔是 fu = px + BCD*cos、fv = pz/py + BCD*sin,即 sin 项直接加在**全局**该轴上;
|
||||
# 而 frame() 的 y 轴 = d × x,对 J2/J4/J5(d=+Y, x=+X)算出 y=(0,0,-1),
|
||||
# 经 to_global 会把 v 映到全局 -z,与成孔方向差一个符号
|
||||
# -> 12 颗螺钉实例整体偏 2*27.5*sin(17.8°) = 16.81mm,每颗都落在两孔之间的实体上
|
||||
# (布尔校验:M3 圆柱头沉在 Ø6.0 沉孔里却与压盖实体重叠 71.27 mm^3,装不进去)。
|
||||
# 故此处显式用全局平面复刻成孔公式,与建模脚本一一对应。
|
||||
for tag, prox in (("J2", "P04 肩叉"), ("J3", "P05 大臂旋转座"),
|
||||
("J4", "P06 大臂骨架"), ("J5", "P07 小臂骨架")):
|
||||
dt = frame(tag)[1]
|
||||
rear = tuple(HL.AXIS[tag]["rear"])
|
||||
roll = HL.AXIS[tag]["d"][1] == 0 # J3/J6 是 roll 电机(轴向 -Z)
|
||||
for deg in CLAMP_CLOCK:
|
||||
u = CLAMP_BCD * math.cos(math.radians(deg))
|
||||
v = CLAMP_BCD * math.sin(math.radians(deg))
|
||||
hp = (rear[0] + u, rear[1] + v, rear[2] - 58.0) if roll \
|
||||
else (rear[0] + u, rear[1] + 58.0, rear[2] + v)
|
||||
out.append(("S12", hp, dt, GRP_PAR[tag],
|
||||
"%s 前端压盖" % prox,
|
||||
"BCD55 @%.1f° -> %s 电机前端盖(前端夹紧,%s 轴)"
|
||||
% (deg, tag, "Z" if roll else "Y")))
|
||||
|
||||
for x in (X_COL - 16.0, X_COL + 22.0):
|
||||
for z in (180.0, 329.0):
|
||||
@@ -224,10 +252,12 @@ def instances(m2_bcd, m2_clock):
|
||||
"P01 立柱分段缝", "z=%.0f 背面 +Y:Ø3.9 直孔(M4x16 直接拧入自攻)" % z))
|
||||
|
||||
for deg in (0.0, 90.0, 180.0, 270.0):
|
||||
x = HL.X_ARM + 20.0 * math.cos(math.radians(deg))
|
||||
y = HL.Y_AXIS + 20.0 * math.sin(math.radians(deg))
|
||||
# BCD44(R22):原 R20 与 S01 输出螺钉 Ø5.6 通道中心距仅 6.06 < 6.30,
|
||||
# 沉孔壁被咬穿成月牙形;加大到 R22 后余量 1.66mm。见 p_tool_flange 注释。
|
||||
x = HL.X_ARM + 22.0 * math.cos(math.radians(deg))
|
||||
y = HL.Y_AXIS + 22.0 * math.sin(math.radians(deg))
|
||||
out.append(("S06", (x, y, 97.0), (0.0, 0.0, -1.0), "J6",
|
||||
"P09 工具法兰", "R20 @%.0f° -> 末端工具" % deg))
|
||||
"P09 工具法兰", "R22 @%.0f° -> 末端工具" % deg))
|
||||
|
||||
for x in (-135.0, -99.0):
|
||||
for y in (110.0, 146.0):
|
||||
|
||||
Reference in New Issue
Block a user