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
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
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),))
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
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
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
""" 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()
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))
"""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
"""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()
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(