1. 机器人系统概述:从定义到实战全景

各位同学,欢迎来到《机器人系统开发从零到联调》的第一章。我是你们这门课的主讲,一个在机器人行业摸爬滚打了十来年的老工程师。今天咱们不聊虚的,直接切入正题——搞清楚机器人到底是什么,它由哪些部分构成,以及我们这门课要带大家做什么。

说实话,我见过太多新手一上来就扎进代码和硬件里,结果做着做着就迷失了方向。为什么?因为脑子里没有一张完整的“地图”。所以第一章,咱们先把这张地图画出来。

1.1 机器人的定义与分类

先问个问题:你觉得什么是机器人?

很多人第一反应是“长得像人的机器”。其实不然。国际标准化组织(ISO)给过一个定义:机器人是一种可编程、多功能的操作机,能通过自动控制完成各种任务。说白了,只要它能感知环境、做出决策、执行动作,并且具备一定的自主性,就可以叫机器人。

核心三要素:感知 → 决策 → 执行

缺一个,都不能算严格意义上的机器人。比如一个遥控玩具车,它没有自主决策,只能算“遥控设备”。

那机器人怎么分类?我习惯从应用场景来分,这样更直观:

分类 典型代表 核心特点
工业机器人 焊接臂、码垛机 高精度、重复性、固定环境
服务机器人 扫地机、导引机器人 人机交互、动态环境
特种机器人 排爆机器人、水下机器人 极端环境、专用功能
移动机器人 AGV、无人车 自主导航、环境感知

咱们这门课聚焦的就是移动机器人,具体来说是轮式移动机器人的建图与导航。为什么选这个?因为它是目前最成熟、应用最广、也最适合入门实战的方向。

1.2 机器人系统组成:机械、电气、软件

一个完整的机器人系统,就像一个人。机械是骨架,电气是肌肉和神经,软件是大脑。三者缺一不可。

1.2.1 机械系统

机械部分决定了机器人的“体格”。对于移动机器人,主要包括:

  • 车体结构:底盘、外壳、悬挂
  • 运动机构:轮子、履带、转向机构
  • 负载接口:安装支架、传感器固定座

我记得刚入行时做过一个项目,机械设计没考虑重心位置,结果机器人一加速就翻车。嗯,后来花了整整一周改结构。所以大家记住:机械是基础,基础不牢,地动山摇。

1.2.2 电气系统

电气部分相当于机器人的“动力和神经”。核心组件有:

  • 主控板:比如STM32、Jetson Nano、树莓派
  • 电机驱动:直流电机、步进电机、伺服电机
  • 传感器:激光雷达、IMU、编码器、摄像头
  • 电源管理:电池、稳压模块、电量检测

个人建议:新手选型时,主控尽量选社区支持好的,比如树莓派或Jetson系列。出了问题网上搜一搜,能省很多时间。我曾经为了省成本选了个冷门主控,结果驱动写了一个月……

1.2.3 软件系统

软件是机器人的“灵魂”。它负责把硬件的能力调度起来。软件栈通常分三层:

  1. 底层驱动:直接操作硬件,读写传感器、控制电机
  2. 中间件:负责模块间通信,最典型的就是ROS
  3. 应用层:建图、导航、路径规划等算法

这三层的关系,我画了张图,大家一看就明白:

机器人系统组成架构 应用层 建图 | 导航 | 路径规划 | 目标识别 中间件层 ROS / ROS2 | 通信 | 数据分发 底层驱动层 电机驱动 | 传感器读取 | 串口通信 数据流向:传感器 → 驱动层 → 中间件 → 应用层 → 控制指令 → 电机 每一层都依赖下一层提供的接口,上层不关心下层的具体实现细节

1.3 ROS与ROS2生态介绍

说到机器人软件,绕不开ROS。ROS是什么?它不是操作系统,而是一个分布式通信框架。你可以把它理解成机器人的“神经系统”——各个模块(节点)通过它来收发消息。

ROS1从2007年诞生到现在,已经非常成熟。但它的缺点也很明显:实时性差、不支持多机协同、安全性弱。所以ROS2应运而生。我个人的建议是:新项目直接上ROS2,除非你有必须用ROS1的遗留依赖。

对比项 ROS1 ROS2
通信中间件 自定义TCP/UDP DDS(数据分发服务)
实时性 不支持 支持(需RT内核)
多机通信 需手动配置 原生支持
安全性 无 支持加密认证
生命周期管理 弱 强(节点可管理)

避坑指南:我曾经在一个项目里用了ROS1的导航栈,结果因为通信延迟导致机器人撞墙。后来换成ROS2,同样的算法,稳定性提升了一大截。所以,如果你做的是实时性要求高的项目,别犹豫,选ROS2。

ROS2的核心概念,大家先有个印象:

  • 节点(Node):最小的执行单元,每个节点负责一个功能
  • 话题(Topic):节点间发布/订阅的通信通道
  • 服务(Service):请求/响应的通信模式
  • 动作(Action):带反馈的长时间任务

这些概念咱们后面会反复用到,现在不理解没关系,先记住名字就行。

1.4 课程项目总览:移动机器人建图导航

好,前面铺垫了这么多,终于到重点了——咱们这门课到底要做什么?

简单说,我们要从零开始,搭建一台能自主建图、自主导航的轮式移动机器人。具体来说,整个课程会带大家完成以下核心模块:

  1. 硬件搭建:选型、组装、接线
  2. 底层驱动:STM32控制电机、读取编码器
  3. ROS2通信:搭建分布式节点网络
  4. SLAM建图:使用激光雷达构建环境地图
  5. 自主导航:路径规划、避障、定位
  6. 联调实战:把以上所有模块整合起来,跑通完整流程

下面这张图,就是咱们整个课程的技术路线:

课程项目技术路线 硬件搭建与选型 底盘 + 主控 + 传感器 底层驱动开发 电机控制 + 传感器读取 ROS2通信搭建 节点 + 话题 + 服务 SLAM建图 激光雷达 + 里程计 自主导航 路径规划 + 避障 联调实战 全系统集成测试 最终目标:一台能自主建图、自主导航、稳定运行的轮式移动机器人 每个模块都会在后续章节中详细拆解,并配有完整的代码和调试步骤

你可能会问:这么多内容,我能跟下来吗?

我的回答是:只要你有C语言基础和一点Linux常识,跟着我一步步走,完全没问题。这门课的设计原则就是“从零到联调”——每个知识点我都会先讲清楚原理,再给代码,最后带大家调试。而且我会把我在项目中踩过的坑、总结的经验,毫无保留地分享出来。

学习建议:别急着一次看完。每章结束后,动手把代码敲一遍。机器人开发是“做”出来的,不是“看”出来的。我见过太多人收藏了无数教程,结果一个都没跑通。别做收藏家,做实干家。