Comparison of integration times in cdlexample.cc and supervisorlearn:



In RiSESimHW.cc:
///// Note that in MMGetFloatSymbol, the first value is the variable you read in 
///// and the second value is the default value if it isn't there.

    // update step is loaded from the module manager setting
    float update_step
      = MMGetFloatSymbol( "mm_update_period", 1000 );

    // other step sizes are loaded from cdl settings
    float display_step
      = MMGetFloatSymbol( "sim_cdl_display_step", 1.0/60.0 * 1e6 );
    float integration_step
      = MMGetFloatSymbol( "sim_cdl_integration_step", 1e-4 * 1e6 );
    float collision_step
      = MMGetFloatSymbol( "sim_cdl_collision_step", 1e-4 * 1e6 );

    update_step = update_step / 1e6; // put in seconds, not microseconds
    display_step = display_step / 1e6;
    integration_step = integration_step / 1e6;
    collision_step = collision_step / 1e6;

    if (integration_step > update_step)
      MMWarning("initHardware",
                "Integration step should be much smaller than RHexLib update");


    sprintf( msg, " Configuration: upd:%f, disp:%f, integ:%f, coll:%f\n",
             update_step, display_step, integration_step, collision_step );
    MMMessage( msg );

    // Set simulation parameters
    cdl->updateStep( update_step );
    cdl->displayStep( display_step );
    cdl->integrationStep( integration_step );
    cdl->collisionStep( collision_step );
    // hard coded backup limit;
    cdl->backupLimit( 0.1 );





In supervisorlearn, in rise_arachi_learn.rc :

# ------------------------------------------------------------
# Simulation parameters for ACCURACY
#

# float mm_update_period = 1000;       # 1 KHz
# float sim_cdl_integration_step = 25; # 40 KHz
# float sim_cdl_collision_step = 25;
# float sim_cdl_display_step = 10000;  # 100 fps

# ------------------------------------------------------------
# Simulation parameters for SPEED
#

int mm_update_period = 5000;          # 200 Hz
float sim_cdl_integration_step = 500; # 2 KHz
float sim_cdl_collision_step =500;
float sim_cdl_display_step = 10000;   # 100 fps

==> This computes to dividing everything by 1e6.  This equals:

### For SPEED:
  cdl->updateStep( 5e-3 );          // mm_update_period.          5e3 * 1e-6 = 5e-3 = 0.005
  cdl->displayStep( 1/100 );        // sim_cdl_display_step       10e3 * 1e-6 = 10e-3 = 0.01
  cdl->integrationStep( 1e-3 /2 );  // sim_cdl_integration_step   500 * 1e-6 = 0.5e-3 = 0.0005
//pcm->updateStep(  );              // not set here, not sure where this is set!
  cdl->collisionStep( 1e-3 /2 );    //sim_cdl_collision_step      500 * 1e-6 = 0.5e-3 = 0.0005
  cdl->backupLimit( 0.1 );          // hard-coded

### For ACCURACY:
  cdl->updateStep( 1e-3 );          // mm_update_period.          1e3 * 1e-6 = 1e-3 = 0.001
  cdl->displayStep( 1/100 );        // sim_cdl_display_step       10e3 * 1e-6 = 10e-3 = 0.01
  cdl->integrationStep( 25e-6 );    // sim_cdl_integration_step   25 * 1e-6 = 25e-6 = 0.000025
//pcm->updateStep(  );              // not set here, not sure where this is set!
  cdl->collisionStep( 25e-6 );      //sim_cdl_collision_step      25 * 1e-6 = 25e-6 = 0.000025
  cdl->backupLimit( 0.1 );          // hard-coded

==> so, the only difference between SPEED and ACCURACY is in the sim_cdl_integration_step and sim_cdl_collision_step.

//    float update_step = MMGetFloatSymbol( "mm_update_period", 1000 );
//    float display_step = MMGetFloatSymbol( "sim_cdl_display_step", 1.0/60.0 * 1e6 );
//    float integration_step = MMGetFloatSymbol( "sim_cdl_integration_step", 1e-4 * 1e6 );
//    float collision_step = MMGetFloatSymbol( "sim_cdl_collision_step", 1e-4 * 1e6 );




In cdlexample.cc:

  // Set simulation parameters      
  cdl->updateStep( 1e-3 );      
  cdl->displayStep( 1/30.0 );      
  cdl->integrationStep( 1e-3 /2 );      
  pcm->updateStep( 1e-3 /2 );
  cdl->collisionStep( 1e-3 /2 );      
  cdl->backupLimit( 0.1 );      


-- AlanAsbeck - 16 Mar 2007

 
This site is powered by the TWiki collaboration platformCopyright &© by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback