【具身智能】使用强化学习工具箱Stable-Baselines3训练智能体

【具身智能】使用强化学习工具箱Stable-Baselines3训练智能体 使用强化学习工具箱Stable-Baselines3训练智能体工具箱介绍SB3是目前学术与工业界较主流的强化学习工具箱具有如下优势基于 PyTorch 开发最主流深度学习框架把复杂的 RL 算法封装成几行代码就能调用好用、稳定、文档全、bug 少全球学术界 / 工业界最常用的入门级 RL 框架训练倒立摆小车训练目标是让智能体学习如何控制小车的左右移动保持摆杆直立不倒。在IssacLab仓库所在路径下isaaclab.sh-pscripts/reinforcement_learning/sb3/train.py--taskIsaac-Cartpole-v0--num_envs64--headless--video优化前优化后源码解释主函数的关键变量env及其配置env_cfgagent及其配置agent_config大意分别是训练任务、训练方法hydra_task_config(args_cli.task,args_cli.agent)defmain(env_cfg:ManagerBasedRLEnvCfg|DirectRLEnvCfg|DirectMARLEnvCfg,agent_cfg:dict):Train with stable-baselines agent.# randomly sample a seed if seed -1ifargs_cli.seed-1:args_cli.seedrandom.randint(0,10000)# override configurations with non-hydra CLI argumentsenv_cfg.scene.num_envsargs_cli.num_envsifargs_cli.num_envsisnotNoneelseenv_cfg.scene.num_envs# 主要实现参数覆盖与配置env_cfgagent_cfg# ...# import gymnasium as gym, 调用API构建envgym.make(args_cli.task,cfgenv_cfg,render_modergb_arrayifargs_cli.videoelseNone)envSb3VecEnvWrapper(env,fast_variantnotargs_cli.keep_all_info)norm_keys{normalize_input,normalize_value,clip_obs}norm_args{}forkeyinnorm_keys:ifkeyinagent_cfg:norm_args[key]agent_cfg.pop(key)ifnorm_argsandnorm_args.get(normalize_input):print(fNormalizing input,{norm_args})envVecNormalize(env,trainingTrue,norm_obsnorm_args[normalize_input],norm_rewardnorm_args.get(normalize_value,False),clip_obsnorm_args.get(clip_obs,100.0),gammaagent_cfg[gamma],clip_rewardnp.inf,)# create agent from stable baselines# env作为参数传入agent对象的构建agentPPO(policy_arch,env,verbose1,tensorboard_loglog_dir,**agent_cfg)ifargs_cli.checkpointisnotNone:agentagent.load(args_cli.checkpoint,env,print_system_infoTrue)main函数的装饰器是把main作为参数传入了hydra_task_config函数封装起来了执行main函数实际是执行hydra_task_config。该装饰器的行为是注册任务配置到 Hydra调用 hydra.main(…)将 Hydra 解析结果 env_cfg 和 agent_cfg 传入真实的 main。