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)。若输出结果满足上述条件,则几何参数设定与初始支腿长度计算正确。
说明:图中展示基座与动平台铰点的俯视投影关系,绿色连线代表支腿。由于上下铰点相位错开30°,在俯视投影中支腿呈对称分布,保证初始位姿下各支腿长度一致。