使用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
相关产品推荐
相关产品推荐

