第230篇 机械臂运动规划——关节空间和笛卡尔空间的规划策略

📅 2026/8/23 9:36:57
第230篇 机械臂运动规划——关节空间和笛卡尔空间的规划策略
前面几篇讲的轨迹优化方法最小化Jerk、B样条、TOPP都是通用工具。今天讲一个特定对象机械臂。机械臂的运动规划和移动机器人有很大区别——机械臂是高维关节空间中的规划问题而且有两种规划策略关节空间规划和笛卡尔空间规划。机械臂运动规划的核心挑战自由度多6-7轴常见双臂14轴、关节之间有耦合一个关节动末端位置和姿态都变、工作空间中有障碍物需要避碰。这些问题叠在一起让机械臂规划比移动机器人复杂得多。一、关节空间规划 vs 笛卡尔空间规划这是机械臂规划最基本的问题——在哪个空间做规划。关节空间规划直接在关节角度空间(q1, q2, ..., qn)中规划。路径是一系列关节角的序列。优点避障检测简单每个关节角对应一个确定的机械臂构型直接做碰撞检测、关节限位天然满足。缺点关节空间的直线运动在笛卡尔空间中可能是曲线——末端轨迹不可预测。笛卡尔空间规划在末端执行器的位姿空间(x, y, z, roll, pitch, yaw)中规划。路径是一系列末端位姿的序列。优点末端轨迹直观可控比如要求末端走直线就走直线。缺点每个路径点需要做逆运动学IK求解关节角IK可能无解或多解避障检测需要做正运动学FK计算整个机械臂构型。# 两种规划策略的对比 # 关节空间: 路径点在关节角空间直接插值 joint_path [q_start, q1, q2, ..., q_goal] # 笛卡尔空间: 路径点在末端位姿空间需要IK cart_path [pose_start, pose1, pose2, ..., pose_goal] for pose in cart_path: q inverse_kinematics(pose) # 可能失败工程经验大多数工业机械臂用关节空间规划——稳定、计算快、IK问题少。只在需要精确控制末端轨迹的场景焊接、涂胶、装配才用笛卡尔空间规划。路径平滑关节空间中RRT搜出来的路径通常是折线——由一系列直线段拼接而成转角处不平滑。后处理步骤先用short-cut方法减少路径点数随机选两个路径点尝试直连无碰撞就替换中间段再用最小化Jerk或B样条平滑。MoveIt2的默认流程就是RRT-Connect short-cut 三次B样条平滑。二、关节空间中的路径规划关节空间中常用的规划算法RRT/RRT*在关节空间中采样随机点逐步扩展树直到连到目标。RRT在6-7轴机械臂上表现不错——搜索空间虽然高维但RRT不受维度诅咒影响太大。缺点是路径不够优化需要后处理。PRM概率路线图预先在关节空间中随机采样大量无碰撞构型用局部规划器连接相邻构型形成图。查询时在图上搜索最短路径。PRM适合多次查询的场景比如机械臂在固定工位上反复抓取不同零件。BIT和Informed RRTRRT的改进版本。BIT用启发式引导采样收敛更快。Informed RRT*在找到第一条路径后把搜索限制在椭球区域内加速优化。这两个算法在MoveIt2中都有实现。格点法Lattice在关节空间中建立离散格点用A*搜索。只适合低自由度3-4轴的机械臂——6轴以上格点数量指数增长内存和时间都扛不住。# MoveIt2中常用的规划器选择 if dof 4: planner OMPL_RRTConnect # 低自由度用RRT-Connect elif dof 7: planner OMPL_RRTstar # 中自由度用RRT* else: planner OMPL_PRM # 高自由度用PRM三、笛卡尔空间中的轨迹规划笛卡尔空间规划的核心流程在笛卡尔空间中规划一条末端路径直线、圆弧或样条沿路径等距采样N个点对每个采样点求解IK得到关节角检查IK解的连续性——相邻点的关节角不能跳变太大在关节空间做轨迹平滑最小化Jerk或TOPPIK的连续性是个大问题。6轴机械臂的IK通常有8组解肩部/肘部/腕部各有两种选择。如果相邻路径点选了不同的IK解关节角会跳变——机械臂会突然翻转。解决方案对每个路径点计算所有IK解选择与上一个点关节角差最小的那组。笛卡尔空间规划还有一个特殊问题——奇异位形。在奇异位形附近微小的末端移动可能导致巨大的关节角变化。处理奇异位形有两种方法一是路径规划时绕开奇异区域二是用阻尼最小二乘IKDamped Least Squares在奇异附近限制关节速度。四、碰撞检测与MoveIt2机械臂的碰撞检测比移动机器人复杂得多——机械臂是多个连杆组成的 articulated body每个连杆都可能和障碍物碰撞也可能自碰撞连杆之间互相碰撞。MoveIt2ROS2的标准机械臂规划框架用FCLFlexible Collision Library做碰撞检测。FCL支持多种几何表示包围盒AABB/OBB、凸包、三角网格。工程上的加速技巧用简化几何圆柱球体代替精确CAD模型做碰撞检测——速度提升10-100倍把障碍物也用简化几何表示——复杂场景下碰撞检测是瓶颈自碰撞检测可以预计算——离线建一个关节角→自碰撞的查找表自碰撞的工程处理7轴机械臂比如Franka Emika Panda、KUKA iiwa的自碰撞检测是个难点——冗余自由度让机械臂可以在保持末端位姿不变的情况下改变肘部位置不同的肘部位置可能导致不同的自碰撞情况。工程上的做法离线采样大量关节角组合对每组做自碰撞检测建立一个允许区域的查找表。在线规划时只在这个允许区域内搜索——大幅减少碰撞检测的计算量。ABB和KUKA的控制器内部都用了这种策略。五、面试实战Q关节空间规划和笛卡尔空间规划怎么选A看任务需求。如果只要求末端到达目标位姿pick-and-place用关节空间——简单稳定。如果要求末端走特定路径焊接、涂胶用笛卡尔空间——末端轨迹可控。实际项目中两者经常混用——关节空间做全局规划避开障碍物笛卡尔空间做末端精细操作。QIK多解问题怎么处理A计算所有IK解选择和上一个路径点关节角差最小的那组。如果所有解的差值都很大超过阈值说明路径经过了奇异区域或者关节限位——需要重新规划路径。QMoveIt2的规划流程是什么A前端用OMPL的采样算法RRT-Connect、RRT*、PRM在关节空间搜索无碰撞路径后端用TOTG做时间参数化。MoveIt2还支持TrajOpt和CHOMP做轨迹优化——在OMPL路径基础上进一步平滑。TrajOpt用信赖域方法优化轨迹能处理碰撞约束和关节约束通常比OMPL的路径平滑度好20-30%。CHOMP用协方差矩阵自适应优化对障碍物有梯度信息的要求——需要ESDF欧几里得符号距离场地图。Q机械臂规划中最大的坑是什么AIK的连续性和奇异位形。我遇到过一个问题笛卡尔空间中末端只移动了5mm但经过一个奇异点附近时第4轴突然转了90度。后来用DLS-IK阻尼最小二乘限制了奇异附近的关节速度问题缓解但没完全解决——最终把路径改了一下绕开了奇异区域。小结机械臂运动规划的核心选择关节空间简单稳定vs 笛卡尔空间末端可控。大多数工业应用用关节空间规划精密操作用笛卡尔空间。MoveIt2是标准框架FCL做碰撞检测OMPL做路径搜索。面试中机械臂规划的必考题关节空间vs笛卡尔空间的区别、IK多解处理、奇异位形应对。能把这三个讲清楚机械臂规划这块就过关了。下一篇讲碰撞检测算法——GJK/EPA和包围盒方法。如果这篇文章对你有帮助欢迎点赞、在看、转发三连。 你的支持是我持续更新的最大动力。「机器人软件开发面试·从入门到精通」连载系列上一篇第229篇 轨迹时间参数化——TOPP-RA和速度约束处理下一篇预告第231篇 碰撞检测算法——GJK/EPA和包围盒方法有任何问题欢迎评论区留言我会尽量回复。