OverviewFilesCommitsIssuesDocsReleasesPeers

opencog-rocca / examples / cartpole / cartpole.py

69 lines · python ref:
# Define an agent for the CartPole env with GymAgent

##############
# Initialize #
##############

# Python
import time
from typing import List

# OpenCog
from opencog.atomspace import AtomSpace
from opencog.utilities import set_default_atomspace
from opencog.type_constructors import *
from opencog.spacetime import *
from opencog.pln import *
from opencog.ure import ure_logger
from opencog.logger import log

# OpenAI Gym
import gym

env = gym.make("CartPole-v1")
# Uncomment the following to get a description of env
# help(env.unwrapped)

# OpenCog Gym
from rocca.agents.cartpole import FixedCartPoleAgent
from rocca.agents.utils import *
from rocca.envs.wrappers import GymWrapper, CartPoleWrapper

from rocca.utils import *


########
# Main #
########
def main():
    # Init loggers
    log.set_level("fine")
    log.set_sync(False)
    agent_log.set_level("fine")
    agent_log.set_sync(False)
    ure_logger().set_level("fine")
    ure_logger().set_sync(False)

    # Set main atomspace
    atomspace = AtomSpace()
    set_default_atomspace(atomspace)

    # Wrap environment
    wrapped_env = CartPoleWrapper(env, atomspace)

    # Instantiate CartPoleAgent, and tune parameters
    cpa = FixedCartPoleAgent(wrapped_env, atomspace)
    cpa.delta = 1.0e-16

    # Run control loop
    while not cpa.control_cycle():
        wrapped_env.render()
        time.sleep(0.1)
        log.info("cycle_count = {}".format(cpa.cycle_count))

    log_msg(agent_log, f"The final reward is {cpa.accumulated_reward}.")


if __name__ == "__main__":
    main()