Skip to content

Commit b81954a

Browse files
Merge pull request #76 from ci-group/examples_fix
Examples fix
2 parents 5ed6955 + 8a1898e commit b81954a

File tree

4 files changed

+87
-360
lines changed

4 files changed

+87
-360
lines changed

experiments/examples/manager.py

Lines changed: 33 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,73 +1,62 @@
11
#!/usr/bin/env python3
2+
"""
3+
This script loads a robot.yaml file and inserts it into the simulator.
4+
"""
5+
26
import os
37
import sys
48
import asyncio
5-
6-
# Add `..` folder in search path
7-
current_dir = os.path.dirname(os.path.abspath(__file__))
8-
newpath = os.path.join(current_dir, '..', '..')
9-
sys.path.append(newpath)
10-
11-
from pygazebo.pygazebo import DisconnectError
12-
13-
from pyrevolve import revolve_bot
14-
from pyrevolve import parser
159
from pyrevolve.SDF.math import Vector3
10+
from pyrevolve import revolve_bot, parser
1611
from pyrevolve.tol.manage import World
12+
from pyrevolve.util.supervisor.supervisor_multi import DynamicSimSupervisor
13+
from pyrevolve.evolution import fitness
1714

1815

1916
async def run():
2017
"""
2118
The main coroutine, which is started below.
2219
"""
20+
robot_file_path = "experiments/examples/yaml/spider.yaml"
21+
2322
# Parse command line / file input arguments
2423
settings = parser.parse_args()
2524

25+
# Start Simulator
26+
if settings.simulator_cmd != 'debug':
27+
simulator_supervisor = DynamicSimSupervisor(
28+
world_file=settings.world,
29+
simulator_cmd=settings.simulator_cmd,
30+
simulator_args=["--verbose"],
31+
plugins_dir_path=os.path.join('.', 'build', 'lib'),
32+
models_dir_path=os.path.join('.', 'models'),
33+
simulator_name='gazebo'
34+
)
35+
await simulator_supervisor.launch_simulator(port=settings.port_start)
36+
await asyncio.sleep(0.1)
37+
2638
# Load a robot from yaml
2739
robot = revolve_bot.RevolveBot()
28-
robot.load_file("experiments/examples/yaml/spider.yaml")
40+
robot.load_file(robot_file_path)
2941
robot.update_substrate()
3042
# robot._brain = BrainRLPowerSplines()
3143

3244
# Connect to the simulator and pause
33-
world = await World.create(settings)
34-
await world.pause(True)
45+
connection = await World.create(settings, world_address=('127.0.0.1', settings.port_start))
46+
await asyncio.sleep(1)
3547

36-
await world.delete_model(robot.id)
37-
await asyncio.sleep(2.5)
48+
# Starts the simulation
49+
await connection.pause(False)
3850

3951
# Insert the robot in the simulator
40-
robot_manager = await world.insert_robot(robot, Vector3(0, 0, 0.25))
41-
42-
# Resume simulation
43-
await world.pause(False)
52+
robot_manager = await connection.insert_robot(robot, Vector3(0, 0, settings.z_start))
4453

4554
# Start a run loop to do some stuff
4655
while True:
4756
# Print robot fitness every second
48-
print("Robot fitness is {fitness}".format(
49-
fitness=robot_manager.fitness()))
57+
status = 'dead' if robot_manager.dead else 'alive'
58+
print(f"Robot fitness ({status}) is \n"
59+
f" OLD: {fitness.online_old_revolve(robot_manager)}\n"
60+
f" DISPLAC: {fitness.displacement(robot_manager, robot)}\n"
61+
f" DIS_VEL: {fitness.displacement_velocity(robot_manager, robot)}")
5062
await asyncio.sleep(1.0)
51-
52-
53-
def main():
54-
def handler(loop, context):
55-
exc = context['exception']
56-
if isinstance(exc, DisconnectError) \
57-
or isinstance(exc, ConnectionResetError):
58-
print("Got disconnect / connection reset - shutting down.")
59-
sys.exit(0)
60-
raise context['exception']
61-
62-
try:
63-
loop = asyncio.get_event_loop()
64-
loop.set_exception_handler(handler)
65-
loop.run_until_complete(run())
66-
except KeyboardInterrupt:
67-
print("Got CtrlC, shutting down.")
68-
69-
70-
if __name__ == '__main__':
71-
print("STARTING")
72-
main()
73-
print("FINISHED")

experiments/examples/manager_multi.py

Lines changed: 0 additions & 240 deletions
This file was deleted.

0 commit comments

Comments
 (0)