QiuQiu

Robotics - Embedding篇

上位机 / 工控机 -> 通信总线 -> stm32 / 伺服控制器 -> 电机/编码器

上层控制程序

ROS / LeRobot / 自己写的代码

SocketCAN / 厂商 CAN SDK

CAN 总线

电机驱动器 1
电机驱动器 2
电机驱动器 3
...

电机

总线->

can -> 通讯总线 / 协议

代码 -> 调用厂商sdk -> sdk收发can

pcan -> pc 与 can直接的硬件/软件工具

stm32 -> mcu控制器

free rtos 高实时性的rtos, 比如你需要200 hz的去控制, 反馈, 采样, 那就需要这个东西, 比起linux没有那么多的多线程调度, interrupt, 之类的

command: 让关节旋转到35度

todo: 这个block可能用那个回比较好, mermaid

用户/程序

ROS2 / Robot Controller

Trajectory Planner

Joint Controller

EtherCAT / CAN

Servo Drive / STM32

Motor

Encoder

反馈一路返回

串口(Serial Port)

一种通信方式, 常见的比如uart, 数据不是很多一起传, 而是一位一位按顺序传. 最简单的uart 比如有, 发送(TX) 接收(RX) GND

寄存器 (register)

cpu / mcu 里的一小块 芯片内部速度最快的一小块存储空间.

外设寄存器

通常用途:

  1. 状态寄存器:硬件写,CPU 读
  1. 控制寄存器:CPU 写,硬件执行

bit 0 = 1 → 开启 UART bit 1 = 1 → 开启接收中断 bit 2 = 1 → 开启自动重传

  1. 数据寄存器:在 CPU 和外设之间传数据
CPU 把 0x41 写入 UART 数据寄存器 → UART 发送字符 A

CPU 寄存器 用途不固定,数值不断变化

int c = a + b;

R0 ← a

R1 ← b

R2 ← R0 + R1

有些寄存器的用途也是固定的