NTRT Simulator  Version: Master
 All Classes Namespaces Files Functions Variables Typedefs Friends Pages
JSONMetricsFeedbackControl Class Reference

#include <JSONMetricsFeedbackControl.h>

Inheritance diagram for JSONMetricsFeedbackControl:
Collaboration diagram for JSONMetricsFeedbackControl:

Classes

struct  Config
 

Public Member Functions

 JSONMetricsFeedbackControl (JSONMetricsFeedbackControl::Config config, std::string args, std::string resourcePath="")
 
virtual void onSetup (BaseQuadModelLearning &subject)
 
virtual void onStep (BaseQuadModelLearning &subject, double dt)
 
virtual void onTeardown (BaseQuadModelLearning &subject)
 
const double getCPGValue (std::size_t i) const
 
double getScore () const
 
virtual void onAttach (BaseQuadModelLearning &subject)
 
void attach (tgObserver< JSONQuadCPGControl > *pObserver)
 
void notifyStep (double dt)
 
void notifySetup ()
 
void notifyTeardown ()
 

Protected Member Functions

virtual void setupCPGs (BaseQuadModelLearning &subject, array_2D nodeActions, array_4D edgeActions)
 
virtual array_2D scaleNodeActions (Json::Value actions)
 
std::vector< double > getFeedback (BaseQuadModelLearning &subject)
 
std::vector< double > getCableState (const tgSpringCableActuator &cable)
 
std::vector< double > transformFeedbackActions (std::vector< std::vector< double > > &actions)
 
virtual void printMetrics (BaseQuadModelLearning &subject)
 
virtual array_4D scaleEdgeActions (Json::Value edgeParam)
 

Protected Attributes

JSONMetricsFeedbackControl::Config m_config
 
std::vector
< tgCPGActuatorControl * > 
m_spineControllers
 
neuralNetwork * nn
 
std::vector< double > m_muscleTensionZero
 
std::vector< double > m_muscleTensionOne
 
std::vector< double > m_muscleTensionTwo
 
std::vector< double > m_muscleTensionThree
 
std::vector< double > m_muscleTensionFour
 
std::vector< double > m_muscleTensionFive
 
std::vector< double > m_muscleTensionSix
 
std::vector< double > m_muscleTensionSeven
 
std::vector< double > m_muscleTensionEight
 
std::vector< double > m_muscleTensionNine
 
std::vector< double > m_muscleTensionTen
 
std::vector< double > m_muscleTensionEleven
 
std::vector< double > m_muscleTensionTwelve
 
std::vector< double > m_muscleTensionThirteen
 
std::vector< double > m_muscleTensionFourteen
 
std::vector< double > m_muscleTensionFifteen
 
std::vector< double > m_muscleTensionSixteen
 
std::vector< double > m_muscleTensionSeventeen
 
std::vector< double > m_muscleTensionEighteen
 
std::vector< double > m_muscleTensionNineteen
 
std::vector< double > m_muscleTensionTwenty
 
std::vector< double > m_muscleTensionTwentyOne
 
std::vector< double > m_muscleTensionTwentyTwo
 
std::vector< double > m_muscleTensionTwentyThree
 
std::vector< double > m_muscleTensionTwentyFour
 
std::vector< double > m_muscleTensionTwentyFive
 
std::vector< double > m_muscleTensionTwentySix
 
std::vector< double > m_muscleTensionTwentySeven
 
std::vector< double > m_muscleTensionTwentyEight
 
std::vector< double > m_muscleTensionTwentyNine
 
std::vector< double > m_muscleTensionThirty
 
std::vector< double > m_muscleTensionThirtyOne
 
std::vector< double > m_muscleTensionThirtyTwo
 
std::vector< double > m_muscleTensionThirtyThree
 
std::vector< double > m_muscleTensionThirtyFour
 
std::vector< double > m_muscleTensionThirtyFive
 
std::vector< double > m_muscleTensionThirtySix
 
std::vector< double > m_muscleTensionThirtySeven
 
std::vector< double > m_muscleTensionThirtyEight
 
std::vector< double > m_muscleTensionThirtyNine
 
std::vector< double > m_muscleTensionForty
 
std::vector< double > m_muscleTensionFortyOne
 
std::vector< double > m_muscleTensionFortyTwo
 
std::vector< double > m_muscleTensionFortyThree
 
std::vector< double > m_muscleTensionFortyFour
 
std::vector< double > m_muscleTensionFortyFive
 
std::vector< double > m_muscleTensionFortySix
 
std::vector< double > m_muscleTensionFortySeven
 
std::vector< double > m_muscleTensionFortyEight
 
std::vector< double > m_muscleTensionFortyNine
 
std::vector< double > m_muscleTensionFifty
 
std::vector< double > m_muscleTensionFiftyOne
 
std::vector< double > m_muscleLengthZero
 
std::vector< double > m_muscleLengthOne
 
std::vector< double > m_muscleLengthTwo
 
std::vector< double > m_muscleLengthThree
 
std::vector< double > m_muscleLengthFour
 
std::vector< double > m_muscleLengthFive
 
std::vector< double > m_muscleLengthSix
 
std::vector< double > m_muscleLengthSeven
 
std::vector< double > m_muscleLengthEight
 
std::vector< double > m_muscleLengthNine
 
std::vector< double > m_muscleLengthTen
 
std::vector< double > m_muscleLengthEleven
 
std::vector< double > m_muscleLengthTwelve
 
std::vector< double > m_muscleLengthThirteen
 
std::vector< double > m_muscleLengthFourteen
 
std::vector< double > m_muscleLengthFifteen
 
std::vector< double > m_muscleLengthSixteen
 
std::vector< double > m_muscleLengthSeventeen
 
std::vector< double > m_muscleLengthEighteen
 
std::vector< double > m_muscleLengthNineteen
 
std::vector< double > m_muscleLengthTwenty
 
std::vector< double > m_muscleLengthTwentyOne
 
std::vector< double > m_muscleLengthTwentyTwo
 
std::vector< double > m_muscleLengthTwentyThree
 
std::vector< double > m_muscleLengthTwentyFour
 
std::vector< double > m_muscleLengthTwentyFive
 
std::vector< double > m_muscleLengthTwentySix
 
std::vector< double > m_muscleLengthTwentySeven
 
std::vector< double > m_muscleLengthTwentyEight
 
std::vector< double > m_muscleLengthTwentyNine
 
std::vector< double > m_muscleLengthThirty
 
std::vector< double > m_muscleLengthThirtyOne
 
std::vector< double > m_muscleLengthThirtyTwo
 
std::vector< double > m_muscleLengthThirtyThree
 
std::vector< double > m_muscleLengthThirtyFour
 
std::vector< double > m_muscleLengthThirtyFive
 
std::vector< double > m_muscleLengthThirtySix
 
std::vector< double > m_muscleLengthThirtySeven
 
std::vector< double > m_muscleLengthThirtyEight
 
std::vector< double > m_muscleLengthThirtyNine
 
std::vector< double > m_muscleLengthForty
 
std::vector< double > m_muscleLengthFortyOne
 
std::vector< double > m_muscleLengthFortyTwo
 
std::vector< double > m_muscleLengthFortyThree
 
std::vector< double > m_muscleLengthFortyFour
 
std::vector< double > m_muscleLengthFortyFive
 
std::vector< double > m_muscleLengthFortySix
 
std::vector< double > m_muscleLengthFortySeven
 
std::vector< double > m_muscleLengthFortyEight
 
std::vector< double > m_muscleLengthFortyNine
 
std::vector< double > m_muscleLengthFifty
 
std::vector< double > m_muscleLengthFiftyOne
 
std::vector< std::vector
< double > > 
m_muscleTensionsAll
 
std::vector< std::vector
< double > > 
m_muscleLengthsAll
 
std::vector< std::vector
< double > > 
m_quadCOM
 
std::vector< double > m_timeStep
 
std::vector< double > m_tensions
 
std::vector< double > m_lengths
 
CPGEquationsm_pCPGSys
 
std::vector
< tgCPGActuatorControl * > 
m_allControllers
 
std::vector< double > initConditions
 
std::size_t segments
 
tgDataObserver m_dataObserver
 
double m_updateTime
 
double m_totalTime
 
std::vector< double > scores
 
std::vector< double > metrics
 
bool bogus
 
std::string controlFilename
 
std::string controlFilePath
 

Detailed Description

JSONMetricsFeedbackControl learns the parameters for a CPG system on a spine like tensegrity structure specified as a BaseSpineModelLearning. Parameters are generated by AnnealEvolution and used in the CPGEquations family of classes. tgImpedanceController controllers are used for the detailed muscle control. Due to the number of parameters, the learned parameters are split into one config file for the nodes and another for the CPG's "edges"

Definition at line 47 of file JSONMetricsFeedbackControl.h.

Constructor & Destructor Documentation

JSONMetricsFeedbackControl::JSONMetricsFeedbackControl ( JSONMetricsFeedbackControl::Config  config,
std::string  args,
std::string  resourcePath = "" 
)

Defining the adapters here assumes the controller is around and attached for the lifecycle of the learning runs. I.E. that the setup and teardown functions are used for tgModel

Definition at line 106 of file JSONMetricsFeedbackControl.cpp.

Member Function Documentation

void tgSubject< JSONQuadCPGControl >::attach ( tgObserver< JSONQuadCPGControl > *  pObserver)
inherited

Attach an observer to the subject of the observer.

Parameters
[in,out]pObservera pointer to an observer for the subject; do nothing if the pointer is NULL
void tgSubject< JSONQuadCPGControl >::notifySetup ( )
inherited

Call tgObserver<T>::onSetup() on all observers in the order in which they were attached.

void tgSubject< JSONQuadCPGControl >::notifyStep ( double  dt)
inherited

Call tgObserver<T>::onStep() on all observers in the order in which they were attached.

Parameters
[in]dtthe number of seconds since the previous call; do nothing if not positive
void tgSubject< JSONQuadCPGControl >::notifyTeardown ( )
inherited

Call tgObserver<T>::onTeardown() on all observers in the order in which they were attached.

virtual void tgObserver< BaseQuadModelLearning >::onAttach ( BaseQuadModelLearning subject)
inlinevirtualinherited

Notify the observers when an attach action has occurred. Will only occur once, typically before setup

Parameters
[in,out]subjectthe subject being observed

Definition at line 55 of file tgObserver.h.

void JSONMetricsFeedbackControl::onSetup ( BaseQuadModelLearning subject)
virtual

Notify the observers when a setup action has occurred.

Parameters
[in,out]subjectthe subject being observed

Reimplemented from JSONQuadCPGControl.

Definition at line 121 of file JSONMetricsFeedbackControl.cpp.

void JSONMetricsFeedbackControl::onStep ( BaseQuadModelLearning subject,
double  dt 
)
virtual

Notify the observers when a step action has occurred.

Parameters
[in,out]subjectthe subject being observed
[in]thenumber of seconds since the previous call; must be positive

Max and min heights added to config

Todo:
if bogus, stop trial (reset simulation)
Todo:
add to config
Todo:
if bogus, stop trial (reset simulation)

Reimplemented from JSONQuadCPGControl.

Definition at line 220 of file JSONMetricsFeedbackControl.cpp.

void JSONMetricsFeedbackControl::onTeardown ( BaseQuadModelLearning subject)
virtual

Notify the observers when a teardown action has occurred.

Parameters
[in,out]subjectthe subject being observed
Todo:
  • consolidate with other controller classes.
Todo:
  • return length scale as a parameter
Todo:
  • consolidate with other controller classes.
Todo:
  • return length scale as a parameter

Reimplemented from JSONQuadCPGControl.

Definition at line 298 of file JSONMetricsFeedbackControl.cpp.

Here is the call graph for this function:

array_4D JSONQuadCPGControl::scaleEdgeActions ( Json::Value  edgeParam)
protectedvirtualinherited

Takes a vector of parameters reported by learning, and then converts it into a format used to assign to the CPGEdges Note that if the CPG edges change, this will need to change

Todo:
consider adding exception here

Definition at line 389 of file JSONQuadCPGControl.cpp.


The documentation for this class was generated from the following files: