Skip to content

Reiky-REI/2025-writting-robot

Repository files navigation

五连杆机构写字刷题批卷机器人

GitHub stars GitHub license Build Status

基于五连杆机构的智能写字机器人系统

English | 中文文档 | 项目演示

📖 项目简介

本项目为TJUT Robotics课程中的 #10 小组作业,设计并实现了一个基于五连杆机构的智能写字刷题批卷机器人系统。该系统集成了机械设计、嵌入式控制、计算机视觉、逆运动学求解等多个技术领域,旨在打造一个高精度、高效率的自动化写字和批卷解决方案。

✨ 核心特性

  • 🎯 高精度五连杆机构 - 基于数学建模的精确逆运动学控制
  • 🧠 智能图像处理 - 集成计算机视觉和神经网络技术
  • 实时控制系统 - STM32嵌入式实时控制与Python上位机协作
  • 🎨 轨迹优化算法 - 智能笔画识别和书写路径规划
  • 📱 友好用户界面 - 基于GUI的直观操作界面

🏗️ 系统架构

graph TB
    A[用户界面层] --> B[算法处理层]
    B --> C[控制执行层]
    C --> D[硬件驱动层]
    
    A1[GUI界面] --> A
    A2[参数配置] --> A
    
    B1[图像处理] --> B
    B2[路径规划] --> B
    B3[逆运动学] --> B
    B4[神经网络] --> B
    
    C1[STM32控制器] --> C
    C2[舵机驱动] --> C
    C3[串口通信] --> C
    
    D1[五连杆机构] --> D
    D2[舵机硬件] --> D
    D3[传感器] --> D
Loading

🔧 技术栈

硬件平台

  • 主控芯片: STM32F103C8T6
  • 机械结构: 五连杆并联机构
  • 执行器: AS15-ST数字舵机
  • 通信接口: UART串口通信

软件框架

  • 嵌入式开发: STM32 HAL库 + FreeRTOS
  • 上位机: Python 3.x + OpenCV + NumPy
  • 深度学习: PyTorch + CMSIS-NN
  • 界面开发: Tkinter GUI
  • 数学计算: MATLAB/Simulink

📁 项目结构

2025-writing-robot/
├── code/                           # 源代码目录
│   ├── Rpi/                       # 树莓派/上位机代码
│   │   ├── front/                 # 前端GUI界面
│   │   │   ├── diraction_OK.py    # 方向识别和指令生成
│   │   │   ├── line_OK.py         # 线条处理算法
│   │   │   └── GUI/               # 图形界面代码
│   │   ├── Inverse/               # 逆运动学求解
│   │   │   ├── Point_C/           # C点坐标计算
│   │   │   ├── list/              # 神经网络模型
│   │   │   └── cal_cor.py         # 坐标计算
│   │   ├── main/                  # 主控制程序
│   │   ├── qwen/                  # AI视觉处理
│   │   └── Servo_Ctrl_lib/        # 舵机控制库
│   └── writening-robot-contoraller/ # STM32嵌入式代码
│       ├── Core/                  # 核心功能代码
│       │   ├── Src/               # 源文件
│       │   │   ├── main.c         # 主程序入口
│       │   │   └── User/          # 用户自定义功能
│       │   └── Inc/               # 头文件
│       ├── Drivers/               # 硬件驱动
│       │   ├── STM32F1xx_HAL_Driver/ # HAL库
│       │   └── CMSIS/             # CMSIS标准库
│       └── USB_DEVICE/            # USB通信模块
├── 机械机构/                        # SolidWorks 3D模型文件
├── 算法测试/                        # 算法验证和测试
├── 报告/                           # 技术文档和报告
└── README.MD                       # 项目说明文档

🚀 快速开始

环境要求

软件环境

Python >= 3.8
OpenCV >= 4.5.0
NumPy >= 1.20.0
PyTorch >= 1.9.0
STM32CubeIDE >= 1.7.0

硬件要求

  • STM32F103C8T6开发板
  • AS15-ST数字舵机 × 2
  • 五连杆机械结构
  • USB转串口模块

安装指南

  1. 克隆项目
git clone https://github.com/Reiky-REI/2025-writting-robot.git
cd 2025-writing-robot
  1. 安装Python依赖
cd code/Rpi
pip install -r requirements.txt
  1. 编译STM32固件
cd code/writening-robot-contoraller
# 使用STM32CubeIDE打开项目并编译
# 或使用CMake编译
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Debug
make
  1. 烧录固件
# 使用ST-Link烧录到STM32
st-flash write build/writening-robot-contoraller.bin 0x8000000

🎮 使用说明

  1. 启动系统
cd code/Rpi/main
python main.py
  1. GUI操作界面
  • 连接硬件设备
  • 选择输入图像或手写内容
  • 配置书写参数
  • 开始自动书写
  1. 命令行模式
# 直接处理图像文件
python code/Rpi/front/diraction_OK.py --input image.png --output instructions.json

# 逆运动学计算
python code/Rpi/Inverse/Point_C/inverse.py --x 10.5 --y 15.2

🧮 核心算法

五连杆逆运动学模型

系统的核心数学模型基于平面五连杆机构的逆运动学分析:

def compute_inverse_kinematics(x_pen, y_pen):
    """
    输入:笔端坐标 (x_pen, y_pen)
    输出:关节角度 (phi1, phi5)
    """
    # 平台与极坐标参数
    r_P = sqrt(x_pen**2 + y_pen**2)
    phi_0 = arctan2(y_pen, x_pen)
    
    # 闭链约束求解
    # ... (详细实现见 F.md)
    
    return phi1, phi5

图像处理与路径规划

智能图像处理管道:

def generate_writing_path(image):
    """图像到写字路径的转换"""
    # 1. 图像预处理
    skeleton = skeletonize(image)
    
    # 2. 关键点检测
    endpoints, crosspoints = detect_keypoints(skeleton)
    
    # 3. 笔画分割
    strokes = trace_strokes(skeleton, endpoints, crosspoints)
    
    # 4. 路径优化
    optimized_path = optimize_writing_order(strokes)
    
    return optimized_path

实时控制系统

STM32嵌入式控制核心:

// 舵机控制主循环
void servo_control_task(void) {
    while(1) {
        // 接收上位机指令
        if(uart_receive_command(&cmd)) {
            // 逆运动学计算
            calculate_joint_angles(cmd.x, cmd.y, &phi1, &phi5);
            
            // PWM信号生成
            set_servo_angle(SERVO_1, phi1);
            set_servo_angle(SERVO_2, phi5);
        }
        
        osDelay(10); // 100Hz控制频率
    }
}

📊 性能指标

指标 数值 说明
位置精度 ±0.1mm 笔端定位精度
重复精度 ±0.05mm 重复书写精度
工作空间 100×80mm 有效书写区域
书写速度 50mm/s 最大线性速度
控制频率 100Hz 实时控制更新率
角度分辨率 0.1° 舵机控制精度

🔬 技术创新

1. 智能轨迹优化

  • 基于图论的最短路径算法
  • 笔画连续性优化
  • 书写顺序智能调整

2. 高精度逆运动学求解

  • 闭链约束方程组数值求解
  • 多解情况的智能选择
  • 奇异点检测与避免

3. 实时视觉反馈

  • 基于OpenCV的实时图像处理
  • 深度学习字符识别
  • 自适应阈值处理

4. 模块化软件架构

  • 分层设计,易于扩展
  • 跨平台兼容性
  • 标准化通信协议

🧪 测试与验证

单元测试

# 运行所有测试
cd code/算法测试
python -m pytest tests/ -v

# 逆运动学精度测试
python test_inverse_kinematics.py

# 图像处理算法测试  
python test_image_processing.py

硬件在环测试

  • 机械精度标定
  • 舵机响应特性测试
  • 整体系统集成测试

📈 项目进展

✅ 已完成

  • 五连杆机构数学建模
  • STM32嵌入式控制系统
  • 逆运动学求解算法
  • 图像处理与路径规划
  • Python上位机软件
  • SolidWorks 3D建模
  • 硬件系统集成

🔄 进行中

  • 深度学习模型优化
  • 用户界面改进
  • 批量处理功能

📋 计划中

  • 移动端APP开发
  • 云端服务集成
  • 多机器人协作
  • AI辅助批改功能

🤝 贡献指南

我们欢迎社区贡献!请遵循以下步骤:

  1. Fork 这个项目
  2. 创建功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

代码规范

  • Python: 遵循 PEP 8
  • C/C++: 遵循 Google Style Guide
  • 提交信息: 使用 Conventional Commits

📄 许可证

本项目采用 MIT 许可证。详见 LICENSE 文件。

👥 团队成员

  • 项目负责人: Reiky-REI
  • 机械设计: [团队成员]
  • 嵌入式开发: [团队成员]
  • 算法开发: [团队成员]
  • 测试验证: [团队成员]

📞 联系我们

� 致谢

感谢以下开源项目和资源:

  • OpenCV 计算机视觉库
  • STM32 HAL 驱动库
  • PyTorch 深度学习框架
  • CMSIS 嵌入式标准

⬆ 返回顶部

Made with ❤️ by TJUT Robotics Team #10

About

2025年甜栗机器人工程课程设计作业之写字机器人之一

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors