1. 机器人系统概述:从定义到实战全景
各位同学,欢迎来到《机器人系统开发从零到联调》的第一章。我是你们这门课的主讲,一个在机器人行业摸爬滚打了十来年的老工程师。今天咱们不聊虚的,直接切入正题——搞清楚机器人到底是什么,它由哪些部分构成,以及我们这门课要带大家做什么。
说实话,我见过太多新手一上来就扎进代码和硬件里,结果做着做着就迷失了方向。为什么?因为脑子里没有一张完整的“地图”。所以第一章,咱们先把这张地图画出来。
1.1 机器人的定义与分类
先问个问题:你觉得什么是机器人?
很多人第一反应是“长得像人的机器”。其实不然。国际标准化组织(ISO)给过一个定义:机器人是一种可编程、多功能的操作机,能通过自动控制完成各种任务。说白了,只要它能感知环境、做出决策、执行动作,并且具备一定的自主性,就可以叫机器人。
核心三要素:感知 → 决策 → 执行
缺一个,都不能算严格意义上的机器人。比如一个遥控玩具车,它没有自主决策,只能算“遥控设备”。
那机器人怎么分类?我习惯从应用场景来分,这样更直观:
| 分类 | 典型代表 | 核心特点 |
|---|---|---|
| 工业机器人 | 焊接臂、码垛机 | 高精度、重复性、固定环境 |
| 服务机器人 | 扫地机、导引机器人 | 人机交互、动态环境 |
| 特种机器人 | 排爆机器人、水下机器人 | 极端环境、专用功能 |
| 移动机器人 | AGV、无人车 | 自主导航、环境感知 |
咱们这门课聚焦的就是移动机器人,具体来说是轮式移动机器人的建图与导航。为什么选这个?因为它是目前最成熟、应用最广、也最适合入门实战的方向。
1.2 机器人系统组成:机械、电气、软件
一个完整的机器人系统,就像一个人。机械是骨架,电气是肌肉和神经,软件是大脑。三者缺一不可。
1.2.1 机械系统
机械部分决定了机器人的“体格”。对于移动机器人,主要包括:
- 车体结构:底盘、外壳、悬挂
- 运动机构:轮子、履带、转向机构
- 负载接口:安装支架、传感器固定座
我记得刚入行时做过一个项目,机械设计没考虑重心位置,结果机器人一加速就翻车。嗯,后来花了整整一周改结构。所以大家记住:机械是基础,基础不牢,地动山摇。
1.2.2 电气系统
电气部分相当于机器人的“动力和神经”。核心组件有:
- 主控板:比如STM32、Jetson Nano、树莓派
- 电机驱动:直流电机、步进电机、伺服电机
- 传感器:激光雷达、IMU、编码器、摄像头
- 电源管理:电池、稳压模块、电量检测
个人建议:新手选型时,主控尽量选社区支持好的,比如树莓派或Jetson系列。出了问题网上搜一搜,能省很多时间。我曾经为了省成本选了个冷门主控,结果驱动写了一个月……
1.2.3 软件系统
软件是机器人的“灵魂”。它负责把硬件的能力调度起来。软件栈通常分三层:
- 底层驱动:直接操作硬件,读写传感器、控制电机
- 中间件:负责模块间通信,最典型的就是ROS
- 应用层:建图、导航、路径规划等算法
这三层的关系,我画了张图,大家一看就明白:
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 课程项目总览:移动机器人建图导航
好,前面铺垫了这么多,终于到重点了——咱们这门课到底要做什么?
简单说,我们要从零开始,搭建一台能自主建图、自主导航的轮式移动机器人。具体来说,整个课程会带大家完成以下核心模块:
- 硬件搭建:选型、组装、接线
- 底层驱动:STM32控制电机、读取编码器
- ROS2通信:搭建分布式节点网络
- SLAM建图:使用激光雷达构建环境地图
- 自主导航:路径规划、避障、定位
- 联调实战:把以上所有模块整合起来,跑通完整流程
下面这张图,就是咱们整个课程的技术路线:
你可能会问:这么多内容,我能跟下来吗?
我的回答是:只要你有C语言基础和一点Linux常识,跟着我一步步走,完全没问题。这门课的设计原则就是“从零到联调”——每个知识点我都会先讲清楚原理,再给代码,最后带大家调试。而且我会把我在项目中踩过的坑、总结的经验,毫无保留地分享出来。
学习建议:别急着一次看完。每章结束后,动手把代码敲一遍。机器人开发是“做”出来的,不是“看”出来的。我见过太多人收藏了无数教程,结果一个都没跑通。别做收藏家,做实干家。