AMP_for_hardware数据集详解:motion_loader如何处理四足机器人参考动作?
2026/7/31 20:23:39 网站建设 项目流程

AMP_for_hardware数据集详解:motion_loader如何处理四足机器人参考动作?

【免费下载链接】AMP_for_hardwareCode for "Adversarial Motion Priors Make Good Substitutes for Complex Reward Functions"项目地址: https://gitcode.com/gh_mirrors/am/AMP_for_hardware

AMP_for_hardware项目是实现"Adversarial Motion Priors Make Good Substitutes for Complex Reward Functions"论文算法的硬件加速版本,其核心功能是通过对抗性运动先验技术,让四足机器人学习自然流畅的运动模式。本文将深入解析项目中的数据集结构,以及关键模块motion_loader如何处理四足机器人的参考动作数据。

四足机器人运动数据的核心来源

项目的运动数据主要存储在datasets/mocap_motions/目录下,包含多种基本运动类型的文本文件:

  • leftturn0.txt- 左转动作捕捉数据
  • pace0.txtpace1.txt- 踱步动作数据
  • rightturn0.txt- 右转动作捕捉数据
  • trot0.txttrot1.txt- 小跑动作数据

这些文件记录了四足机器人在不同运动状态下的关节角度、身体姿态和速度等关键信息,是训练机器人运动能力的基础。

图:AMP_for_hardware项目中使用的四足机器人躯干模型,用于展示参考动作数据的应用对象

motion_loader模块的功能与架构

motion_loader模块位于rsl_rl/rsl_rl/datasets/motion_loader.py,核心类为AMPLoader,负责加载、处理和提供四足机器人的参考动作数据。该模块的主要功能包括:

数据加载与标准化处理

AMPLoader在初始化时会加载指定目录下的所有运动文件,代码如下:

def __init__( self, device, time_between_frames, data_dir='', preload_transitions=False, num_preload_transitions=1000000, motion_files=glob.glob('datasets/motion_files2/*'), ): # 加载运动文件并处理 for i, motion_file in enumerate(motion_files): with open(motion_file, "r") as f: motion_json = json.load(f) motion_data = np.array(motion_json["Frames"]) # 数据格式转换和标准化 motion_data = self.reorder_from_pybullet_to_isaac(motion_data) # 标准化四元数 for f_i in range(motion_data.shape[0]): root_rot = AMPLoader.get_root_rot(motion_data[f_i]) root_rot = pose3d.QuaternionNormalize(root_rot) root_rot = motion_util.standardize_quaternion(root_rot) # 更新旋转数据

这段代码展示了AMPLoader如何读取JSON格式的运动数据,并进行坐标系转换和四元数标准化,确保数据格式的一致性。

数据重排与坐标系转换

四足机器人的腿部关节顺序在不同仿真环境中可能存在差异,AMPLoader通过reorder_from_pybullet_to_isaac方法处理这一问题:

def reorder_from_pybullet_to_isaac(self, motion_data): """Convert from PyBullet ordering to Isaac ordering. Rearranges leg and joint order from PyBullet [FR, FL, RR, RL] to IsaacGym order [FL, FR, RL, RR]. """ # 分离各部分数据 root_pos = AMPLoader.get_root_pos_batch(motion_data) root_rot = AMPLoader.get_root_rot_batch(motion_data) # 重排腿部关节数据 jp_fr, jp_fl, jp_rr, jp_rl = np.split( AMPLoader.get_joint_pose_batch(motion_data), 4, axis=1) joint_pos = np.hstack([jp_fl, jp_fr, jp_rl, jp_rr]) # 其他数据处理... return np.hstack([root_pos, root_rot, joint_pos, ...])

这种转换确保了运动数据能够正确适配不同的仿真环境,提高了代码的可移植性。

关键帧采样与插值

为了提供连续平滑的参考动作,AMPLoader实现了基于时间的关键帧采样和插值功能:

def get_full_frame_at_time(self, traj_idx, time): """Returns full frame for the given trajectory at the specified time.""" p = float(time) / self.trajectory_lens[traj_idx] n = self.trajectories_full[traj_idx].shape[0] idx_low, idx_high = int(np.floor(p * n)), int(np.ceil(p * n)) frame_start = self.trajectories_full[traj_idx][idx_low] frame_end = self.trajectories_full[traj_idx][idx_high] blend = p * n - idx_low return self.blend_frame_pose(frame_start, frame_end, blend)

该方法通过计算时间比例,找到相邻的关键帧,并使用插值算法生成指定时间点的机器人姿态,确保运动的平滑过渡。

如何使用motion_loader处理参考动作

基本使用流程

  1. 初始化AMPLoader:指定设备、时间间隔和数据目录
  2. 加载运动数据:自动读取并处理指定目录下的所有运动文件
  3. 获取参考动作:通过get_full_frameget_full_frame_batch方法获取单个或批量参考动作数据

代码示例

在项目的训练脚本中,可以这样使用AMPLoader:

# 初始化运动加载器 motion_loader = AMPLoader( device=torch.device('cuda'), time_between_frames=0.01, data_dir='datasets/mocap_motions/', preload_transitions=True ) # 获取批量参考动作数据 reference_frames = motion_loader.get_full_frame_batch(batch_size=64)

这段代码初始化了AMPLoader并获取了64个批量的参考动作数据,可用于训练四足机器人的运动策略。

motion_loader在项目中的应用场景

motion_loader模块在AMP_for_hardware项目中主要应用于以下场景:

  1. 对抗性训练:为鉴别器提供高质量的参考动作数据,用于训练策略网络
  2. 运动规划:为四足机器人提供流畅的基础动作模板
  3. 强化学习:作为先验知识指导机器人的运动学习过程

相关实现可以在以下文件中找到:

  • 环境配置:legged_gym/envs/a1/a1_amp_config.py
  • 训练脚本:legged_gym/scripts/train.py
  • 策略运行:rsl_rl/rsl_rl/runners/amp_on_policy_runner.py

通过motion_loader模块的高效处理,AMP_for_hardware项目能够充分利用高质量的运动捕捉数据,让四足机器人学习到更加自然、稳定的运动模式,为实现复杂环境下的机器人控制提供了强大支持。

【免费下载链接】AMP_for_hardwareCode for "Adversarial Motion Priors Make Good Substitutes for Complex Reward Functions"项目地址: https://gitcode.com/gh_mirrors/am/AMP_for_hardware

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询