55 lines
1.5 KiB
Python
55 lines
1.5 KiB
Python
|
|
from calculate.calculate_angle import main_of_5dof
|
|||
|
|
|
|||
|
|
# control_with_serial.py
|
|||
|
|
|
|||
|
|
|
|||
|
|
# 📡 初始化串口连接
|
|||
|
|
def init_serial(port=SERIAL_PORT, baud_rate=BAUD_RATE):
|
|||
|
|
try:
|
|||
|
|
ser = serial.Serial(port, baud_rate, timeout=TIMEOUT)
|
|||
|
|
print(f"串口已连接: {port} @ {baud_rate}")
|
|||
|
|
return ser
|
|||
|
|
except Exception as e:
|
|||
|
|
print(f"无法打开串口 {port}: {e}")
|
|||
|
|
return None
|
|||
|
|
|
|||
|
|
# 📤 发送角度到串口
|
|||
|
|
def send_angles(ser, theta1_deg, theta4_deg):
|
|||
|
|
# 格式:theta1_deg,theta4_deg\n
|
|||
|
|
data = f"{int(theta1_deg)},{int(theta4_deg)}\n"
|
|||
|
|
try:
|
|||
|
|
ser.write(data.encode())
|
|||
|
|
print(f"已发送角度: theta1 = {theta1_deg}°, theta4 = {theta4_deg}°")
|
|||
|
|
except Exception as e:
|
|||
|
|
print(f"发送失败: {e}")
|
|||
|
|
|
|||
|
|
# 🚀 主程序入口
|
|||
|
|
if __name__ == "__main__":
|
|||
|
|
# 调用你的轨迹规划函数
|
|||
|
|
angles_list = main_of_5dof(
|
|||
|
|
trajectory_type='line',
|
|||
|
|
start=(0, 0),
|
|||
|
|
end=(200, 300),
|
|||
|
|
show_animation=False
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
# 初始化串口
|
|||
|
|
ser = init_serial()
|
|||
|
|
if ser is None:
|
|||
|
|
exit(1)
|
|||
|
|
|
|||
|
|
# 遍历角度列表并发送
|
|||
|
|
for i, (theta1, theta4) in enumerate(angles_list):
|
|||
|
|
theta1_deg = np.degrees(theta1)
|
|||
|
|
theta4_deg = np.degrees(theta4)
|
|||
|
|
|
|||
|
|
print(f"第 {i} 帧角度: theta1 = {theta1_deg:.2f}°, theta4 = {theta4_deg:.2f}°")
|
|||
|
|
send_angles(ser, theta1_deg, theta4_deg)
|
|||
|
|
|
|||
|
|
# 可选:每帧之间加延迟,控制发送速度
|
|||
|
|
import time
|
|||
|
|
time.sleep(0.05) # 每帧间隔 50ms
|
|||
|
|
|
|||
|
|
# 关闭串口
|
|||
|
|
ser.close()
|
|||
|
|
print("串口已关闭")
|