在lerobot-dataset-visualizer可视化展示中,有以下参数,本文对这些参数进行说明
在这里插入图片描述

so101-robot的6DoF动作空间详解

so101-robot是一款标准开源6自由度机械臂,其动作空间由6个旋转关节和1个夹爪控制组成,能够在三维空间中实现任意位置和姿态的操作。以下是各关节的详细说明:

1. shoulder_pan.pos (肩部水平旋转关节)

  • 含义:肩部水平旋转关节(Pan),控制机械臂底座绕Z轴旋转
  • 作用:控制机械臂整体左右摆动,改变工作区域
  • 旋转轴:绕垂直于地面的Z轴旋转
  • 典型角度范围:-170°至+170°
  • 电机配置:使用1:191减速比的Feetech STS3215伺服电机

2. shoulder_lift.pos (肩部俯仰关节)

  • 含义:肩部俯仰关节(Lift),控制大臂绕Y轴旋转
  • 作用:控制大臂上下抬升,调整机械臂高度
  • 旋转轴:绕Y轴(水平轴)旋转
  • 典型角度范围:-105°至+145°
  • 电机配置:使用1:345减速比的Feetech STS3215伺服电机

3. elbow_flex.pos (肘部弯曲关节)

  • 含义:肘部弯曲关节(Flex),控制前臂绕Y轴旋转
  • 作用:控制前臂折叠,类似人类肘部弯曲
  • 旋转轴:绕Y轴(水平轴)旋转
  • 典型角度范围:-210°至+70°
  • 电机配置:使用1:191减速比的Feetech STS3215伺服电机

4. wrist_flex.pos (腕部俯仰关节)

  • 含义:腕部俯仰关节(Flex),控制手腕绕Y轴旋转
  • 作用:控制手腕上下弯曲,调整末端执行器角度
  • 旋转轴:绕Y轴(水平轴)旋转
  • 典型角度范围:-135°至+135°
  • 电机配置:使用1:147减速比的Feetech STS3215伺服电机

5. wrist_roll.pos (腕部旋转关节)

  • 含义:腕部旋转关节(Roll),控制末端执行器绕自身轴旋转
  • 作用:控制末端执行器(如夹爪)自转,调整抓取角度
  • 旋转轴:绕末端执行器自身轴线旋转
  • 典型角度范围:-360°至+360°(无限旋转)
  • 电机配置:使用1:147减速比的Feetech STS3215伺服电机

6. gripper.pos (夹爪控制)

  • 含义:夹爪开合控制,通常为标量值
  • 作用:控制机械手抓取或释放物体
  • 控制方式
    • 0值:夹爪完全张开
    • 1值:夹爪完全闭合
  • 实现方式:使用线性执行器或旋转关节带动夹爪

6DoF动作空间整体说明

  • 控制系统:通常使用ROS2或LeRobot框架进行控制
  • 控制模式:支持关节位置控制、速度控制和力矩控制
  • 应用场景:适用于物体抓取、装配、分拣等多种自动化任务
  • 特点:6个旋转关节的组合使机械臂末端能达到工作空间内任意位置和姿态

使用建议

  1. 在控制机械臂前,务必确认各关节角度不超出安全范围,避免机械损坏
  2. 使用前建议进行校准,确保关节零位准确
  3. 进行复杂操作时,可结合正向/逆向运动学计算
  4. 可使用可视化工具(如RViz)辅助调试和路径规划

以上就是so101-robot的完整6DoF动作空间说明,每个关节的精确控制使这款机械臂能够完成各种复杂的抓取和操作任务。

so101-robot的action和observation.state详解

一、action空间

action是机器人执行的控制指令,定义了机器人下一步要做什么。在so101-robot中,action是一个长度为7的向量,具体构成如下:

action向量结构:

[shoulder_pan.pos, shoulder_lift.pos, elbow_flex.pos, wrist_flex.pos, wrist_roll.pos, gripper.pos, ...]

详细说明:

  1. 前6个元素:对应6个关节的位置控制,与之前介绍的6个关节完全一致,单位为弧度(rad)或角度(°),具体取决于控制模式

  2. 第7个元素

    • gripper.pos:夹爪控制信号
    • 取值范围:01(或-11,取决于配置)
    • 0:夹爪完全张开
    • 1:夹爪完全闭合

控制模式说明:

so101-robot支持两种action控制方式:

控制模式说明适用场景
绝对位置控制action直接指定各关节目标角度精确点位控制、轨迹复现
相对增量控制action指定各关节角度变化量连续微调、人机协作

在LeRobot框架中,通过设置control.mode参数可以切换这两种模式 。

二、observation.state

observation.state是机器人当前状态的观测值,提供了机器人自身状态的完整描述,用于决策和学习。

state向量结构:

[shoulder_pan.pos, shoulder_lift.pos, elbow_flex.pos, wrist_flex.pos, wrist_roll.pos, gripper.pos, ...]

详细说明:

  1. 前6个元素:各关节的当前角度位置,单位与action一致

  2. 第7个元素

    • gripper.pos:夹爪当前开合状态
    • 0:夹爪完全张开
    • 1:夹爪完全闭合
  3. 其他可能包含的元素(取决于配置):

    • 关节速度:各关节的当前旋转速度(rad/s)
    • 关节力矩/力度:执行器输出的力矩大小
    • 末端执行器位置:笛卡尔坐标系下的位置(x,y,z)
    • 末端执行器姿态:欧拉角或四元数表示的方向

数据格式:

  • 数据类型:通常为float32
  • 向量长度:7(基本配置)~ 19(全传感器配置)
  • 在LeRobot中:通过robot.get_observation()["observation.state"].data获取

三、action与observation.state的关系

  1. 因果关系

    • action是控制指令(机器人执行的动作)
    • observation.state是反馈信息(执行后的状态)
    • 这构成了机器人控制的闭环系统:感知→决策→行动→再感知
  2. 在强化学习中的应用

    智能体(Agent):
      - 观察(observation.state) → 产生(action) → 执行 → 新(observation.state) → 获得奖励
    

    so101-robot的完整observation还包括视觉信息(observation.images),可用于复杂场景下的学习

  3. 实际应用示例

    # 获取当前状态
    state = robot.get_observation()["observation.state"].data.numpy()
    
    # 执行一个动作(将肩部上抬30度)
    action = np.array([0, np.deg2rad(30), 0, 0, 0, 0])
    robot.execute_action(action)
    
    # 执行后再次获取状态,检查动作效果
    new_state = robot.get_observation()["observation.state"].data.numpy()
    

四、总结

  • action:是7维向量,指定机器人各关节目标位置和夹爪状态,用于控制机器人运动
  • observation.state:是7维向量(基础配置),提供机器人各关节当前位置和夹爪状态,用于状态感知和反馈

这两个组件是so101-robot与外部系统(如控制器、学习算法)交互的核心接口,共同构成了机器人的感知-决策-执行闭环。

补充:除了state外,so101-robot的observation还可能包含:

  • 多个摄像头图像(observation.images)
  • 力/扭矩传感器数据(observation.force)
  • 末端执行器坐标(observation.end_effector)

这些额外信息使机器人能够感知更丰富的环境状态,支持更复杂的任务执行和学习 。

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐