【动手学具身智能】legged_gym项目实践(一)启动训练与测试结果

本文将会记录与讲解使用legged_gym上手实践训练机器人的操作步骤。

一、导入机器人

这里选择宇树的G1机器人,进入宇树文档中心,在“RL例程”中找到相关资料并下载:https://support.unitree.com/home/zh/G1_developer/rl_control_routine

翻一翻文件夹可以发现,宇树提供了几款机器人的源码,分别是g1,g2,h1等:
在这里插入图片描述
同时准备好legged_gym项目文件夹,结构应该是这样的:
在这里插入图片描述

  • 将机器人源码中的/unitree_rl_gym/resources/robots/g1_description文件夹复制到legged_gym文件夹的legged_gym/resources/robots/中:
    在这里插入图片描述
  • 接着把envs/中的g1文件夹复制到legged_gym的envs中:
    在这里插入图片描述
    在这里插入图片描述
  • 在legged_gym/legged_gym/envs/init.py中增加注册机器人(三行注释为#添加的 的代码):
from legged_gym import LEGGED_GYM_ROOT_DIR, LEGGED_GYM_ENVS_DIR
from legged_gym.envs.a1.a1_config import A1RoughCfg, A1RoughCfgPPO
from .base.legged_robot import LeggedRobot
from .anymal_c.anymal import Anymal
from .anymal_c.mixed_terrains.anymal_c_rough_config import AnymalCRoughCfg, AnymalCRoughCfgPPO
from .anymal_c.flat.anymal_c_flat_config import AnymalCFlatCfg, AnymalCFlatCfgPPO
from .anymal_b.anymal_b_config import AnymalBRoughCfg, AnymalBRoughCfgPPO
from .cassie.cassie import Cassie
from .cassie.cassie_config import CassieRoughCfg, CassieRoughCfgPPO
from .a1.a1_config import A1RoughCfg, A1RoughCfgPPO
from .go2.go2_config import GO2RoughCfg, GO2RoughCfgPPO  
from legged_gym.envs.g1.g1_config import G1RoughCfg, G1RoughCfgPPO #添加的
from legged_gym.envs.g1.g1_env import G1Robot #添加的



import os

from legged_gym.utils.task_registry import task_registry

task_registry.register( "anymal_c_rough", Anymal, AnymalCRoughCfg(), AnymalCRoughCfgPPO() )
task_registry.register( "anymal_c_flat", Anymal, AnymalCFlatCfg(), AnymalCFlatCfgPPO() )
task_registry.register( "anymal_b", Anymal, AnymalBRoughCfg(), AnymalBRoughCfgPPO() )
task_registry.register( "a1", LeggedRobot, A1RoughCfg(), A1RoughCfgPPO() )
task_registry.register( "cassie", Cassie, CassieRoughCfg(), CassieRoughCfgPPO() )
task_registry.register( "go2", LeggedRobot, GO2RoughCfg(), GO2RoughCfgPPO() )  
task_registry.register( "g1", G1Robot,G1RoughCfg(), G1RoughCfgPPO() )  #添加的 

二、训练机器人

重要训练参数讲解

首先讲一下训练的命令需要设置的重要参数:

  • --task

    • 描述:指定任务类型,默认值是 anymal_c_flat。这个参数决定了训练的具体任务,anymal_c_flat 是指使用平地行走任务。
  • --resume

    • 描述:是否从已保存的检查点恢复训练,默认为 False。如果为 True,训练将从上次中断的地方继续。
  • --experiment_name

    • 描述:实验名称,用于标识当前的实验,默认情况下会覆盖配置文件中定义的实验名称。
  • --run_name

    • 描述:运行名称,用于区分不同的训练运行。
  • --load_run

    • 描述:从哪个运行中加载模型,-1 表示加载最近的运行。
  • --checkpoint

    • 描述:指定加载的检查点编号,-1 表示加载最新的检查点。
  • --headless

    • 描述:如果设置为 True,则始终关闭可视化。适用于不需要图形界面的训练。
  • --horovod

    • 描述:是否启用 Horovod(分布式深度学习库)来进行多GPU训练,默认为 False
  • --rl_device

    • 描述:指定强化学习算法使用的设备,可以是 cpugpu 或者 cuda:0 等。
  • --num_envs

    • 描述:要创建的环境数量。通常用于并行化训练,如果不指定则使用配置文件中的值。
  • --seed

    • 描述:设置随机种子,用于确保实验的可重复性。
  • --max_iterations

    • 描述:最大训练迭代次数,超出此次数后停止训练。

用途和调参

  • --task:选择任务类型,行走任务(如 anymal_c_flat)将帮助机器人训练走路。

  • --num_envs:根据硬件和并行能力调整环境数量。更多环境有助于加速训练,尤其是在GPU上。

  • --rl_device:如果在GPU上训练,使用 cuda:0cuda:1;若在CPU上训练则指定为 cpu。对于大规模训练,使用GPU会更高效。

  • --seed:设置随机种子以确保每次训练都从相同的初始状态开始,便于调试和比较。

  • --max_iterations:可以设置最大训练迭代次数以控制训练时间,初期可以设置较小的值来调试。

  • --horovod:若使用多个GPU进行分布式训练,可启用 Horovod 来加速训练。

以上复制于gpt,下面我用自己写一下自己的理解:

  • --task:名字取决于在任务注册中注册的名字在这里插入图片描述
  • --num_envs:数量决定了同一时间的机器人agent有几个,相当于是batch_size
  • --max_iterations:设置最大迭代次数,一般为三四千,算法会达到收敛
  • --headless:加上这条可以不开可视化,会快很多
  • --load_run: str类型参数,代表运行的策略的任务名称
  • --checkpoint: int类型参数,代表运行的策略编号

举例:
在legged_gym/logs/g1/中保存了所有与g1型号机器人有关的训练结果
在这里插入图片描述在这里插入图片描述

  • 这边文件夹的名称就是不同的训练过程,也就是任务名称
  • 任务里面会随着训练保存一版版的训练结果,也就是策略名称,若指定checkpoint参数为10000,就会调用model_10000.pt

启动训练

先cd到legged_gym/scripts/文件夹处,运行

python train.py --task=g1 --num_env=1000 --headless

开始训练
在这里插入图片描述
训练完成后,logs里面就会多一个文件夹,代表这次训练任务的结果保存:在这里插入图片描述

测试结果

如果在同scripts文件夹下直接运行

python play.py --task=g1

会选择最新的任务最新的策略测试

如果想要指定,比如

python play.py --task=g1 --load_run=origin_10000 --checkpoint=10000 --num_env=10

成功运行,其中打印log:

Loading model from: /home/swanchan/IsaacGym_Preview_4_Package/isaacgym/legged_gym/logs/g1/origin_10000/model_10000.pt

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值