Configuration Space
- 又称: C-space, joint space, configuration manifold
- 类别: Foundations & spatial maths › Kinematics
- 标签: motion-planning, kinematics, collision-avoidance, path-planning, robot-arms
机器人所有可能构型组成的空间,其中每个点确定每一个关节值或物体位姿,从而把运动规划变成为单个点寻找路径。
定义
构型空间(Configuration space),或称 C 空间(C-space),是机器人所能取的所有构型的集合,其中一个构型是能完整确定机器人每个部分位置的最少数值集合。对于机械臂,它就是关节角向量;对于地面上的移动机器人,它是机器人的位置和航向。构型空间的维数等于机器人的自由度数。
这一概念通过 Tomás Lozano-Pérez 1983 年关于空间规划的工作成为运动规划的核心。其关键思想是,物理工作空间中的障碍物可以映射到构型空间中,成为 C 障碍物(C-obstacles):即机器人会发生碰撞的构型集合。剩下的部分就是自由空间。于是,为形状复杂的机器人规划无碰撞运动,就变成了在自由构型空间中为单个点寻找路径的问题。
构型空间有自己的形状。没有限位的转动关节像圆一样首尾相接,因此带有多个这种关节的机械臂,其 C 空间是类似环面的,而不是一个平直的盒子。在平面内运动的刚体,其构型空间由两个平移和一个转动组合而成。这种结构关系到如何度量距离以及如何对路径进行插值。
在高维 C 空间中,显式计算 C 障碍物是不现实的。概率路线图(PRM)和快速扩展随机树(RRT)等基于采样的规划器避开了这一点:它们对构型进行采样,用正向运动学把机器人的几何放置到工作空间中,并进行碰撞检测。基于优化的规划器同样在 C 空间中工作,同时在工作空间中评估代价。
为何重要
构型空间是运动规划的通用语言。理解它,就能明白为什么一条在工作空间中看起来很短的路径,对机器人来说可能很长甚至不可能,也能明白为什么规划器采样的是关节值而不是末端执行器位置。
主要应用
- 机械臂和移动操作机器人的无碰撞运动规划
- PRM 和 RRT 等基于采样的规划器
- 分析可达性和关节限位约束
- 必须考虑自身占地面积和航向的移动机器人的路径规划
实际应用
当操作团队用 MoveIt 等框架规划机械臂运动时,规划器在机械臂的关节空间中工作:它对关节向量进行采样,用机器人和场景的碰撞模型逐一检查,并把有效的样本连接成一条路径。工程师设置关节限位并决定哪些关节首尾相接,选择一种能适当加权大型近端关节的距离度量,并调整沿每段路径的碰撞检测分辨率,以免细小障碍物在样本之间被漏掉。
常见误解
- 构型空间与工作空间相同 — 工作空间是末端执行器能够到达的物理区域,而构型空间是关节值或物体位姿的空间
- 规划器会计算完整的 C 障碍物集合 — 在维数稍多时这就不现实了,因此大多数规划器转而检测采样得到的构型
- 构型空间总是一个由关节范围构成的平直盒子 — 转动自由度会首尾相接,使它具有弯曲的、周期性的结构
谁需要了解
- 运动规划工程师
- 学习运动学和规划的机器人专业学生
- 集成 MoveIt 等规划器的软件工程师
相关技术
- 运动规划(Motion Planning)
- 概率路线图(Probabilistic Roadmap,PRM)
- 快速扩展随机树(Rapidly-exploring Random Tree,RRT)
- MoveIt
- 碰撞检测(Collision Checking)
- 正向运动学(Forward Kinematics)
相关术语
相关项目
- Nav2: ROS 2 navigation stack with path planning and obstacle avoidance for mobile robots
- ROS Motion Planning: One repo implementing 40+ classic and learning-based robot path planners as ROS plugins
- OMPL: Sampling-based motion planning library powering MoveIt and countless robotics applications
- MoveIt 2: Motion planning framework for ROS 2 robot arms, with kinematics and collision checking
- PyRoki: Modular Python toolkit for kinematic optimization across CPU, GPU, and TPU via JAX
- mink: Python inverse kinematics library built on MuJoCo supporting 20+ robot platforms
视频
- Modern Robotics, Chapter 2.3.1: Configuration Space Topology: Northwestern Robotics