Isaac Lab CartPole实验(摄像头版本)

Isaac Lab安装可以看这个教程:http://t.csdnimg.cn/SN7duhttp://t.csdnimg.cn/SN7du

1. 问题定义与建模

  • 问题描述:CartPole问题是一个经典的强化学习问题,cartpole 由 cart和pole构成,其中一个小车(Cart)上连接着一根可以摆动的杆子(Pole)。小车可以在一条无摩擦的轨道上左右移动,而我们的目标是通过对小车施加向左或向右的力,使杆子保持直立状态尽可能长的时间。
  • 状态空间S:状态通常包括小车的位置、速度、杆子的角度和角速度。这里我们使用摄像头传感器作为状态空间。
  • 动作空间A:一般的cartpole-v0与cartPole -v1动作空间是离散的,只有两种可能的动作------向左(0)或向右(1)。这里动作是给cart施加力,动作空间是(-∞,+∞)。

动作接口方法

  • 奖励函数R :每当杆子保持直立时,会获得一个正的奖励(如+1)。当杆子偏离垂直方向超过一定角度(如15度)或小车偏离中心过远时,该回合结束,并可能获得一个负的奖励。

reward接口方法

具体reward计算方法

这里reward可以看到,活着有奖励,杆子角度偏离0°惩罚线性增大,这个惩罚权重最高,同时车的速度波动也有惩罚。

  • 终止条件

2. 环境设置

  • 在强化学习中,我们通常使用现有的库(如OpenAI Gym)来提供CartPole环境。通过gym.make('CartPole-v1')(或v0,取决于版本)可以创建CartPole环境。
  • 如何添加摄像头:

Adding sensors on a robot --- Isaac Lab documentation (isaac-sim.github.io)

相机是使用 sensors.CameraCfg .它基于 USD Camera 传感器,并使用 Omniverse Replicator API 捕获不同的数据类型。由于它在场景中具有相应的prim,因此在场景中以指定的prims路径创建prim。

相机传感器的配置包括以下参数:

spawn :要创建的 USD 相机类型。这可以是 PinholeCameraCfg FisheyeCameraCfg

offset :相机传感器与父prim的偏移量。

data_types :相机要获取的数据类型。这可以是 rgb 、depth 、 distance_to_image_planenormals 或 USD 相机传感器支持的其他类型。

官方的一个相机例子:

python 复制代码
camera = CameraCfg(
        prim_path="{ENV_REGEX_NS}/Robot/base/front_cam",
        update_period=0.1,
        height=480,
        width=640,
        data_types=["rgb", "distance_to_image_plane"],
        spawn=sim_utils.PinholeCameraCfg(
            focal_length=24.0, focus_distance=400.0, horizontal_aperture=20.955, clipping_range=(0.1, 1.0e5)
        ),
        offset=CameraCfg.OffsetCfg(pos=(0.510, 0.0, 0.015), rot=(0.5, -0.5, 0.5, -0.5), convention="ros"),
    )

我们将相机的更新周期设置为 0.1s,这意味着相机传感器以 10Hz 更新。prim_path 设置为 {ENV_REGEX_NS}/Robot/base/front_cam 其中 是 {ENV_REGEX_NS} 环境命名空间, "Robot" 是机器人的名称, "base" 是相机附加到的 prim 的名称,"front_cam"是 与相机传感器关联的 prim 的名称。

这里的offset是偏移量,被指定为相对于base基础框架的平移和旋转。convention似乎是该指定偏移的约定。

再看CartPole例程里添加的RGB和深度相机的配置:

那么这里offset实际该如何确定呢?

在运行的场景里查看摄像头实际偏移量offset,很明显这里的摄像头offset是相对于env_120的。

切到该摄像头视角

所以这里是将摄像头架到倒立摆前面,去做视觉端到端训练。

offset具体参数如何定义,我的建议是去USD Composer或Isaac Sim里设置,然后将获取的坐标关系带到代码里。

3. 策略定义

  • 初始策略可以是随机的,即随机选择向左或向右的动作。
  • 随着学习的进行,策略会逐渐优化,使智能体能够更长时间地保持杆子直立。

4. 学习算法选择

  • 对于CartPole这样的简单问题,可以选择多种强化学习算法,如Q-learning、SARSA、策略梯度等。
  • 也可以使用深度学习技术,如深度Q网络(DQN),来逼近Q值函数

这里使用的是ppo算法,配置在yaml文件中,网络是cnn,可以从文件中看到模型结构。

5. 训练与迭代

  • 智能体与环境进行交互,收集数据(状态、动作、奖励和下一个状态)。
  • 使用这些数据来更新策略或Q值函数。
  • 随着迭代的进行,智能体将学会在给定状态下选择最佳动作,以最大化累积奖励。
bash 复制代码
# 不使用摄像头训练
python source/standalone/workflows/rl_games/train.py --task=Isaac-Cartpole-Direct-v0
# 使用RGB摄像头
python source/standalone/workflows/rl_games/train.py --task=Isaac-Cartpole-RGB-Camera-Direct-v0 --headless --enable_cameras --video

由于加了--video,可以在logs目录里看到保存的视频;

Isaac Lab CartPole训练20000步效果

训练窗口展示,当有最高reward的时候会保存模型

使用tensorboard来查看训练过程:

bash 复制代码
python -m tensorboard.main --logdir logs/rl_games/cartpole_camera_direct

6. 测试与评估

  • 在测试环境中评估智能体的性能,观察它能够保持杆子直立多长时间。
  • 可以比较不同算法或参数设置下的性能。

cartpole_camera_direct.pth 是 best rewards的结果,所以加载该checkpoint 来演示效果。

saving next best rewards: 250.49663

=> saving checkpoint 'D:\omniverse\pkg\isaac-lab\IsaacLab\logs\rl_games\cartpole_camera_direct\2024-06-06_11-01-07\nn\cartpole_camera_direct.pth'

bash 复制代码
# python source/standalone/workflows/rl_games/play.py --task=Isaac-Cartpole-RGB-Camera-Direct-v0 --checkpoint /PATH/TO/model.pth

python source/standalone/workflows/rl_games/play.py --task=Isaac-Cartpole-RGB-Camera-Direct-v0 --checkpoint logs/rl_games/cartpole_camera_direct/2024-06-06_11-01-07/nn/cartpole_camera_direct.pth

Isaac Lab CartPole play效果

相关推荐
梦想的旅途24 分钟前
企微 API 二次开发:利用 AI Agent 实现自动化运维
运维·人工智能·企业微信
DS随心转APP10 分钟前
deepseek生成的word怎么下载 AI导出鸭全平台方案技术深度测评
人工智能·ai·chatgpt·word·deepseek·ai导出鸭
睿本云19 分钟前
从“有数据”到“会用数据”,一次标签体系的升级能带来的改变
大数据·人工智能
俊哥V22 分钟前
每日 AI 研究简报 · 2026-08-14
人工智能·ai
NutShell Wang24 分钟前
「音画同生」时代开启:2026 年 8 月 AI 视频生成四大发布复盘
人工智能·开源·aigc·ai agent·智能体·vibe coding
正在走向自律32 分钟前
WorkBuddy AI工具使用介绍完全指南
人工智能·爬虫·ai编程·workbuddy·ai的力量
EasyGBS35 分钟前
告别“通用AI”的三大痛点:国标GB28181公网平台EasyGBS+DLTM让企业拥有专属AI安防大脑
人工智能·深度学习·机器学习
爱分享的康康35 分钟前
解锁路测数据价值|康谋自动驾驶采集‑分析全链路方案解读
人工智能·数码相机·自动驾驶
链上日记1 小时前
WEEX TradFi交易边界正在消失
人工智能
ctlover1 小时前
AI应用项目开发源码级教程:AI智能伴侣
人工智能