1. 基础几何参数设定

任务目标

定义Stewart平台的基础几何参数(基座半径、动平台半径、铰点分布角度),并计算平台处于初始位姿(零平移、零旋转)时六条支腿的长度。该结果为后续正逆运动学求解提供基准。

几何参数定义

采用6-6 Stewart构型,基座与动平台铰点均按圆周均匀分布,但上下铰点相位错开30°,以避免支腿干涉。具体参数如下:

  • 基座半径 R_b = 0.8 m,动平台半径 R_p = 0.5 m
  • 基座铰点角度:θ_b_i = i × 60°(i = 0,1,...,5)
  • 动平台铰点角度:θ_p_i = i × 60° + 30°(相位偏移30°)
  • 初始位姿:动平台原点位于基座原点正上方 h = 1.0 m,无旋转(R = I)

关键完整代码

import numpy as np

# ===== 几何参数 =====
R_b = 0.8          # 基座半径 (m)
R_p = 0.5          # 动平台半径 (m)
h = 1.0            # 初始高度 (m)
n = 6              # 支腿数量

# 铰点角度(度)
base_angles_deg = np.arange(0, 360, 60)          # 0°, 60°, ..., 300°
plat_angles_deg = np.arange(0, 360, 60) + 30     # 30°, 90°, ..., 330°

# ===== 计算铰点坐标 =====
def hinge_coords(radius, angles_deg, z):
    """返回铰点三维坐标数组,形状 (6, 3)"""
    angles = np.deg2rad(angles_deg)
    x = radius * np.cos(angles)
    y = radius * np.sin(angles)
    z_arr = np.full(n, z)
    return np.column_stack((x, y, z_arr))

# 基座铰点(z=0平面)
B = hinge_coords(R_b, base_angles_deg, 0.0)

# 动平台铰点(初始位姿:z=h,无旋转)
P = hinge_coords(R_p, plat_angles_deg, h)

# ===== 计算支腿长度 =====
leg_vectors = P - B          # 每条支腿向量
leg_lengths = np.linalg.norm(leg_vectors, axis=1)

# ===== 输出结果 =====
print("基座铰点坐标 (m):")
print(np.round(B, 4))
print("\n动平台铰点坐标 (m):")
print(np.round(P, 4))
print("\n六条支腿长度 (m):")
print(np.round(leg_lengths, 4))
print(f"\n平均支腿长度: {np.mean(leg_lengths):.4f} m")

运行与验证

运行方式:需要 numpy 库。将代码保存为 stewart_geometry.py,在终端执行:

python stewart_geometry.py

验证方法:由于上下铰点均在同一高度平面内且无旋转,所有支腿长度理论值相等。根据几何关系,支腿长度 L 满足:

L = sqrt(h² + R_b² + R_p² - 2·R_b·R_p·cos(30°))

代入数值:L = sqrt(1.0² + 0.8² + 0.5² - 2×0.8×0.5×cos(30°)) ≈ 1.0264 m

通过条件:程序输出的六条支腿长度均约为 1.0264 m(允许浮点误差),且各支腿长度一致(差异小于 1e-6)。若输出结果满足上述条件,则几何参数设定与初始支腿长度计算正确。

基座 (R=0.8m, z=0) 动平台 (R=0.5m, z=1.0m) 支腿 L≈1.026m 俯视投影:上下铰点相位错开30°

说明:图中展示基座与动平台铰点的俯视投影关系,绿色连线代表支腿。由于上下铰点相位错开30°,在俯视投影中支腿呈对称分布,保证初始位姿下各支腿长度一致。