Exemple #1
0
def test_heatmap_coverage():
    """Execute Heatmap code to see if most of the things run without crashing"""
    import random
    random.seed(0)

    import numpy as np
    import matplotlib.pyplot as plt

    np.set_printoptions(linewidth=200, precision=2)

    import models
    import robots
    import models.forward as forward
    import models.testbed as testbed
    import models.plots.heat as heat

    # Robot
    #vm = robots.VowelModel()
    vm = robots.KinematicArm2D(dim=3)
    # Forward Model
    fwd = forward.WeightedNNForwardModel.from_robot(vm)
    # Testbed
    tb = testbed.Testbed(vm, fwd)
    # Training model and creating tests
    cases = tb.uniform_motor(10)
    for x, y in cases:
        fwd.add_xy(x, y)
    tb.reset_testcases()
    tb.uniform_sensor(10)

    # Heatmap
    hmf = heat.HotTestbed(tb)
    hmf.plot_fwd(res=5)
    return True
Exemple #2
0
def test_testbed_coverage():
    """Typical code usage of testbed."""

    import robots
    import models.learner as learner
    import models.testbed as testbed

    import random
    random.seed(0)

    # Robot
    arm = robots.KinematicArm2D(dim = 3)

    # Instanciating testbed
    fwdlearners = [learner.Learner.from_robot(arm, fwd = fwd, inv = 'NN') for fwd in learner.fwdclass]
    testbeds    = [testbed.Testbed.from_learner(arm, learnr) for learnr in fwdlearners]

    # Sharing training
    tb0 = testbeds[0]
    tb0.train_motor(10)
    for tb in testbeds:
        tb.fmodel.dataset = tb0.fmodel.dataset

    # Sharing testcases
    tb0.uniform_motor(10)
    for tb in testbeds:
        tb.testcases = tb0.testcases

    # Testing
    for tb in testbeds:
        errors = tb.run_forward()
        avg, std = tb.avg_std(errors)
        fwdname = tb.fmodel.__class__.__name__

    return True
Exemple #3
0
        def test_kin():
            """Test if KinematicArm2D instanciates properly"""
            check = True

            arm = robots.KinematicArm2D(dim = 6)
            self.assertEqual(arm.dim, 6)

            cfg = forest.Tree()
            cfg.dim = 1
            cfg.lengths = 1.0
            cfg.limits = (-1.0, 1.0)
            arm = robots.KinematicArm2D(cfg)
            self.assertEqual(arm.dim, 1)

            cfg.dim = 6
            arm = robots.KinematicArm2D(cfg)
            self.assertEqual(arm.m_feats, tuple(range(-6, 0)))
            self.assertEqual(arm.s_feats, (0, 1))
            self.assertEqual(arm.m_bounds, 6*((-1.0, 1.0),))
Exemple #4
0
def test_curve_coverage():
	"""Instanciate all forward models to being tested."""
	# Robots
	import robots
	arm = robots.KinematicArm2D(dim=3)

	# Learners
	fwdlearners = [learner.Learner.from_robot(vm, fwd=fwd, inv='NN') for fwd in learner.fwdclass.keys()]
	curve = ErrorCurve(arm, fwdlearners, side='forward', trials=30, tests=2, uniformity='sensor')
	curve.plot()

	return True
Exemple #5
0
def test_learner_coverage():
    """Instanciate every combination of fwd and inverse model in a learner"""
    # Robots
    import robots
    #vm = robots.VowelModel()
    vm = robots.KinematicArm2D(dim=3)
    # Learners
    l = learner.Learner.from_robot(vm)
    for fwd in learner.fwdclass.keys():
        for inv in learner.invclass.keys():
            l = learner.Learner.from_robot(vm, fwd=fwd, inv=inv)
    return True
Exemple #6
0
import random
import robots
import models.learner

# Creating a 6DOF robotic arm
arm6DOF = robots.KinematicArm2D(dim=6)
# Creating a learner, regrouping a forward and inverse model
learner = models.learner.Learner.from_robot(arm6DOF, fwd = 'WNN', inv = 'L-BFGS-B')

# Training the learner on 1000 examples
for i in range(1000):
    order = [random.uniform(-90, 90) for _ in range(6)] # random order of dim 6
    effect = arm6DOF.execute_order(order)
    learner.add_xy(order, effect)

# Predicting effects.
print learner.predict_effect((14.0, 20.0, -35.0, 61.0, -11.0, 79.0))

# Infering orders.
x = learner.infer_order((1.5, 5.8))
y = arm6DOF.execute_order(x)
print y

Exemple #7
0
"""
Inverse model benchmark.
Inverse model performance is tested in function of the forward model, 
the inverse and forward parameters and the robots.
"""

import random
random.seed(30)

import robots
from models.learner import Learner
from models.plots.ercurve import ErrorCurve

# Robot
arm = robots.KinematicArm2D(dimM=6)

# Learner
invlearners = (
    [Learner.from_robot(arm, fwd='WNN', inv='BFGS', k=5, sigma=5.0)]
    #+  [Learner.from_robot(arm, fwd = 'WNN',   inv = 'BFGS',          sigma = 10.0)]
    #+  [Learner.from_robot(arm, fwd = 'AvgNN', inv = 'BFGS',   k = 5, sigma = 5.0)]
    + [Learner.from_robot(arm, fwd='ES-LWLR', inv='BFGS', k=20)])

# Plot
curve = ErrorCurve(arm,
                   invlearners,
                   side='inverse',
                   trials=1000,
                   tests=250,
                   uniformity='sensor')
curve.plot()
Exemple #8
0
import robots

print 'Loading 6 DOFs kinematic arm...'
robotArm = robots.KinematicArm2D(dim=6)
print '  m_feats  : %s' % (robotArm.m_feats, )
print '  m_bounds : %s' % (robotArm.m_bounds, )
print '  s_feats  : %s' % (robotArm.s_feats, )
print ''

print 'Executing orders...'
order = tuple(0.0 for _ in range(6))
print '  order : %s\t result : %s' % (order, robotArm.execute_order(order))
order = tuple(10.0 for _ in range(6))
print '  order : %s\t result : %s' % (order, robotArm.execute_order(order))
Exemple #9
0
"""A straightforward example of model benchmarking"""

import robots
import models.learner as learner
import models.testbed as testbed

import random
random.seed(0)

# Robot
arm = robots.KinematicArm2D(dim=3)

# Instanciating testbed
fwdlearners = [
    learner.Learner.from_robot(arm, fwd=fwd, inv='NN')
    for fwd in learner.fwdclass
]
testbeds = [
    testbed.Testbed.from_learner(arm, learnr) for learnr in fwdlearners
]

# Sharing training
tb0 = testbeds[0]
tb0.train_motor(100)
for tb in testbeds:
    tb.fmodel.dataset = tb0.fmodel.dataset

# Sharing testcases
tb0.uniform_motor(100)
for tb in testbeds:
    tb.testcases = tb0.testcases
Exemple #10
0
"""Benchmarking a simple 3 DOF, 2D Kinematic Arm in function of timesteps."""
import random
random.seed(0)

import forest
import robots
from models.learner import Learner, fwdclass
from models.plots.ercurve import ErrorCurve

# Robot
cfg = forest.Tree()
cfg.dim     = 6
cfg.lengths = 1.0
cfg.limits  = (-360.0, 360.0)
arm = robots.KinematicArm2D(cfg)

fwdlearners = []
fwdlearners.append(Learner.from_robot(arm, fwd = 'ES-LWLR', inv = 'L-BFGS-B', k = 2*cfg.dim+1))

curve = ErrorCurve(arm, fwdlearners, side = 'forward', trials = 50000, tests = 200, uniformity = 'motor')
curve.plot()
curve.show()
Exemple #11
0
    plt.xlabel('timesteps')
    plt.title(robot.__class__.__name__)
    plt.ylabel('average error')
    for i, tb in enumerate(testbeds):
        lines.append(plt.plot(teststeps, errors_avg[i]))
        plt.fill_between(teststeps,
                         lower_bound[i],
                         upper_bound[i],
                         facecolor=color,
                         alpha=0.2)

    return lines, tuple(tb.fmodel.__class__.__name__ for tb in testbeds)


# Robot
arm3 = robots.KinematicArm2D(dim=3)
arm6 = robots.KinematicArm2D(dim=6)
vm = robots.VowelModel()
ergo = robots.Ergorobot()

gs = gridspec.GridSpec(2, 2)
gs.update(wspace=0.4, hspace=0.4)
handles, labels = fwdcurves(arm3, gs[0, 0])
handles, labels = fwdcurves(arm6, gs[0, 1])
handles, labels = fwdcurves(vm, gs[1, 0])
handles, labels = fwdcurves(ergo, gs[1, 1])

fig = plt.figure(1)
fig.set_facecolor('white')
fig.suptitle('Benchmarks of Forward Model for Differents Robots')
leg = fig.legend(