00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
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<3,11>(walker->getWalkMC()->getCP().f_calibration,walker->getWalkMC()->getCP().b_calibration));
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 }