You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Gymnasium在Jupyter Notebook中键盘操控CartPole时小车持续左移的问题求助

Gymnasium在Jupyter Notebook中键盘操控CartPole时小车持续左移的问题求助

我最近在Jupyter Notebook里尝试用键盘操控CartPole-v1环境,用的是Farama文档里的代码:

import gymnasium as gym
from gymnasium.utils.play import play

env = gym.make("CartPole-v1", render_mode="rgb_array")
play(env, keys_to_action={"a": 0, "d": 1}, fps=2)

但不管我按多少次d键,小车一个劲往左跑,根本不往右动,有没有大佬能帮忙看看怎么解决这个问题呀?


可能的解决方案:

  • 检查Jupyter的键盘焦点问题
    Jupyter Notebook单元格运行后,弹出的CartPole窗口大概率没获得键盘焦点!你得先点击一下游戏窗口,确保它处于激活状态,再按d键试试——很多时候都是这个小细节坑了人。

  • 调整render_mode参数
    你用的render_mode="rgb_array"是返回像素数组的模式,在Jupyter环境里和键盘交互的兼容性可能不太好。可以改成专门用于人类交互的render_mode="human"试试:

    env = gym.make("CartPole-v1", render_mode="human")
    
  • 验证keys_to_action映射是否生效
    虽然你写的{"a": 0, "d": 1}看起来没问题,但可以临时加个回调函数测试动作映射是否真的触发:

    def callback(obs_t, obs_tp1, action, rew, terminated, truncated, info):
        print(f"当前触发动作:{action}")
    
    play(env, keys_to_action={"a": 0, "d": 1}, fps=2, callback=callback)
    

    如果按下d时打印的是1,那动作映射没问题;如果没反应或者还是0,说明键盘输入没被正确捕获,回到第一步检查窗口焦点。

  • 尝试在普通Python脚本中运行
    有时候Jupyter的交互环境会和Gymnasium的play函数有冲突。你可以把代码复制到普通的.py文件里,用Python直接运行,看看问题是否还存在——如果在普通脚本里正常,那就是Jupyter的环境适配问题了。


备注:内容来源于stack exchange,提问作者Moltres

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 15:27:53