def __init__(self, randomize=False, rnn_xml=None, verbose=False): """Initialize Creates the environment and viewer objects required to run the neural network PA10 robotic arm simulation. Arguments: randomize: Determines if the test article gates will be randomized. (Default: False) rnn_xml: A XML filename containing neural network parameters. If None, a new neural network will be trained until convergence. (Default: None) verbose: Determines the level out debug output generated. (Default: False) """ # Generate the XODE file XODE_FILENAME = 'model' # .xode is appended automatically print('>>> Generating world model') if os.path.exists('./' + XODE_FILENAME + '.xode'): os.remove('./' + XODE_FILENAME + '.xode') xode_model = NeuralSimWorld(name=XODE_FILENAME, randomize_test_article=randomize) xode_model.generate() print('>>> Generating RNN') # Determine if we need to train the neural network if rnn_xml is not None: print('>>> Loading RNN from file') self.rnn = network.PathPlanningNetwork() self.rnn.load_network_from_file(rnn_xml) else: print('>>> Training new RNN') self.rnn = network.train_path_planning_network() self.rnn.save_network_to_file(constants.G_RNN_XML_OUT) print('>>> Starting kinematics engine') self.kinematics = PA10Kinematics() # Start environment print('>>> Starting environment') self.env = EnvironmentInterface( xode_filename='./' + XODE_FILENAME + '.xode', realtime=False, verbose=verbose, gravity=constants.G_ENVIRONMENT_GRAVITY) # Start viewer print('>>> Starting viewer') self.viewer = ViewerInterface(verbose=verbose) self.viewer.start() # Set up all grouped bodies in the environment self.env.groups = { 'pointer': ['tooltip', 'stick'], } return
def __init__(self, randomize=False, network=False, verbose=False): """Initialize Creates the environment, viewer, and (Phantom Omni) controller objects required to run the human data capture simulation. Arguments: randomize: Determines if the test article gates will be randomized. (Default: False) network: Determines if the omni connection is local or networked. (Default: False) verbose: Determines the level out debug output generated. (Default: False) """ # Generate the XODE file XODE_FILENAME = 'model' # .xode is appended automatically print('>>> Generating world model') if os.path.exists('./'+XODE_FILENAME+'.xode'): os.remove('./'+XODE_FILENAME+'.xode') xode_model = TrainingSimWorld( name=XODE_FILENAME, randomize_test_article=randomize ) xode_model.generate() # Start environment print('>>> Starting environment') self.env = EnvironmentInterface( xode_filename='./'+XODE_FILENAME+'.xode', realtime=False, verbose=verbose, gravity=constants.G_ENVIRONMENT_GRAVITY ) # Set up all grouped bodies in the environment self.env.groups = { 'pointer': ['tooltip', 'stick'], } # Start viewer print('>>> Starting viewer') self.viewer = ViewerInterface(verbose=verbose) self.viewer.start() # Start controller print('>>> Starting Phantom Omni interface') self.omni = PhantomOmniInterface() if network: ip = raw_input('<<< Enter host ip: ') port = int(raw_input('<<< Enter tcp port: ')) else: ip = constants.G_IP_LOCAL_DEFAULT port = constants.G_PORT_DEFAULT # Try to connect to the Phantom Omni controller self.omni.connect(ip, port) self.saved_data = np.array([]) return