Featured image of post 机器人 AI 资源与工具链:从嵌入式到 ROS 生态

机器人 AI 资源与工具链:从嵌入式到 ROS 生态

机器人开发软件生态完整指南:嵌入式(STM32 / FreeRTOS / uCOS / VxWorks)、机器人操作系统 ROS、仿真工具(Gazebo / V-REP / MATLAB)、常用 AI 资源社区。

软件编程资源

Python 数值计算

  • NumPy:向量、矩阵运算
  • SciPy:优化、积分、信号处理
  • Matplotlib:可视化
  • SymPy:符号计算
  • Pandas:数据分析
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import numpy as np

# 矩阵乘法
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
C = A @ B
print(C)  # [[19 22] [43 50]]

# 求逆
A_inv = np.linalg.inv(A)

# 特征值
eigenvalues, eigenvectors = np.linalg.eig(A)

C 数值计算

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#include <stdio.h>

// 一维数组实现矩阵加法
void matrix_add(int *A, int *B, int *C, int m, int n) {
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            C[i * n + j] = A[i * n + j] + B[i * n + j];
        }
    }
}

其他

  • C++:ROS 主力语言
  • Java / Kotlin:Android 机器人控制
  • HTML / JavaScript:Web 监控界面
  • PHP / Python:后端

工具软件

矢量绘图

  • Inkscape(免费开源)—— 推荐,画机械示意图
  • Adobe Illustrator(商业)—— 设计稿
  • Photoshop(商业)—— 位图
  • Draw Freely:在线矢量图

3D 设计

  • SolidWorks(商业)—— 机械设计行业标准
  • CAXA(国产)—— 二维图纸
  • Fusion 360(免费个人版)—— 入门级 CAD
  • FreeCAD(开源)—— 替代 SolidWorks

仿真

  • MATLAB / Simulink:控制算法、信号处理
  • ANSYS:力学仿真(结构、流体)
  • Adams:多体动力学
  • Gazebo(ROS 集成):3D 物理仿真
  • V-REP / CoppeliaSim:通用机器人仿真
  • Webots:跨平台
  • MuJoCo:强化学习物理仿真

操作系统

主机操作系统:Ubuntu

机器人主机首选 Ubuntu 22.04 LTS / 24.04 LTS(ROS 1/2 官方支持)。

机器人操作系统 ROS

ROS(Robot Operating System) 是开源的机器人中间件,提供:

  • 通信(话题 / 服务 / 动作)
  • 包管理
  • 工具链(RViz、rqt、rosbag)
  • 仿真(Gazebo)
1
2
3
4
ros-noetic (Ubuntu 20.04)
ros-melodic (Ubuntu 18.04)
ros2-humble (Ubuntu 22.04)
ros2-jazzy (Ubuntu 24.04)

核心概念

  • Node:一个独立进程
  • Topic:异步消息(pub/sub)
  • Service:同步请求 / 响应
  • Action:长任务 + 反馈
  • Bag:录制与回放
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
# 写一个 ROS2 节点
import rclpy
from rclpy.node import Node
from std_msgs.msg import String

class Talker(Node):
    def __init__(self):
        super().__init__('talker')
        self.publisher_ = self.create_publisher(String, 'chatter', 10)
        self.timer = self.create_timer(0.5, self.timer_callback)

    def timer_callback(self):
        msg = String()
        msg.data = 'Hello World'
        self.publisher_.publish(msg)

def main(args=None):
    rclpy.init(args=args)
    talker = Talker()
    rclpy.spin(talker)
    rclpy.shutdown()

嵌入式 RTOS

机器人单片机上的实时操作系统:

RTOS特点
FreeRTOS开源、最流行、商用友好
uCOS老牌、教材丰富(μC/OS-II/III)
VxWorks商业、航空航天用
RT-Thread国产、开源
ZephyrLinux 基金会、开源

FreeRTOS 入门:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#include "FreeRTOS.h"
#include "task.h"

void vTaskBlink(void *pvParameters) {
    while (1) {
        // 翻转 LED
        vTaskDelay(pdMS_TO_TICKS(500));
    }
}

int main(void) {
    xTaskCreate(vTaskBlink, "Blink", 128, NULL, 1, NULL);
    vTaskStartScheduler();
    while (1);
}

硬件平台

嵌入式单板

  • STM32:意法半导体,主流
  • Arduino:开源、入门
  • ESP32 / ESP8266:WiFi/BLE
  • Raspberry Pi:Linux 单板机
  • NVIDIA Jetson:GPU 加速 AI
  • BeagleBone:工业级

STM32 入门

  • 51 单片机:最老、入门
  • AVR:Arduino 核心
  • STM32:主流工业(f1 / f4 / h7 / g4 / u5 系列)

STM32 关键能力:

  • 通用定时器(输出 PWM / 输入捕获)
  • UART(串口通信)
  • SPI / I2C(传感器通信)
  • CAN(车载通信)
  • USB / Ethernet
  • ADC / DAC

常用传感器

  • 陀螺仪 / 加速度计:MPU6050、LSM6DS
  • 码盘:增量编码器
  • 红外 / 超声波:避障
  • LiDAR:RPLIDAR、Velodyne
  • 相机:USB 相机、CSI 相机
  • 深度相机:Intel RealSense、Azure Kinect、ZED

通信协议

协议用途
UART串口(最简单)
SPI高速外设(IMU、LCD)
I2C中速外设(EEPROM、传感器)
CAN汽车 / 工业
USBPC 通信
Ethernet工业网络
WiFi / BLE无线
LoRa长距离低功耗
RS485工业总线

写作与排版

  • LaTeX:学术写作黄金标准
  • Markdown:技术博客、README
  • Inkscape:矢量图
  • draw.io:流程图、架构图
  • Mermaid:Markdown 图表

常用开发板

板子价位用途
Arduino Uno100入门
Arduino Mega200多 IO
STM32F103C8T630工业入门
ESP3250WiFi/BLE
Raspberry Pi 4400Linux SBC
Raspberry Pi Pico50RP2040 双核
Jetson Nano1500边缘 AI
Jetson Orin5000+高级 AI
NUC3000+高性能

工具链

编译 / 构建

  • CMake:跨平台构建
  • catkin / colcon:ROS 构建
  • Make / Ninja:Linux 经典
  • PlatformIO:嵌入式跨平台

调试

  • GDB:命令行调试
  • VSCode + 插件:图形化调试
  • OpenOCD / J-Link:JTAG 调试
  • 串口助手:PuTTY、minicom、MobaXterm

版本控制

  • Git:必备
  • Git LFS:大文件
  • DVC:数据版本控制

在线学习资源

课程

  • CourseraRobotics Specialization (UPenn)
  • edX:MIT 6.832 机器人运动学
  • 中国大学 MOOC:机器人学(中南大学)
  • Bilibili(中文免费):ROS 教程、古月居
  • Udacity:Self-Driving Car Nanodegree

社区

  • ROS Discourse:https://discourse.ros.org/
  • ROS Answers:https://answers.ros.org/
  • GitHub Awesome Robotics:https://github.com/jslee02/awesome-robotics
  • 古月居(中文):https://www.guyuehome.com/
  • ROSClub(中文)
  • 知乎机器人话题

论文 / 文献

  • arXiv Robotics:https://arxiv.org/list/cs.RO/recent
  • IEEE Robotics and Automation
  • ICRA / IROS / RSS:顶会

实践项目路径

Level 1:单片机基础

  1. Arduino 流水灯
  2. STM32 GPIO / 定时器
  3. UART 串口通信
  4. PWM 控制舵机
  5. I2C 读 MPU6050

Level 2:移动机器人

  1. 4 轮小车驱动
  2. 编码器测速
  3. PID 巡线
  4. IMU 姿态估计
  5. ROS 集成

Level 3:自主导航

  1. SLAM 建图(gmapping / cartographer)
  2. 路径规划(move_base / nav2)
  3. 自主避障
  4. 多传感器融合(激光 + 视觉)
  5. ROS2 迁移

Level 4:机械臂 / 无人机

  1. 机械臂 DH 参数建模
  2. 正逆运动学
  3. MoveIt 运动规划
  4. 视觉抓取
  5. 多机协同

2017 vs 2024 视角:工具链 & STM32 库版本

本文写于 2017 年(ROS Kinetic、STM32 HAL 刚发布、FreeRTOS 还是 Richard Barry 一个人在维护)。7 年后(2024)回望,机器人开发栈已经发生显著变化。下面是当前可用的版本与替代方案

1. ROS / ROS 2 版本对照(2024)

版本时间状态(2024+)配套 Ubuntu
ROS Kinetic2016-2021已 EOLUbuntu 16.04
ROS Melodic2018-2023已 EOLUbuntu 18.04
ROS Noetic2020-2025-05即将 EOL(最后 ROS 1 LTS)Ubuntu 20.04
ROS 2 Humble2022-2027-05当前推荐 LTSUbuntu 22.04
ROS 2 Jazzy2024-2029-052024 新 LTSUbuntu 24.04

2024+ 新项目必须用 ROS 2 Humble 或 Jazzy。ROS 1 Noetic 还有 1 年寿命,不要再开新坑。

2. STM32 库版本(2024 视角)

本文 2017 写时 STM32 HAL 还很新。今天的状态:

2017 状态2024 状态选哪个
标准外设库(StdPeriph)主流2017 已 ST 官方弃用❌ 不要再用
HAL刚发布当前主流,覆盖全系列✅ 大多数项目
LL(Low-Layer)刚发布性能敏感场景首选✅ 电机控制、高速 ADC
CMSIS Driver雏形统一驱动接口,可移植性强✅ 跨平台项目
TouchGFX收购ST 官方 GUI 框架✅ STM32H7 带屏项目
STM32CubeIDE收购 AtollicST 官方 IDE(替代 TrueSTUDIO)✅ 替代 Eclipse 工程

实战建议(2024)

  • 新项目:CubeMX 生成 HAL 工程,IDE 用 STM32CubeIDE(免费)
  • 性能关键路径:用 LL(Low-Layer)替代 HAL(开销小 10~30 倍)
  • 电机控制 / 电源:用 HAL + LL 混编(启动用 HAL,高频中断用 LL)
  • GUI:TouchGFX(替代 emWin)+ LTDC 控制器

ST 主流 MCU 系列(2024 现状)

系列性能典型应用
STM32F0 / G0入门GPIO、UART、简单控制
STM32F1 / F3经典工业控制、电机驱动
STM32F4 / H7高性能图像处理、复杂算法
STM32G4电机控制专用数字电源、BLDC/PMSM
STM32H5 / H7高安全 / 高速汽车、工业网关
STM32U5超低功耗IoT、电池设备
STM32MP1Cortex-A7 + M4 双核Linux + RTOS 协同
STM32N62024 新品,NPU 加速边缘 AI 推理

3. FreeRTOS 现状(2024)

  • FreeRTOS 仍由 Amazon 维护(2017 年被 AWS 收购后持续投入)
  • FreeRTOS Kernel V10 / V11:现代 API,支持 SMP(多核对称)
  • FreeRTOS + TCP:自带 TCP/IP 协议栈(替代 lwIP 的轻量场景)
  • Zephyr(Linux 基金会):FreeRTOS 的强劲对手,2024 设备数已经超过 FreeRTOS
  • NuttX:POSIX 兼容,PX4 / Sony Spresense 用它
  • RT-Thread(国产):国内嵌入式 RTOS 事实标准

选择建议

  • 单芯片低功耗 → FreeRTOS(成熟 + 文档多)
  • 复杂产品 + 多协议 → Zephyr(蓝牙 / LoRa / CAN 全栈)
  • 国产化 / 国内项目 → RT-Thread(本土生态、中文文档)
  • 飞控 / 无人机 → PX4 + NuttX

4. ESP32 现状(2024)

  • ESP32-S3(2022):Xtensa LX7 双核 + AI 加速,主力
  • ESP32-C3(2020):RISC-V 单核,WiFi + BLE5
  • ESP32-C6(2023):WiFi 6 + BLE5 + 802.15.4(Thread/Zigbee)
  • ESP32-H2(2023):802.15.4 + BLE5,专攻 Thread/Zigbee
  • ESP32-P4(2024 预告):高性能双核 RISC-V
  • ESP-IDF 5.x(2024):基于 CMake + Ninja + idf.py,告别老旧 make
  • Matter 协议(CSA 联盟):智能家居统一标准,ESP32 全系支持

5. AI 训练 / 推理框架

用途2017 主流2024 主流
深度学习框架Caffe / TensorFlow 1.x / PyTorch 0.1PyTorch 2.x(事实标准) / JAX(Google) / TensorFlow 2.x(衰退)
强化学习TensorFlow + OpenAI GymStable-Baselines3 / RLlib / Isaac Gym(NVIDIA)
边缘推理TensorFlow Lite(刚发布)TensorRT / ONNX Runtime / TVM / OpenVINO
机器人策略ROS + 传统控制Octo / OpenVLA / π0 等具身基础模型

6. 中国机器人大赛现状(2024)

  • 原"全国大学生机器人大赛 Robocon"和"RoboMaster"仍然活跃
  • RoboMaster 2024(机甲大师赛):由大疆赞助,参赛队伍 300+ 高校
  • RoboMaster 2024 高中组:新增高中组
  • ICRA / IROS / RSS:仍是机器人顶会
  • 国内新赛事:中国机器人及人工智能大赛、全国大学生智能车竞赛

7. 2024 学习路径建议

  1. 基础:C / C++ / Python + ROS 2(Humble/Jazzy)
  2. 嵌入式:STM32CubeMX + HAL/LL(替代老旧 StdPeriph)
  3. 感知:OpenCV 4.x + PCL + ORB-SLAM3
  4. 控制:ROS 2 Control + ros2_control + MoveIt 2
  5. AI 入门:PyTorch 2.x + Hugging Face Transformers
  6. 前沿:Octo / OpenVLA 具身基础模型 + Isaac Sim

8. 一句话总结

2017 年是 ROS Kinetic + StdPeriph + Caffe + 传统 PID 的时代; 2024 年是 ROS 2 Jazzy + HAL/LL + PyTorch + 具身基础模型 + 国产硬件白菜价 的时代。

入门门槛没变(数学 + 编程 + 动手),但工具栈完全换代了。


下一步

  • 机器人核心技术与学习路径,看 2015-11-15《机器人核心技术与学习路径》
  • 嵌入式开发,看对应 STM32 HAL / FreeRTOS 教程(注意:已从 StdPeriph 升级到 HAL/LL
  • ROS 2 实战,看 ROS 2 Humble 官方教程

参考资料

  • ROS 官方:https://www.ros.org/
  • ROS 2 Jazzy 官方:https://docs.ros.org/en/jazzy/
  • STM32 HAL 文档:https://www.st.com/en/embedded-software/stm32cube-mcu-mpu-packages.html
  • FreeRTOS 官方:https://www.freertos.org/
  • Zephyr 官方:https://zephyrproject.org/
  • RT-Thread 官方:https://www.rt-thread.org/
  • NumPy 官方:https://numpy.org/
  • OpenCV 官方:https://opencv.org/
  • PyTorch 官方:https://pytorch.org/
  • Awesome Robotics:https://github.com/jslee02/awesome-robotics
使用 Hugo 构建
主题 StackJimmy 设计