Homepage Demos Overview Downloads Tutorials Reference
Credits

StartupBehavior_SetupWalkEdit.cc

Go to the documentation of this file.
00001 /*! @file
00002  * @brief Sets up menus for runtime editing of parameters for the CMPack'02 walk engine
00003  *
00004  * Contributed by:
00005  * Pennsylvania Governor's School for the Sciences 2003 Team Project
00006  * Group name: "See, Spot; Run"
00007  * Members: Haoqian Chen, Elena Glassman, Chengjou Liao, Yantian Martin, Lisa Shank, Jon Stahlman
00008  *
00009  * @author PA Gov. School for the Sciences 2003 Team Project - Motion group: Haoqian Chen, Yantian Martin, Jon Stahlman (creators)
00010  * 
00011  * $Author: ejt $
00012  * $Name: tekkotsu-2_1 $
00013  * $Revision: 1.7 $
00014  * $State: Exp $
00015  * $Date: 2004/02/26 01:03:00 $
00016  */
00017 
00018 #include "StartupBehavior.h"
00019 
00020 #include "Behaviors/Controls/ControlBase.h"
00021 
00022 #include "Behaviors/Mon/WalkControllerBehavior.h"
00023 #include "Behaviors/Controls/BehaviorSwitchControl.h"
00024 #include "Behaviors/Controls/LoadWalkControl.h"
00025 #include "Behaviors/Controls/SaveWalkControl.h"
00026 #include "Behaviors/Controls/ValueEditControl.h"
00027 #include "Behaviors/Controls/WalkCalibration.h"
00028 #include "Behaviors/Controls/LoadCalibration.h"
00029 
00030 ControlBase*
00031 StartupBehavior::SetupWalkEdit() {
00032   addItem(new ControlBase("Walk Edit","Edit the walk parameters"));
00033   startSubMenu();
00034   { 
00035     WalkControllerBehavior * walker = new WalkControllerBehavior();
00036     addItem((new BehaviorSwitchControlBase(walker)));
00037 
00038     addItem(new ValueEditControl<float>("Slow Motion",walker->getWalkMC()->getSlowMo()));
00039 
00040     addItem(new ControlBase("Body","Edit the walk parameters"));
00041     startSubMenu();
00042     { 
00043       addItem(new ValueEditControl<double>("Body Height",&walker->getWalkMC()->getWP().body_height));
00044       addItem(new ValueEditControl<double>("Body Angle",&walker->getWalkMC()->getWP().body_angle));
00045       addItem(new ValueEditControl<double>("Hop",&walker->getWalkMC()->getWP().hop));
00046       addItem(new ValueEditControl<double>("Sway",&walker->getWalkMC()->getWP().sway));
00047       addItem(new ValueEditControl<long>("Period",&walker->getWalkMC()->getWP().period));
00048     }
00049     endSubMenu();
00050 
00051     addItem(new ControlBase("Neutral","Edit the walk parameters"));
00052     startSubMenu();
00053     { 
00054       addItem(new ValueEditControl<double>("NeuLeg[xFL]",&walker->getWalkMC()->getWP().leg[0].neutral.x));
00055       addItem(new ValueEditControl<double>("NeuLeg[xFR]",&walker->getWalkMC()->getWP().leg[1].neutral.x));
00056       addItem(new ValueEditControl<double>("NeuLeg[xBL]",&walker->getWalkMC()->getWP().leg[2].neutral.x));
00057       addItem(new ValueEditControl<double>("NeuLeg[xBR]",&walker->getWalkMC()->getWP().leg[3].neutral.x));
00058       addItem(new ValueEditControl<double>("NeuLeg[yFL]",&walker->getWalkMC()->getWP().leg[0].neutral.y));
00059       addItem(new ValueEditControl<double>("NeuLeg[yFR]",&walker->getWalkMC()->getWP().leg[1].neutral.y));
00060       addItem(new ValueEditControl<double>("NeuLeg[yBL]",&walker->getWalkMC()->getWP().leg[2].neutral.y));
00061       addItem(new ValueEditControl<double>("NeuLeg[yBR]",&walker->getWalkMC()->getWP().leg[3].neutral.y));
00062       addItem(new ValueEditControl<double>("NeuLeg[zFL]",&walker->getWalkMC()->getWP().leg[0].neutral.z));
00063       addItem(new ValueEditControl<double>("NeuLeg[zFR]",&walker->getWalkMC()->getWP().leg[1].neutral.z));
00064       addItem(new ValueEditControl<double>("NeuLeg[zBL]",&walker->getWalkMC()->getWP().leg[2].neutral.z));
00065       addItem(new ValueEditControl<double>("NeuLeg[zBR]",&walker->getWalkMC()->getWP().leg[3].neutral.z));
00066     }
00067     endSubMenu();
00068 
00069     addItem(new ControlBase("lift_vel","Edit the walk parameters"));
00070     startSubMenu();
00071     { 
00072       addItem(new ValueEditControl<double>("liftLeg[xFL]",&walker->getWalkMC()->getWP().leg[0].lift_vel.x));
00073       addItem(new ValueEditControl<double>("liftLeg[xFR]",&walker->getWalkMC()->getWP().leg[1].lift_vel.x));
00074       addItem(new ValueEditControl<double>("liftLeg[xBL]",&walker->getWalkMC()->getWP().leg[2].lift_vel.x));
00075       addItem(new ValueEditControl<double>("liftLeg[xBR]",&walker->getWalkMC()->getWP().leg[3].lift_vel.x));
00076       addItem(new ValueEditControl<double>("liftLeg[yFL]",&walker->getWalkMC()->getWP().leg[0].lift_vel.y));
00077       addItem(new ValueEditControl<double>("liftLeg[yFR]",&walker->getWalkMC()->getWP().leg[1].lift_vel.y));
00078       addItem(new ValueEditControl<double>("liftLeg[yBL]",&walker->getWalkMC()->getWP().leg[2].lift_vel.y));
00079       addItem(new ValueEditControl<double>("liftLeg[yBR]",&walker->getWalkMC()->getWP().leg[3].lift_vel.y));
00080       addItem(new ValueEditControl<double>("liftLeg[zFL]",&walker->getWalkMC()->getWP().leg[0].lift_vel.z));
00081       addItem(new ValueEditControl<double>("liftLeg[zFR]",&walker->getWalkMC()->getWP().leg[1].lift_vel.z));
00082       addItem(new ValueEditControl<double>("liftLeg[zBL]",&walker->getWalkMC()->getWP().leg[2].lift_vel.z));
00083       addItem(new ValueEditControl<double>("liftLeg[zBR]",&walker->getWalkMC()->getWP().leg[3].lift_vel.z));
00084     }
00085     endSubMenu();
00086 
00087     addItem(new ControlBase("down_vel","Edit the walk parameters"));
00088     startSubMenu();
00089     { 
00090       addItem(new ValueEditControl<double>("downLeg[xFL]",&walker->getWalkMC()->getWP().leg[0].down_vel.x));
00091       addItem(new ValueEditControl<double>("downLeg[xFR]",&walker->getWalkMC()->getWP().leg[1].down_vel.x));
00092       addItem(new ValueEditControl<double>("downLeg[xBL]",&walker->getWalkMC()->getWP().leg[2].down_vel.x));
00093       addItem(new ValueEditControl<double>("downLeg[xBR]",&walker->getWalkMC()->getWP().leg[3].down_vel.x));
00094       addItem(new ValueEditControl<double>("downLeg[yFL]",&walker->getWalkMC()->getWP().leg[0].down_vel.y));
00095       addItem(new ValueEditControl<double>("downLeg[yFR]",&walker->getWalkMC()->getWP().leg[1].down_vel.y));
00096       addItem(new ValueEditControl<double>("downLeg[yBL]",&walker->getWalkMC()->getWP().leg[2].down_vel.y));
00097       addItem(new ValueEditControl<double>("downLeg[yBR]",&walker->getWalkMC()->getWP().leg[3].down_vel.y));
00098       addItem(new ValueEditControl<double>("downLeg[zFL]",&walker->getWalkMC()->getWP().leg[0].down_vel.z));
00099       addItem(new ValueEditControl<double>("downLeg[zFR]",&walker->getWalkMC()->getWP().leg[1].down_vel.z));
00100       addItem(new ValueEditControl<double>("downLeg[zBL]",&walker->getWalkMC()->getWP().leg[2].down_vel.z));
00101       addItem(new ValueEditControl<double>("downLeg[zBR]",&walker->getWalkMC()->getWP().leg[3].down_vel.z));
00102     }
00103     endSubMenu();
00104 
00105     addItem(new ControlBase("lift_time","Edit the walk parameters"));
00106     startSubMenu();
00107     { 
00108       addItem(new ValueEditControl<double>("liftimeLeg[FL]",&walker->getWalkMC()->getWP().leg[0].lift_time));
00109       addItem(new ValueEditControl<double>("liftimeLeg[FR]",&walker->getWalkMC()->getWP().leg[1].lift_time));
00110       addItem(new ValueEditControl<double>("liftimeLeg[BL]",&walker->getWalkMC()->getWP().leg[2].lift_time));
00111       addItem(new ValueEditControl<double>("liftimeLeg[BR]",&walker->getWalkMC()->getWP().leg[3].lift_time));
00112     }
00113     endSubMenu();
00114 
00115     addItem(new ControlBase("down_time","Edit the walk parameters"));
00116     startSubMenu();
00117     { 
00118       addItem(new ValueEditControl<double>("downimeLeg[FL]",&walker->getWalkMC()->getWP().leg[0].down_time));
00119       addItem(new ValueEditControl<double>("downimeLeg[FR]",&walker->getWalkMC()->getWP().leg[1].down_time));
00120       addItem(new ValueEditControl<double>("downimeLeg[BL]",&walker->getWalkMC()->getWP().leg[2].down_time));
00121       addItem(new ValueEditControl<double>("downimeLeg[BR]",&walker->getWalkMC()->getWP().leg[3].down_time));
00122     }
00123     endSubMenu();
00124 
00125     addItem(new ControlBase("calibration","Edit the walk parameters"));
00126     startSubMenu();
00127     { 
00128       addItem(new WalkCalibration());
00129       addItem(new LoadCalibration(&walker->getWalkMC()->getCP()));
00130       addItem(new ValueEditControl<float>("forward max_accel",&walker->getWalkMC()->getCP().max_accel[WalkMC::CalibrationParam::forward]));
00131       addItem(new ValueEditControl<float>("reverse max_accel",&walker->getWalkMC()->getCP().max_accel[WalkMC::CalibrationParam::reverse]));
00132       addItem(new ValueEditControl<float>("strafe max_accel",&walker->getWalkMC()->getCP().max_accel[WalkMC::CalibrationParam::strafe]));
00133       addItem(new ValueEditControl<float>("rotate max_accel",&walker->getWalkMC()->getCP().max_accel[WalkMC::CalibrationParam::rotate]));
00134       addItem(new ValueEditControl<float>("forward max_vel",&walker->getWalkMC()->getCP().max_vel[WalkMC::CalibrationParam::forward]));
00135       addItem(new ValueEditControl<float>("reverse max_vel",&walker->getWalkMC()->getCP().max_vel[WalkMC::CalibrationParam::reverse]));
00136       addItem(new ValueEditControl<float>("strafe max_vel",&walker->getWalkMC()->getCP().max_vel[WalkMC::CalibrationParam::strafe]));
00137       addItem(new ValueEditControl<float>("rotate max_vel",&walker->getWalkMC()->getCP().max_vel[WalkMC::CalibrationParam::rotate]));
00138     }
00139     endSubMenu();
00140 
00141     addItem(new LoadWalkControl("Load Walk",walker->getWalkMC()));
00142     addItem(new SaveWalkControl("Save Walk",walker->getWalkMC()));
00143   }
00144   return endSubMenu();
00145 }

Tekkotsu v2.1
Generated Tue Mar 16 23:19:15 2004 by Doxygen 1.3.5