三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

机器人叠衣服为何成技术标杆?拆解感知、规划与控制全栈挑战

机器人叠衣服为何成技术标杆?拆解感知、规划与控制全栈挑战

最近在机器人领域,一个看似简单的家庭任务——“叠衣服”,却吸引了包括 Figure AI、1X 等估值数十亿美元的明星公司投入重金研发。这不禁让人好奇,为什么这些顶尖的科技公司,不去攻克更“宏大”的工业难题,反而对这件日常琐事如此着迷?

对于开发者、机器人爱好者,或是关注AI应用落地的朋友来说,理解这背后的逻辑至关重要。这不仅关乎技术趋势,更揭示了机器人从实验室走向千家万户所必须跨越的核心障碍。本文将深入拆解“叠衣服”这一任务背后所蕴含的惊人技术复杂度,分析 Figure AI、1X 等公司的战略意图,并探讨其对整个机器人技术栈(从感知、规划到控制)带来的深远影响。无论你是想了解前沿动态,还是正在从事机器人相关开发,这篇文章都将为你提供一个清晰的视角。

1. 背景与核心概念:从“炫技”到“实用”的范式转变

机器人技术经历了从工业自动化到服务型、协作型机器人的演进。早期的工业机器人(如 ABB、库卡、安川等)在结构化环境中表现出色,执行的是高精度、高重复性的任务,例如焊接、喷涂、装配。这些环境的特点是规则明确、状态可控

然而,家庭环境是典型的非结构化环境。光线会变化,物品随意摆放,地面可能有障碍物,任务本身也充满不确定性。让机器人在这样的环境中可靠工作,是当前研究的核心挑战。

“叠衣服”为何成为标志性任务?它完美集成了机器人进入家庭所需克服的绝大多数难题:

  1. 感知复杂度高:衣服是非刚性、高自由度、易变形的物体。其状态(展开、团成一团、部分折叠)千变万化,视觉系统难以像识别一个“杯子”那样给出确定的三维模型。
  2. 操作极度精细:需要机器人具备灵巧手(Dexterous Manipulation)能力。不仅要抓取,还要能捏、捋、铺平、对齐、折叠,涉及复杂的力控和触觉反馈。
  3. 规划与决策困难:叠一件T恤和叠一条牛仔裤的策略完全不同。机器人需要根据感知结果,实时规划出一系列动作序列,并能在执行过程中根据布料滑移等意外情况进行调整。
  4. 场景普适性:这是全球每个家庭每天或每周都会进行的重复性劳动,市场潜在需求巨大。成功解决它,意味着机器人的通用能力得到了一个强有力的验证。

因此,Figure AI、1X 等公司聚焦“叠衣服”,绝非小题大做,而是选择了一个极具代表性的“标杆任务”来锤炼和展示其通用机器人技术的成熟度。

2. 技术栈深度拆解:为什么叠衣服这么难?

要理解公司的投入,我们必须从技术层面看看“叠衣服”到底难在哪里。这几乎用到了现代机器人技术的所有核心模块。

2.1 感知层:看见“一团混沌”

在结构化工厂里,相机可以轻松识别固定托盘上的零件。但对于一堆衣服,传统的计算机视觉方法力不从心。

核心挑战:

  • 分割(Segmentation):从一堆混杂的衣服中,区分出每一件独立的衣物。
  • 姿态估计(Pose Estimation):对于非刚性体,其“姿态”无法用简单的6D位姿(3D位置+3D旋转)描述。需要估计的是布料的大致展开状态、关键点(如领口、袖口)的位置。
  • 物理属性理解:布料是薄是厚?是光滑的丝绸还是粗糙的牛仔布?这些属性影响抓取和操作的策略。

技术方案:

  • 多模态融合感知:结合高清RGB相机、深度相机(如Intel RealSense)、有时甚至3D激光雷达,获取丰富的几何和纹理信息。
  • 深度学习模型:使用经过大量数据训练的神经网络,如实例分割模型(Mask R-CNN的变体)来区分衣物,或使用图神经网络(GNN)来理解布料这种图结构数据的变形。
  • 仿真到真实(Sim2Real):在仿真环境(如Isaac Sim、PyBullet)中生成海量、随机的布料状态数据,用以训练感知模型,再通过域自适应技术迁移到真实世界。
# 一个简化的感知流程伪代码示例,展示思路 class ClothingPerception: def __init__(self): # 加载训练好的分割和关键点检测模型 self.seg_model = load_model('mask_rcnn_clothing.pth') self.keypoint_model = load_model('cloth_keypoint_resnet.pth') def perceive(self, rgb_image, depth_image): # 1. 实例分割:找出每一件衣物 masks, classes = self.seg_model.predict(rgb_image) # masks: 每个衣物的掩码 # classes: T恤、裤子、毛巾等 clothing_items = [] for mask, cls in zip(masks, classes): # 2. 裁剪出单件衣物区域 item_roi = apply_mask(rgb_image, mask) # 3. 估计关键点(如对于T恤:左袖口、右袖口、领口中心、下摆中心) keypoints = self.keypoint_model.predict(item_roi) # 4. 结合深度信息,计算关键点的3D坐标(相对于相机) keypoints_3d = project_to_3d(keypoints, depth_image, camera_calib) # 5. 粗略估计衣物状态:大致平整、团状、部分折叠 state = self._estimate_state(keypoints_3d, mask) clothing_items.append({ 'mask': mask, 'class': cls, 'keypoints_3d': keypoints_3d, 'state': state }) return clothing_items def _estimate_state(self, keypoints, mask): # 基于关键点分布和掩码形状的启发式规则或小模型 # 例如:关键点是否聚集(团状)?掩码的长宽比是否接近折叠后的形状? # 这是一个简化示例,实际更为复杂 pass

2.2 规划层:为“软物体”设计动作序列

规划是大脑,它需要根据感知结果,生成一套可执行的动作指令。

核心挑战:

  • 状态空间巨大:布料有近乎无限的可能状态,无法像规划机械臂抓取一个方块那样枚举所有可能。
  • 动作连续性要求高:折叠是一个连贯的过程,中间步骤失败(如没铺平)会导致后续无法进行。
  • 动态交互:机器人的每一次接触都会改变布料的状态,规划必须考虑这种动态变化。

技术方案:

  • 分层任务规划
    • 高层规划:决定顺序。例如,“先铺平 -> 然后对折 -> 再对折”。
    • 底层运动规划:为每个步骤生成具体的机械臂末端轨迹和手部姿态。这通常需要结合运动学动力学碰撞检测
  • 模仿学习与强化学习
    • 模仿学习(Imitation Learning):通过动作捕捉(MoCap)记录人类叠衣服的动作,让机器人学习。1X等公司大量采用这种方式。
    • 强化学习(Reinforcement Learning):在仿真中,让机器人通过“试错”获得奖励(成功折叠)或惩罚(弄乱),自我学习策略。Figure AI 和宇树(其G1机器人论文提到使用优化的PPO算法)都在深入探索RL。但RL样本效率低,Sim2Real迁移是难点。
# 一个基于状态机的简化高层任务规划示例 class FoldingPlanner: def __init__(self): self.state_machine = { 'start': self._plan_pick_and_flatten, 'flattened': self._plan_first_fold, 'first_folded': self._plan_second_fold, 'done': None } self.current_state = 'start' def plan(self, clothing_item): """根据当前状态和衣物信息,生成下一步动作指令""" if self.current_state not in self.state_machine: raise ValueError(f"Unknown state: {self.current_state}") planner_func = self.state_machine[self.current_state] if planner_func: action_sequence = planner_func(clothing_item) # 假设动作执行成功,更新状态(实际中需根据执行反馈) self._transition_state() return action_sequence return [] # 任务完成 def _plan_pick_and_flatten(self, item): # 生成“抓取-移动到平整区域-铺开”的动作序列 # 这需要调用底层的运动规划器 return [ {'type': 'pick', 'grasp_pose': calculate_grasp_pose(item)}, {'type': 'move_to', 'target_pose': FLATTEN_AREA}, {'type': 'flatten', 'strategy': 'spread'} # 铺平策略 ] def _plan_first_fold(self, item): # 根据衣物类别(T恤/裤子)和关键点,规划第一次折叠 if item['class'] == 't-shirt': # 例如,找到左右袖口中心,规划对折轨迹 left_sleeve, right_sleeve = item['keypoints_3d'][0], item['keypoints_3d'][1] fold_line_center = (left_sleeve + right_sleeve) / 2 return [{'type': 'fold', 'axis': 'vertical', 'center': fold_line_center}] # ... 其他衣物类型的规划 return [] def _transition_state(self): # 简单的状态转移逻辑 if self.current_state == 'start': self.current_state = 'flattened' elif self.current_state == 'flattened': self.current_state = 'first_folded' elif self.current_state == 'first_folded': self.current_state = 'done'

2.3 控制层:让手“听话”地操作

这是最后一步,也是最考验硬件和底层算法的一环。

核心挑战:

  • 力位混合控制:铺平衣服需要施加一定的力,而对折时需要精准的位置控制。需要在力控位控模式间平滑切换。
  • 抓取稳定性:布料易滑、易变形。如何设计抓取点(Pinch)或使用吸附(Suction)来稳定抓取?
  • 触觉反馈:灵巧手(如 Figure 01 的手)通常配备指尖触觉传感器,用于感知抓握力、滑动和布料纹理,实现闭环控制。

技术方案:

  • 柔顺控制:如导纳控制或阻抗控制,让机械臂末端表现得像弹簧-阻尼系统,与环境进行柔顺交互,防止硬碰撞。
  • 自适应抓取策略:根据感知的布料状态和类别,动态调整抓取力度和手型。
  • 基于触觉的闭环:实时读取触觉传感器数据,如果检测到滑动,则调整抓握力或手部姿态。
# 一个简化的力位混合控制循环伪代码 class HybridForcePositionController: def __init__(self, robot_arm, tactile_sensor): self.arm = robot_arm self.tactile = tactile_sensor self.desired_force = 5.0 # 期望的接触力,单位:N self.kp_force = 0.1 # 力控比例增益 self.kp_pos = 0.5 # 位控比例增益 def execute_flatten_action(self, target_surface_pose): """ 执行铺平动作:先力控接触表面,再位控移动铺开 target_surface_pose: 目标桌面表面的位姿 """ # 阶段1:力控接触 current_pose = self.arm.get_pose() contact_achieved = False while not contact_achieved: current_force = self.tactile.get_normal_force() force_error = self.desired_force - current_force # 根据力误差,在Z方向(垂直方向)调整位置 adjustment = self.kp_force * force_error new_pose = current_pose new_pose.z += adjustment self.arm.move_to(new_pose, speed=0.01) # 慢速移动 if abs(force_error) < 0.5: # 达到期望力阈值 contact_achieved = True contact_pose = self.arm.get_pose() # 阶段2:位控铺开(在保持接触力的同时水平移动) # 这是一个简化,实际需要更复杂的力位混合控制律 spread_vector = calculate_spread_vector() # 计算铺开方向 target_pose = contact_pose.translated(spread_vector) # 在实际系统中,这里会调用一个混合控制器,同时约束Z方向的力和XY方向的位置 self.arm.move_to(target_pose, speed=0.05)

3. 巨头战略解析:Figure AI、1X等公司的布局逻辑

理解了技术难度,我们再来看公司的战略就清晰了。

Figure AI:打造通用性“大脑”与“身体”

  • 目标:开发通用人形机器人(Figure 01),旨在处理多种非结构化任务。
  • 为何选择叠衣服:这是验证其“端到端”AI系统(将视觉语言大模型VLM与快速动作执行结合)的绝佳测试床。它需要机器人理解模糊指令(“叠好那件衬衫”)、感知复杂场景、并执行灵巧操作。成功意味着其技术栈具备了高度的通用性。
  • 技术路径:强调大模型赋能。通过视觉语言模型(如GPT-4V)理解场景和任务,通过专有的快速运动神经网络将指令转化为毫秒级的关节控制。叠衣服是展示其软硬件协同和AI泛化能力的标杆演示。

1X (Halodi Robotics):从实用场景切入,规模化部署

  • 目标:创造能在人类环境中安全、有用工作的机器人,并已开始商业化部署(如安保机器人EVE)。
  • 为何选择叠衣服:1X 更侧重于模仿学习具身智能。他们通过人类演示来训练机器人完成具体任务。叠衣服是一个有明确商业前景(家庭服务、养老助残)且能充分展示其模仿学习成果的任务。这有助于他们吸引投资、获取数据,并迭代其机器人平台(如NEO人形机器人)。
  • 技术路径:大规模收集人类演示数据 -> 训练行为克隆模型 -> 在仿真和实体机器人上精调。强调安全、可靠和可预测的行为。

其他玩家与行业影响

  • 特斯拉(Optimus):虽然未主打叠衣服,但其展示的灵巧手操作(如拿鸡蛋、分拣电池)本质上与叠衣服面临同样的非刚性体操控挑战。马斯克强调规模化和成本控制。
  • 宇树科技(Unitree):作为四足机器人领头羊,其发布的人形机器人G1和开源论文,展示了用强化学习(如优化的PPO算法)训练“温和”人形运动。这为复杂任务(如未来可能包含的物体操作)提供了底层运动控制基础。
  • 传统工业机器人厂商(ABB、发那科等):他们也在向协作机器人(Cobot)和更智能的视觉引导(如TVA视觉引导机器人)发展,但主要聚焦于工业场景的易用性提升,与家庭场景的通用AI机器人路径不同。

共同逻辑

  1. 数据驱动:无论是模仿学习还是强化学习,都需要海量、高质量的任务数据。叠衣服是一个完美的数据收集场景。
  2. 技术验证:这是一个公认的“硬骨头”,攻克它等于向业界宣告自身技术栈的成熟度。
  3. 市场宣示:向消费者和投资者展示,机器人离进入家庭、提供实际价值不再遥远。
  4. 生态构建:通过解决此类问题,打磨一整套包括仿真、训练、部署的工具链,为未来更多任务打下基础。

4. 对开发者与工程师的启示:技术栈的演进与机会

这场竞赛不仅仅是巨头的游戏,也为整个机器人技术生态带来了新的需求和机会。

4.1 新兴关键技术岗位与技能

  • 具身AI算法工程师:专注于将大模型(VLM, LLM)与机器人感知、规划、控制 loop 结合。需要精通多模态模型、机器人状态表示、任务规划。
  • 强化学习/模仿学习工程师:负责在仿真和真实世界中训练机器人策略。需要熟悉 Isaac Sim、PyBullet/MuJoCo、ROS 2,掌握 PPO、SAC、DAgger 等算法。
  • 机器人软件架构师:设计高可靠、模块化的机器人中间件系统,处理传感器数据流、实时控制、任务调度、人机交互等。
  • 仿真与Sim2Real专家:构建高保真度的物理仿真环境,并开发域随机化、域自适应技术,以弥合仿真与现实的差距。

4.2 开源工具与学习路径

对于想进入该领域的开发者,可以从以下栈开始:

1. 基础框架与中间件:

  • ROS 2 (Robot Operating System):已成为机器人软件开发的事实标准。它提供了节点通信、工具、库和生态。学习 ROS 2 的节点、话题、服务、动作,以及导航2(Nav2)、MoveIt 2(运动规划)等核心功能包是入门必备。
    # 安装ROS 2 (以Humble版本为例,Ubuntu) sudo apt update && sudo apt install ros-humble-desktop # 创建工作空间 mkdir -p ~/ros2_ws/src cd ~/ros2_ws colcon build source install/setup.bash

2. 仿真环境:

  • Gazebo (与ROS深度集成):经典选择,但物理引擎(ODE)对布料等复杂变形体模拟效果一般。
  • Isaac Sim (NVIDIA):基于USD和PhysX,对刚体和变形体模拟性能强大,与Isaac Gym(强化学习)无缝集成,是当前研究前沿的热门工具。
  • PyBullet / MuJoCo:轻量级、易于使用的物理仿真器,常用于强化学习研究。MuJoCo现已免费。

3. 算法与开发库:

  • OpenCV, PCL (点云库):用于视觉感知。
  • PyTorch, TensorFlow:用于深度学习模型训练。
  • Stable-Baselines3, Ray RLlib:用于强化学习。
  • MoveIt 2:ROS 2中的运动规划框架,支持机械臂的路径规划、碰撞检测等。

4.3 一个简单的ROS 2节点示例:控制仿真机器人移动到目标点

#!/usr/bin/env python3 # 文件:~/ros2_ws/src/my_robot_controller/scripts/simple_controller.py import rclpy from rclpy.node import Node from geometry_msgs.msg import Twist import time class SimpleController(Node): def __init__(self): super().__init__('simple_controller') # 创建一个发布者,发布到 /cmd_vel 话题,控制机器人移动 self.publisher_ = self.create_publisher(Twist, '/cmd_vel', 10) self.get_logger().info('简单控制器节点已启动,将让机器人前进2秒,然后停止。') def move_forward(self, duration=2.0): msg = Twist() msg.linear.x = 0.2 # 前进速度 0.2 m/s msg.angular.z = 0.0 start_time = self.get_clock().now() while (self.get_clock().now() - start_time).nanoseconds < duration * 1e9: self.publisher_.publish(msg) time.sleep(0.1) # 简单循环,实际应用应使用定时器 # 停止 stop_msg = Twist() self.publisher_.publish(stop_msg) self.get_logger().info('移动停止。') def main(args=None): rclpy.init(args=args) controller = SimpleController() controller.move_forward() controller.destroy_node() rclpy.shutdown() if __name__ == '__main__': main()

对应的package.xml和CMakeLists.txt需配置好。这个例子展示了ROS 2节点最基本的通信模式。

5. 当前挑战与未来展望

尽管进展迅速,但机器人叠衣服真正走进家庭仍面临巨大挑战:

1. 长尾问题与可靠性:

  • 能处理 95% 的常规衣物(棉质T恤、牛仔裤),但遇到丝绸衬衫、带扣子的毛衣、袜子、床单等“长尾”物品时,成功率可能骤降。
  • 家庭环境光照、背景杂乱,对感知系统是持续考验。

2. 成本与商业化:

  • 具备灵巧手、高精度传感器和强大算力的机器人,成本可能高达数万甚至数十万美元,远超普通家庭承受范围。
  • 需要找到从商业场景(如洗衣工厂、酒店)到家庭场景的降本路径。

3. 安全与伦理:

  • 在无人监督下与家庭物品和人类共处,安全是首要问题。需要完善的紧急停止、力感知和避障机制。
  • 数据隐私:机器人摄像头记录的家庭环境数据如何保护?

未来趋势:

  • AI 驱动:大模型(VLM+LLM)将成为机器人的“常识”来源,使其能理解更抽象的任务描述(“把洗好的衣服收拾好”),并自主拆解步骤。
  • 仿真优先:大部分学习和测试将在高保真仿真中进行,加速迭代,降低实体机器人损耗成本。
  • 软硬件协同设计:为特定任务(如灵巧操作)设计专用的传感器(如高分辨率触觉皮肤)和执行器(如可变刚度关节)。
  • 云机器人:部分计算密集型任务(如复杂场景理解、长期规划)可能通过 5G/6G 网络在云端完成,机器人端侧重实时控制。

6. 总结与学习建议

Figure AI、1X 等公司竞逐“叠衣服”,本质上是在争夺通用机器人时代的入场券。这个看似简单的任务,是检验机器人感知、规划、控制全栈能力的试金石。

对于技术人员和爱好者,这意味着:

  • 关注核心模块:不要只盯着“机器人”三个字。深入计算机视觉(特别是3D视觉与分割)、运动规划(路径搜索、轨迹优化)、强化学习/模仿学习、机器人控制(力控、柔顺控制)等具体领域,任何一个都是深水区。
  • 掌握工具链:熟练使用 ROS 2、Gazebo/Isaac Sim、PyTorch 等现代机器人开发工具,比单纯研究算法理论更重要。
  • 参与开源社区:关注如MoveItROS 2 ControlIsaac Gym等开源项目的进展,甚至参与贡献,是快速成长的最佳途径。
  • 从小项目实践:可以从仿真环境中的机械臂抓取方块开始,逐步尝试更复杂的任务,如抓取不同形状的物体,再到尝试用简单的布料模型模拟铺平动作。

机器人技术正处在一个从“专用”走向“通用”的临界点。而“叠衣服”这场竞赛,正是这个激动人心时代的最佳注脚。它提醒我们,最伟大的技术突破,往往始于解决那些最平凡、最普遍的人类需求。

← 返回列表