第一章 课程导论与预备知识

各位同学好,我是你们这门课的老张。做了十几年嵌入式,从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负责这几件事:

  1. 读取传感器:编码器、IMU、力传感器等。我习惯用定时器的编码器模式,直接读位置,省CPU资源。
  2. 执行控制算法:PID、前馈控制、甚至简单的运动学解算。STM32的F4/H7系列,算个4轴正运动学绰绰有余。
  3. 驱动执行器:通过PWM或CAN总线控制伺服电机、步进电机。
  4. 通信中转:把传感器数据打包,通过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参数法 STM32角色定位 软硬件清单 课程基础 关节/连杆/自由度 正/逆运动学 a / α / d / θ 坐标系变换 传感器读取 控制算法/通信 STM32开发板 调试工具/IDE 核心思路:先理解理论 → 再搭建环境 → 最后动手调试 每一章都会围绕这个闭环展开

这张图你看懂了吗?四个模块不是孤立的。你学运动学概念,是为了理解DH参数;你学DH参数,是为了在STM32里实现它;你准备软硬件,是为了能动手验证。一环扣一环。