feat: 初始化项目,添加电机控制、CAN通信、QT界面等模块

This commit is contained in:
琉璃月光
2025-08-13 12:36:04 +08:00
commit 9477f25a51
60 changed files with 5816 additions and 0 deletions

62
calculate/traj_fk.py Normal file
View File

@ -0,0 +1,62 @@
import numpy as np
from fk import forwardF
import matplotlib.pyplot as plt
# 设置中文字体和解决负号显示问题
plt.rcParams['font.sans-serif'] = ['SimHei', 'WenQuanYi Zen Hei', 'FangSong'] # 按优先级选择字体
plt.rcParams['axes.unicode_minus'] = False # 显示负号 -
# 杆长参数
l1 = 50
l2 = 50
l3 = 50
l4 = 50
l5 = 50
# 初始角度(弧度)
u1_base = np.deg2rad(120) # 左侧电机初始角
u4_base = np.deg2rad(120) # 右侧电机初始角
# 设置绘图区域
plt.figure(figsize=(8, 8))
ax = plt.gca()
ax.set_xlim(-100, l5 + 100)
ax.set_ylim(-100, 100)
ax.set_aspect('equal')
ax.grid(True)
ax.set_title("五连杆机构运动仿真调用FK函数")
for i in range(1, 61):
# 更新两个驱动臂的角度
angle1 = u1_base - np.deg2rad(1.75 * i) # 左侧角度变化
angle4 = u4_base + np.deg2rad(1.75 * i) # 右侧角度变化
#正向运动学函数获取末端位置和中间角度
result = forwardF(angle1, angle4, 0, 0, l1, l2, l3, l4, l5, 0, 0)
xc, yc, u2, u3 = result[:4]
# 构建各点坐标
x = [0, l1*np.cos(angle1), xc, l4*np.cos(angle4)+l5, l5]
y = [0, l1*np.sin(angle1), yc, l4*np.sin(angle4), 0]
# 清除上一帧并绘制新图形
ax.cla()
ax.set_xlim(-100, l5 + 100)
ax.set_ylim(-100, 100)
ax.set_aspect('equal')
ax.grid(True)
ax.set_title("五连杆机构运动仿真调用FK函数")
# 绘制结构线和关键点
ax.plot(x, y, 'r-o', linewidth=2, markersize=6, markerfacecolor='red')
ax.plot(x[0], y[0], 'go') # 原点
ax.plot(x[1], y[1], 'bo') # 第二个点
ax.plot(x[2], y[2], 'mo') # 中间点
ax.plot(x[3], y[3], 'co') # 第四个点
ax.plot(x[4], y[4], 'yo') # 最后一个点
plt.pause(0.1)
plt.close()