从零到一:我的毕业设计四足蜘蛛机器人开发手记(附完整源码)

📅 2026/7/16 14:10:50
从零到一:我的毕业设计四足蜘蛛机器人开发手记(附完整源码)
1. 从课堂实验到毕业设计为什么选择四足蜘蛛机器人记得第一次在实验室看到四足机器人行走的视频时那种机械结构与生物运动完美结合的震撼感至今难忘。当时作为大二学生的我完全没想到两年后这会成为我的毕业设计选题。在决定毕业设计方向时我经历了所有工科生都会遇到的纠结是做无人机智能小车还是其他更传统的课题最终选择四足蜘蛛机器人主要基于三个考虑首先市面上成熟的开源四轴飞行器方案太多很难做出新意其次蜘蛛机器人独特的运动方式涉及更多机电一体化知识能全面检验我的专业能力最重要的是这个项目完美结合了我最感兴趣的三个技术方向——嵌入式系统、运动控制和3D建模。2. 硬件选型如何在学生预算内搭建可靠平台2.1 核心控制器选型对比作为学生项目成本控制是首要考虑。我对比了三种主流方案方案成本开发难度性能表现Arduino Uno最低最简单最弱STM32F103中等中等足够ESP32稍高较复杂最强最终选择STM32F103RCT6是因为它性价比最高72MHz主频、256KB Flash、48KB RAM足够运行实时操作系统而且学校实验室有现成的开发板和调试工具。2.2 关键执行部件舵机的选择陷阱最初贪便宜选了9元/个的SG90舵机结果调试时连续烧毁3个。后来改用SG92R金属齿轮舵机虽然单价涨到25元但扭矩达到2.5kg·cm耐用性显著提升。这里分享一个血泪教训舵机一定要预留至少30%的扭矩余量我的机器人单腿需要同时驱动3个舵机如果全用SG90根本带不动。2.3 电源系统的设计心得采用2S锂电池7.4V供电通过LM2596降压模块给舵机供电再通过AMS1117给主控板提供3.3V。实际测试发现12个舵机同时运动时电流峰值可达5A所以电源走线要用至少18AWG的硅胶线否则线材会发热严重。3. 机械结构设计3D打印实战经验3.1 从开源模型到自定义修改在Thingiverse找到一个不错的蜘蛛机器人模型但原设计是为MG996舵机准备的与我使用的SG92R尺寸不符。用Fusion 360重新设计了关节连接件重点修改了三个部位舵机安装槽的间距腿部与躯干的连接结构整体重量分布打印时建议使用PLA材料比普通PLA强度高30%。我的第一版用普通PLA打印结果调试时摔了一次就断裂了。3.2 装配过程中的实用技巧使用M2螺丝固定舵机时一定要先用手拧紧再用螺丝刀否则容易滑丝在关节处涂抹少量润滑脂能显著降低磨损用热熔胶固定线材比扎带更灵活且不易松动4. 步态算法从观察猫咪到代码实现4.1 生物运动观察与分解花了整整两周时间反复观看猫咪行走的慢动作视频发现其步态可以分解为四个阶段抬起前移Swing前移放下Stance放下后移Load后移抬起Unload但在机器人上直接实现这种步态会导致重心不稳必须调整为41模式即四条腿中总有三条处于地面接触状态。4.2 基于UCOSIII的多任务控制在STM32上移植了UCOSIII实时系统将每条腿的控制作为独立任务。关键代码如下void Leg_Task(void *p_arg) { while(1){ OS_CRITICAL_ENTER(); // 舵机角度计算 PCA_Ctrl(servo_id, target_angle); OS_CRITICAL_EXIT(); OSTimeDlyHMSM(0,0,0,50,OS_OPT_TIME_HMSM_STRICT,err); } }调试中发现任务优先级设置不当会导致腿不同步。最终解决方案是将四条腿任务设为相同优先级采用时间片轮转调度。5. 传感器集成与功能扩展5.1 MPU6050姿态稳定算法通过DMP库获取欧拉角后实现了一个简单的PID控制float stabilize_PID(float current, float target) { static float integral 0; float error target - current; integral error * dt; float derivative (error - prev_error) / dt; prev_error error; return Kp*error Ki*integral Kd*derivative; }实际测试表明在倾斜10度以内的平面都能保持平衡但响应速度还有优化空间。5.2 蓝牙遥控的帧结构设计自定义了紧凑的通信协议帧#pragma pack(1) typedef struct { uint8_t head; // 0xAA int16_t pitch; // 俯仰角 int16_t roll; // 横滚角 uint8_t checksum; // 校验和 } RemoteCmd; #pragma pack()这种二进制协议比JSON格式效率高在9600bps波特率下也能实现实时控制。6. 项目复盘与改进方向整个项目最耗时的部分是步态调试前后尝试了五种不同算法。如果重来一次我会先使用Matlab进行运动学仿真可以节省大量实物调试时间。另一个教训是电源管理后期考虑改用TI的BQ25895充电IC集成路径管理功能会更可靠。虽然毕业答辩已经通过但这个项目还有很多优化空间加入计算机视觉实现自主避障改用CAN总线提高通信可靠性设计可更换的功能模块如机械爪、摄像头等完整源码已上传至GitHub包含详细的注释和3D打印文件。对于想尝试类似项目的同学我的建议是先从双足平衡车这类简单项目入手掌握基础后再挑战四足机器人。遇到问题不要怕每个bug都是最好的学习机会。