第一章 课程导论与预备知识
各位同学好,我是你们这门课的老张。做了十几年嵌入式,从51单片机一路折腾到现在的多核ARM,中间踩过的坑、烧过的板子,说多了都是泪。今天咱们开始聊机器人运动学参数调试,说白了就是怎么让STM32把机器人的“骨头”和“关节”管明白。
我个人习惯,开课之前先搭框架。你连机器人有几个自由度、DH参数是干啥的都不清楚,上来就调PID、读编码器,那跟闭着眼睛开车没啥区别。所以这一章,咱们先把底子打好。
本章核心目标:搞懂机器人运动学的基本概念,明白DH参数法为什么是“通用语言”,清楚STM32在机器人控制里到底扮演什么角色,最后把工具和硬件备齐。
1.1 机器人运动学基础概念
运动学,说白了就是研究“动”的学问,但不考虑力。你推一下机械臂,它怎么转、转到哪,这是运动学的事。至于推的力有多大、电机会不会过热,那是动力学的事。
我遇到过不少新手,上来就问:“老师,我电机转不动,是不是运动学算错了?”其实大概率是动力学没算对,或者电流不够。嗯,这里要注意,别把锅甩给运动学。
几个关键概念,你得刻在脑子里:
- 关节(Joint):机器人的活动部位。常见的有旋转关节(像人的肩膀)和平移关节(像抽屉的滑轨)。
- 连杆(Link):关节之间的刚性部分。说白了就是“骨头”。
- 自由度(DOF):机器人能独立运动的数量。6自由度机械臂,就能在三维空间里随便摆姿势。
- 正运动学:知道每个关节的角度,求末端执行器(比如夹爪)的位置和姿态。这是“从里到外”算。
- 逆运动学:知道末端要到哪里去,反推每个关节该转多少度。这是“从外到里”算,通常更麻烦。
你想想看,调试STM32的时候,你读到的编码器数据就是关节角度,然后通过正运动学算出末端位置。如果位置不对,要么编码器坏了,要么运动学参数错了。这就是咱们这门课要解决的核心问题。
1.2 DH参数法简介
DH参数法,全称Denavit-Hartenberg参数法。这玩意儿是1955年提出的,到现在快70年了,依然是机器人学的“通用语言”。
为什么需要它?因为每个机器人长得都不一样。有的关节是歪的,有的连杆是扭的。DH参数就是一套标准化的“说明书”,用四个参数就能描述清楚两个相邻关节之间的空间关系。
这四个参数分别是:
| 参数符号 | 参数名称 | 物理含义 |
|---|---|---|
| ai-1 | 连杆长度 | 从Zi-1轴到Zi轴,沿Xi-1方向的距离 |
| αi-1 | 连杆扭转角 | 从Zi-1轴到Zi轴,绕Xi-1轴的旋转角 |
| di | 关节偏距 | 从Xi-1轴到Xi轴,沿Zi方向的距离 |
| θi | 关节角 | 从Xi-1轴到Xi轴,绕Zi轴的旋转角 |
我曾经在一个项目里,因为DH参数表里一个角度符号写反了,导致机械臂在仿真里看着正常,一上电就“抽风”。查了整整两天,最后发现是α参数的正负号搞错了。从那以后,我每次建DH表都要手算一遍验证。
我的小技巧:在STM32里建DH参数表时,建议用结构体数组,把每个关节的四个参数打包。调试时直接打印出来跟理论值对比,一眼就能看出哪个参数写错了。
1.3 STM32在机器人控制中的角色
STM32在机器人控制系统里,通常扮演“执行大脑”的角色。它不是最顶层的决策者(那是工控机或ROS干的),但它是直接跟硬件打交道的“实干家”。
具体来说,STM32负责这几件事:
- 读取传感器:编码器、IMU、力传感器等。我习惯用定时器的编码器模式,直接读位置,省CPU资源。
- 执行控制算法:PID、前馈控制、甚至简单的运动学解算。STM32的F4/H7系列,算个4轴正运动学绰绰有余。
- 驱动执行器:通过PWM或CAN总线控制伺服电机、步进电机。
- 通信中转:把传感器数据打包,通过UART、CAN或EtherCAT发给上位机。
你想想看,如果STM32的定时器配置错了,编码器读数就乱套。如果CAN总线波特率没对上,电机就“失联”。这些故障怎么定位?就是咱们这门课要手把手教你的。
注意:STM32不是万能的。别试图在F103上跑6轴逆运动学实时解算,那会卡死。该交给上位机的活,别硬扛。
1.4 课程所需硬件与软件清单
工欲善其事,必先利其器。下面是我推荐的配置,你照着准备就行。
硬件清单
| 硬件名称 | 推荐型号 | 备注 |
|---|---|---|
| STM32开发板 | STM32F407VGT6 或 STM32H743 | F4够用,H7性能更强 |
| 编码器 | 增量式光电编码器(1000线以上) | 建议带Z相零位信号 |
| 电机驱动 | TB6600 或 基于STM32的FOC驱动板 | 步进电机用TB6600,直流无刷用FOC |
| 机械臂模型 | 4轴或6轴桌面级机械臂 | 可以自己3D打印,也可以买成品 |
| 调试工具 | J-Link 或 ST-Link V2 | 必须支持SWD接口 |
| 示波器/逻辑分析仪 | Saleae Logic 8 或 国产替代 | 调试PWM和编码器信号必备 |
软件清单
- IDE:STM32CubeIDE(免费,官方推荐)或 Keil MDK(收费,但调试功能强)
- 配置工具:STM32CubeMX(生成初始化代码,省时省力)
- 串口调试:Putty 或 SSCOM(看打印数据)
- 上位机:Python + Matplotlib(简单绘图),或者 ROS(复杂系统)
- 仿真工具:MATLAB Robotics Toolbox(验证DH参数和运动学)
我个人习惯,先用MATLAB把运动学算一遍,确认参数没问题,再往STM32里移植。这样能避免“硬件调了半天,结果是算法算错了”的尴尬。
1.5 本章知识体系总览
下面这张图,把咱们第一章的核心内容串起来了。你保存好,后面每学一章,都可以回来对照一下,看看自己处在哪个位置。
这张图你看懂了吗?四个模块不是孤立的。你学运动学概念,是为了理解DH参数;你学DH参数,是为了在STM32里实现它;你准备软硬件,是为了能动手验证。一环扣一环。