Как сопоставить пользовательские клавиши в играх для тренажерных залов Open AI?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как сопоставить пользовательские клавиши в играх для тренажерных залов Open AI?

Сообщение Anonymous »

Я пытался разрешить пользователю играть в среду CarRacing-v0 с помощью специальных клавиш. Я думал, что смогу сделать это с помощью utils.play следующим образом:

Код: Выделить всё

import gym
from gym.utils.play import *

play(gym.make("CarRacing-v0"))
Это отлично работает для сред Atari, но в данном случае я получил

Код: Выделить всё

---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
 in ()
8 # play.keys_to_action = KEYWORD_TO_KEY
9
---> 10 play(gym.make("CarRacing-v0"))
11
12 # mapping of keys

~/Documents/openai/gym/gym/utils/play.py in play(env, transpose, fps, zoom, callback, keys_to_action)
92         else:
93             assert False, env.spec.id + " does not have explicit key to action mapping, " + \
---> 94                           "please specify one manually"
95     relevant_keys = set(sum(map(list, keys_to_action.keys()),[]))
96

AssertionError: CarRacing-v0 does not have explicit key to action mapping, please specify one manually
Итак, мне интересно, как выполнить это сопоставление настраиваемых действий?
Комментарий в коде воспроизведения говорит, что это сопоставление ключей_to_action: dict: tuple(int) - > int

atari_env делает это следующим образом:

Код: Выделить всё

KEYWORD_TO_KEY = {
'UP':      ord('w'),
'DOWN':    ord('s'),
'LEFT':    ord('a'),
'RIGHT':   ord('d'),
'FIRE':    ord(' '),
}
Я знаю, что сценарий car_racing делает это, записывая нажатые клавиши в массив из трех элементов и передавая это значение в env.step. Поэтому я попробовал аналогичный способ:

Код: Выделить всё

KEYWORD_TO_KEY = {'STEER':ord('a'),'GAS':ord('w'),'BREAK':ord('s')}
play.keys_to_action = KEYWORD_TO_KEY
Это не сработало. Я знаю, что рулевое управление неправильное, но я думал, что смогу заставить транспортное средство повернуть хотя бы в одну сторону.
Затем я проверил переназначение ключевых слов на пользовательскую комбинацию в одной из игр Atari.
Игра работала, но Сопоставление клавиш было оригинальным, а не моей модификацией.

Ребята, вы знаете, как правильно выполнить это пользовательское сопоставление клавиш?

Подробнее здесь: https://stackoverflow.com/questions/497 ... -gym-games
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»