首页
/ 机器人学入门指南:从 PythonRobotics 理解机器人的定义、发展史与核心组件

机器人学入门指南:从 PythonRobotics 理解机器人的定义、发展史与核心组件

2026-09-09 20:48:17作者:羿妍玫Ivan

本篇技术指南以 PythonRobotics 项目文档《Definition of Robotics》为骨架,系统讲解机器人的定义与词源、跨越两千余年的机器人发展时间线、构成机器人的五大关键组件,并结合 PythonRobotics 仓库中 Localization、Mapping、SLAM、PathPlanning、PathTracking 等算法模块,说明"软件与算法"这一核心组件在开源项目中的具体落地方式。读完本文,你将掌握机器人学的基本概念框架,并知道如何在本仓库中找到与之对应的每一个算法示例。

什么是机器人(What is Robotics?)

机器人学(Robotics)是研究机器人的学科,而机器人(Robot)则是能够自动或半自主执行任务的机器。

"Robot"一词来源于捷克语 "robota",意为"强制劳动"(forced labor)或"苦役"(drudgery)。该词首次出现在 1920 年的科幻舞台剧《R.U.R.》(Rossum's Universal Robots,罗梭的万能机器人)中,由捷克作家 卡雷尔·恰佩克(Karel Čapek) 创作。在剧中,机器人是被制造出来为人类服务的"人造工人",但最终发动了叛乱。此后,"机器人"一词逐渐演变为指代能够执行任务、通常具备一定智能或自主性的机器与自动化系统。

文档中还提到一组反映机器人普及现状的数据:目前全球约有 200 万台机器人在运行,且数量逐年增长;在机器人普及尤其迅速的韩国,每 1000 人中就有约 50 台机器人在运行。这些数字展示了机器人从科幻词汇走向工业与生活基础设施的进程。

机器人的发展历史(The History of Robots)

文档按照时间线梳理了机器人技术演进的五个关键阶段,涵盖从古代自动机到现代 AI 机器人的完整脉络。

古代与早期概念(公元前至 15 世纪)

"自动化机器"的理念已存在数千年,古代文明早已设想出机械生命体:

  • 古希腊(公元前 4 世纪):希腊工程师希罗(Hero of Alexandria)设计了早期的自动机(automata)——依靠水力或空气驱动的自运行机械装置。
  • 中国与阿拉伯的自动机(9–13 世纪):**伊斯梅尔·加扎利(Ismail Al-Jazari)**等发明家制造了精巧的机械装置,包括水力驱动的水钟与自动移动的机械孔雀。

现代机器人的诞生(1500–1800 年代)

  • 达·芬奇的机器人(1495 年):设计了具备机械运动能力的人形骑士。
  • 雅克·德·沃康松的消化鸭(1738 年):制作了能够"进食"和"消化"的机械鸭等仿真机械。
  • 工业革命(18–19 世纪):机器开始在工厂中取代人力劳动,为自动化奠定了基础。

工业机器人的兴起(1900–1950 年代)

  • "机器人"一词(1921 年):卡雷尔·恰佩克在《R.U.R.》中引入"robot"一词。
  • 早期控制论(1940–1950 年代):**诺伯特·维纳(Norbert Wiener)**等科学家发展了自调节机器理论(控制论,Cybernetics),深刻影响了现代机器人学。

现代机器人的诞生(1950–1980 年代)

  • 第一台工业机器人(1961 年)Unimate乔治·德沃尔(George Devol)约瑟夫·恩格尔伯格(Joseph Engelberger) 共同创造,是第一台投入工厂使用的可编程机器人。
  • AI 与自主机器人的兴起(1970–1980 年代):研究者开发了移动机器人(如斯坦福大学的 Shakey,1966 年)以及基于 AI 的控制系统。

先进机器人与 AI 融合(1990 年代至今)

  • 工业机器人:如 Baxter 协作机器人与 Amazon Robotics 仓储机器人,革新了制造与物流。
  • 自动驾驶:面向 Robotaxi 的 Waymo 自动驾驶汽车、矿业中的 AHS(Autonomous Haulage System)自主运输系统日趋成熟。
  • 探索机器人:用于行星探索(如 NASA 的 火星车)。
  • 医疗机器人:如 达·芬奇手术系统(da Vinci Surgical System) 革新了医疗行业。
  • 个人机器人:如 Roomba 扫地机器人与 Sophia(AI 人形机器人)广受欢迎。
  • 服务机器人:餐厅与酒店中的配送机器人(如 Bellabot)。
  • 协作/无人机:如无人机表演与配送服务中的 UAV(Unmanned Aerial Vehicle)。

机器人的关键组件(Key Components of Robotics)

文档将机器人系统归纳为五大关键组件:

  1. 传感器(Sensors)——从环境获取信息,例如摄像头、LiDAR、GNSS、陀螺仪、加速度计、轮式编码器。
  2. 执行器(Actuators)——实现运动与外界交互,例如电机、液压系统。
  3. 计算机(Computers)——处理传感器数据并做出决策,例如微控制器、CPU、GPU。
  4. 电源(Power Supply)——为机器人运行提供能量,例如电池、太阳能。
  5. 软件与算法(Software & Algorithms)——使机器人运转并做出智能决策,例如 ROS、机器学习模型、定位(Localization)、建图(Mapping)、路径规划(Path planning)、控制(Control)。

软件与算法组件在 PythonRobotics 中的落地

文档明确指出:PythonRobotics 项目聚焦于机器人技术中的"软件与算法"部分。这一点与仓库 README.md 中"Python codes and textbook for robotics algorithm"(面向机器人算法的 Python 代码与教科书)的定位完全一致。整个仓库的目录结构正是按算法能力域组织的,与上述软件与算法组件一一对应:

  • 定位(Localization):机器人需要知道"我在哪里"。仓库 Localization 目录提供了扩展卡尔曼滤波(EKF)、粒子滤波(PF)、直方图滤波(Histogram filter)、无迹卡尔曼滤波(UKF)、集合卡尔曼滤波(EnKF)、容积卡尔曼滤波(Cubature KF)等实现,例如 extended_kalman_filter.py 中通过 Q(预测状态协方差)与 R(观测 x-y 位置协方差)等矩阵参数完成 EKF 定位仿真。
  • 建图(Mapping):机器人需要知道"哪里是安全的"。仓库 Mapping 目录包含高斯栅格地图、射线投射栅格地图、LiDAR 转栅格地图、k-means 聚类、矩形/圆形拟合、正态分布变换(NDT)地图等。
  • SLAM:机器人需要同时回答"我在哪里"与"地图长什么样"。仓库 SLAM 目录包含 EKF-SLAM、FastSLAM 1.0/2.0、图优化 SLAM(Graph-based SLAM)、ICP 匹配等。
  • 路径规划(Path Planning):机器人需要知道"去哪里、怎么走"。仓库 PathPlanning 目录覆盖了最完整的算法族:基于栅格的搜索(Dijkstra、A*、D*、D* Lite、Theta*、广度/深度优先搜索)、基于采样的规划(RRT、RRT*、Informed RRT*、PRM、Batch Informed RRT*)、曲线生成(Bezier、B-spline、三次样条、Dubins、Reeds-Shepp、Clothoid、Catmull-Rom、Eta³)、以及动态窗口法(DWA)、Frenet 最优轨迹、状态晶格规划等。
  • 路径跟踪(Path Tracking):机器人需要知道"如何控制运动"。仓库 PathTracking 目录包含纯追踪(Pure Pursuit)、Stanley 控制、后轮反馈控制、LQR 速度与转向控制、模型预测控制(MPC)、C-GMRES 非线性 MPC 等。

此外,ArmNavigation(机械臂操作)、AerialNavigation(无人机轨迹跟踪、火箭动力着陆)、Bipedal(双足步行规划)、InvertedPendulum(倒立摆 LQR/MPC 控制)则对应机器人类型相关的专项技术。

可以推断,PythonRobotics 的文档体系正是把"机器人学概述"作为开篇,随后在 LocalizationMappingSLAMPathPlanningPathTracking 等章节逐一展开这些算法主题,形成"概念 → 原理 → 代码"的完整学习链路。

深入硬件:内外部传感器概述

虽然 PythonRobotics 聚焦算法、不含硬件,但文档指出:了解机器人硬件基础知识对理解算法同样重要,因此附录提供了传感器硬件概述,可作为本文"传感器"组件的延伸阅读:

  • 内部传感器(Internal Sensors):参见 内部传感器概述,涵盖 GNSS(卫星定位,适合室外绝对定位,但室内受限、更新率低)、陀螺仪(测量角速度,存在漂移需标定与融合)、加速度计(测量线加速度,噪声大且无法独立确定位置)、磁力计(测量磁场方向估计航向,易受电子干扰)、IMU(融合陀螺仪、加速度计与磁力计,通过卡尔曼滤波等传感器融合估计运动与姿态,长期会累积漂移)、压力传感器(估计高度)与温度传感器(安全监控)。
  • 外部传感器(External Sensors):参见 外部传感器概述,涵盖激光传感器/LiDAR(基于光速测距)、雷达/RADAR(基于无线电波测距)、单目相机(可识别颜色与亮度,但难以独立测距、弱光受限)、立体相机(利用视差测距,近距离精度高但远距离精度按距离平方下降)与超声波传感器(低成本、可探测近距离与玻璃,但量程与精度有限)。

这些传感器知识正是理解 PythonRobotics 中 particle_filter.py(利用 RFID 地标测距的定位)、lidar_to_grid_map.py(2D 距离测量转栅格地图)等示例算法输入来源的基础。

如何在本仓库中动手验证

如果你希望将本文的概念与实际算法对应起来,可以按照 运行示例代码指南 的步骤操作:

  1. 安装 Python(文档建议使用 Python 3.12.x,仓库 requirements/requirements.txt 中锁定的依赖版本包括 numpy 2.3.5、scipy 1.18.1、matplotlib 3.11.0、cvxpy 1.8.1 等)。
  2. 克隆仓库并安装依赖:
    • conda:conda env create -f requirements/environment.yml
    • pip:pip install -r requirements/requirements.txt
  3. 进入对应算法目录执行示例脚本。例如运行扩展卡尔曼滤波定位:
cd Localization/extended_kalman_filter
python extended_kalman_filter.py

运行后可观察 EKF 定位动画:通过 Q/R 协方差矩阵与 GPS 噪声模型,机器人融合运动模型与观测完成状态估计。再例如运行 A* 栅格规划:

cd PathPlanning/AStar
python a_star.py

a_star.py 中,AStarPlanner 以障碍物坐标列表(ox、oy)、栅格分辨率(resolution)与机器人半径(rr)构建障碍物地图,并通过启发式搜索输出最优路径——这正是"软件与算法"组件中路径规划能力的最小可运行示例。

小结

本文围绕 PythonRobotics 官方文档《Definition of Robotics》展开:从"robot"一词的捷克语词源出发,梳理了从古希腊自动机到现代 AI 机器人的完整发展时间线,归纳了传感器、执行器、计算机、电源、软件与算法五大核心组件,并指出 PythonRobotics 专注于其中"软件与算法"部分——这与仓库中 Localization、Mapping、SLAM、PathPlanning、PathTracking 等目录的算法实现一一对应。如果你对传感器硬件感兴趣,可继续阅读仓库附录的内部传感器外部传感器章节;如果你希望从概念走向实践,可直接运行 Extended Kalman Filter 定位A* 路径规划 等示例代码,完成从机器人学概念到算法仿真的第一步。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
33
18
docsdocs
暂无描述
Markdown
900
5.83 K
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.14 K
2.75 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
860
1.35 K
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
927
1.85 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.89 K
1.02 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
533
602
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.37 K
1.46 K
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
548
396
cann-learning-hubcann-learning-hub
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
1.04 K
526