ManiSkill项目中的控制器与动作空间详解
【免费下载链接】ManiSkill 项目地址: https://gitcode.com/GitHub_Trending/ma/ManiSkill
引言
在机器人仿真与控制领域,控制器是连接用户策略与机器人执行的关键桥梁。ManiSkill项目提供了一系列精心设计的控制器,使得用户能够以直观的方式控制机器人完成各种任务。本文将深入解析ManiSkill中的控制器系统,帮助开发者理解其工作原理和使用方法。
控制器基础概念
什么是控制器
控制器是ManiSkill中负责将用户输入的动作转换为机器人关节控制信号的模块。在仿真环境中,所有机器人最终都是通过关节位置或关节速度控制来实现运动的。
控制器的核心作用
- 定义任务的动作空间:控制器决定了用户能够输入的动作类型和范围
- 分组控制:机器人不同关节组可以使用不同的控制器
- 灵活配置:单个机器人可以配置多组控制器方案
控制器类型详解
被动控制器(Passive Controller)
被动控制器用于指定某些关节不受动作控制,保持被动状态。例如在CartPole环境中,铰链关节就是使用被动控制器。
from mani_skill.agents.controllers import PassiveControllerConfig
PD关节位置控制器(PD Joint Position Controller)
这是最基本的控制器类型,通过PD控制直接设置关节的目标位置。
from mani_skill.agents.controllers import PDJointPosControllerConfig
PD末端执行器位姿控制器(PD EE Pose Controller)
这是ManiSkill中最强大且最常用的控制器之一,它允许用户直观地控制机器人的末端执行器(End-Effector)的位姿。
from mani_skill.agents.controllers import PDEEPoseControllerConfig
坐标系系统
理解这个控制器需要先了解三个关键坐标系:
- 世界坐标系(World Frame)
- 根链接坐标系(Root Link Frame)
- 末端执行器坐标系(End-Effector/Body Frame)
控制模式
该控制器提供两种主要控制模式:
- 增量控制(Delta Control):默认模式,用户输入末端执行器的相对位移和旋转
- 绝对控制(Non-Delta Control):用户直接指定末端执行器的目标位姿
增量控制详解
增量控制提供了4种坐标系组合,由平移和旋转的参考坐标系决定:
"body_translation:root_aligned_body_rotation"
"root_translation:root_aligned_body_rotation"
"body_translation:body_aligned_body_rotation"
"root_translation:body_aligned_body_rotation"
平移控制:
- 根坐标系平移:动作相对于机器人基座坐标系
- 末端坐标系平移:动作相对于当前末端执行器坐标系
旋转控制:
- 根对齐旋转:在根坐标系方向但位于末端位置的坐标系中旋转
- 末端对齐旋转:完全在末端执行器坐标系中旋转
PD末端执行器位置控制器(PD EE Pos Controller)
这是PD EE Pose控制器的简化版,仅控制末端执行器的位置而不控制旋转。
from mani_skill.agents.controllers import PDEEPosControllerConfig
Franka Emika Panda机器人控制器实例分析
以Franka Emika Panda机器人为例,深入解析几种常用控制器的工作原理:
术语定义
qpos:可控关节位置qvel:可控关节速度- PD控制器:$F(t) = K_p (\bar{q}(t) - q(t)) + K_d (\bar{\dot{q}}(t) - \dot{q}(t))$
控制器数学表达
-
关节位置控制(arm_pd_joint_pos):
- 直接设置目标关节位置:$\bar{q} = a$
-
关节增量位置控制(arm_pd_joint_delta_pos):
- $\bar{q}(t)=q(t) + a$
-
末端增量位置控制(arm_pd_ee_delta_pos):
- $\bar{p}(t)=p(t)+a$
- 通过逆运动学计算关节目标位置
-
末端增量位姿控制(arm_pd_ee_delta_pose):
- $\bar{p}(t)=p(t)+a_{p}$
- $\bar{R}(t)=R(t) \cdot e^{[a_{R}]_{\times}}$
- 通过逆运动学计算关节目标位置
控制器选择建议
- 初学者建议:从PD EE Pose控制器开始,它提供了最直观的控制方式
- 高级控制:需要精确关节控制时可使用PD Joint Position控制器
- 训练效率:在强化学习训练中,增量控制通常更高效
总结
ManiSkill的控制器系统提供了从底层关节控制到高层末端执行器控制的完整解决方案。理解这些控制器的工作原理和使用方法,是有效使用ManiSkill进行机器人仿真和控制的关键。通过选择合适的控制器,用户可以平衡控制精度和操作简便性,高效完成各种机器人任务。
【免费下载链接】ManiSkill 项目地址: https://gitcode.com/GitHub_Trending/ma/ManiSkill
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



