| Tekkotsu Homepage | Demos | Overview | Downloads | Dev. Resources | Reference | Credits |
CMPackWalkMC Class ReferenceA nice walking class from Carnegie Mellon University's 2001 Robosoccer team, modified to fit this framework, see their license More...
Inheritance diagram for CMPackWalkMC:
![]() Detailed DescriptionA nice walking class from Carnegie Mellon University's 2001 Robosoccer team, modified to fit this framework, see their license Moves the feet through a looping path in order to walk - default parameters use a walk low to the ground so you don't walk over the ball. There are around 50 parameters which control the walk - these are loaded from a file and can modify almost every aspect of the the gait. It's a binary file format, I recommend using our Walk Edit menu to edit the parameters in real time and get immediate feedback. It's a tricky job to find a good set of parameters. And then, once you have it walking, there's a whole different problem of actually moving at the speed that's requested. That's what the calibration parameters do - map the requested target speed to the command to pass to the engine so the resulting motion will hopefully match what you asked for. You'll probably want to take a look at the setTargetVelocity() function to control the direction of the walk. This class is in some dire need of some cleanup - we (Tekkotsu) didn't write it, have none the less hacked around and added stuff on top of it. So pardon the mess, unless you're feeling ambitious to write your own ;) This portion of the code falls under CMPack's license:
=========================================================================
CMPack'02 Source Code Release for OPEN-R SDK v1.0
Copyright (C) 2002 Multirobot Lab [Project Head: Manuela Veloso]
School of Computer Science, Carnegie Mellon University
-------------------------------------------------------------------------
This software is distributed under the GNU General Public License,
version 2. If you do not have a copy of this licence, visit
www.gnu.org, or write: Free Software Foundation, 59 Temple Place,
Suite 330 Boston, MA 02111-1307 USA. This program is distributed
in the hope that it will be useful, but WITHOUT ANY WARRANTY,
including MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-------------------------------------------------------------------------
Additionally licensed to Sony Corporation under the following terms:
This software is provided by the copyright holders AS IS and any
express or implied warranties, including, but not limited to, the
implied warranties of merchantability and fitness for a particular
purpose are disclaimed. In no event shall authors be liable for
any direct, indirect, incidental, special, exemplary, or consequential
damages (including, but not limited to, procurement of substitute
goods or services; loss of use, data, or profits; or business
interruption) however caused and on any theory of liability, whether
in contract, strict liability, or tort (including negligence or
otherwise) arising in any way out of the use of this software, even if
advised of the possibility of such damage.
=========================================================================
Definition at line 70 of file CMPackWalkMC.h.
Member Typedef Documentation
for convenience Definition at line 73 of file CMPackWalkMC.h.
for convenience Definition at line 72 of file CMPackWalkMC.h. Member Enumeration Documentationused to specify value for acc_style
Definition at line 206 of file CMPackWalkMC.h. Constructor & Destructor Documentation
constructor Definition at line 75 of file CMPackWalkMC.cc. Member Function Documentation
converts in to calibration parameters and multiplies through the calibration matrix Definition at line 737 of file CMPackWalkMC.cc. Referenced by updateOutputs().
returns acc_style Definition at line 212 of file CMPackWalkMC.h.
gets WalkParam::body_angle of wp Definition at line 195 of file CMPackWalkMC.h.
Calculates space needed to save - if you can't precisely add up the size, just make sure to overestimate and things will still work. getBinSize is used for reserving buffers during serialization, but does not necessarily determine the actual size of what is written -- the return value of saveBuffer() specifies that after the data actually has been written. If getBinSize overestimates, the extra memory allocation is only temporary, no extra filler bytes are actually stored.
Implements LoadSave. Definition at line 164 of file CMPackWalkMC.cc.
returns the current walk parameter structure Definition at line 220 of file CMPackWalkMC.h.
returns the velocity we're actually moving (subject to clipping at max_accel_xya), doesn't reflect value of getPaused()... Definition at line 153 of file CMPackWalkMC.h.
gets WalkParam::body_height of wp Definition at line 193 of file CMPackWalkMC.h.
gets WalkParam::hop of wp Definition at line 197 of file CMPackWalkMC.h.
returns the current leg position of leg i Definition at line 216 of file CMPackWalkMC.h.
more portable than directly accessing MAX_DA Definition at line 234 of file CMPackWalkMC.h. Referenced by setTargetDisplacement().
more portable than directly accessing MAX_DX Definition at line 232 of file CMPackWalkMC.h. Referenced by setTargetDisplacement().
more portable than directly accessing MAX_DY Definition at line 233 of file CMPackWalkMC.h. Referenced by setTargetDisplacement().
if is true, we aren't moving Definition at line 191 of file CMPackWalkMC.h.
gets WalkParam::period of wp Definition at line 201 of file CMPackWalkMC.h.
returns remaining steps (step_count) (negative means infinite) Definition at line 184 of file CMPackWalkMC.h.
gets slowmo Definition at line 203 of file CMPackWalkMC.h.
returns the time at which we started traveling along the current vector, in milliseconds Definition at line 155 of file CMPackWalkMC.h. Referenced by getTravelTime().
returns the step threshold -- see step_threshold Definition at line 187 of file CMPackWalkMC.h.
gets WalkParam::sway of wp Definition at line 199 of file CMPackWalkMC.h.
returns current velocity we're trying to go Definition at line 151 of file CMPackWalkMC.h.
returns the amount of time we've been traveling along the current vector, in milliseconds Definition at line 157 of file CMPackWalkMC.h. Referenced by updateOutputs().
Definition at line 219 of file CMPackWalkMC.h.
does some setup stuff, calls loadFile(pfile) Definition at line 125 of file CMPackWalkMC.cc. Referenced by CMPackWalkMC().
Will prune if we've taken the requested number of steps. Implements MotionCommand. Definition at line 142 of file CMPackWalkMC.h.
Returns true if we are walking. This modified isDirty allows the AIBO to slow down to a stop rather than stopping immediately. Implements MotionCommand. Definition at line 146 of file CMPackWalkMC.cc. Referenced by updateOutputs().
Load from a saved buffer in memory.
Implements LoadSave. Definition at line 172 of file CMPackWalkMC.cc.
initiate opening of the specified file and loading/saving of all appropriate information.
Reimplemented from LoadSave. Definition at line 272 of file CMPackWalkMC.cc. Referenced by init().
returns the current walk calibration parameter takes current leg positions from WorldState and tries to match the point in the cycle most like it Definition at line 703 of file CMPackWalkMC.cc. Referenced by init(), and updateOutputs().
Save to a given buffer in memory.
Implements LoadSave. Definition at line 232 of file CMPackWalkMC.cc.
initiate opening of the specified file and loading/saving of all appropriate information.
Reimplemented from LoadSave. Definition at line 275 of file CMPackWalkMC.cc.
sets acc_style Definition at line 211 of file CMPackWalkMC.h.
sets WalkParam::body_angle of wp Definition at line 194 of file CMPackWalkMC.h.
sets WalkParam::body_height of wp Definition at line 192 of file CMPackWalkMC.h.
sets WalkParam::hop of wp Definition at line 196 of file CMPackWalkMC.h.
if set to true, will stop moving Definition at line 190 of file CMPackWalkMC.h.
sets WalkParam::period of wp Definition at line 200 of file CMPackWalkMC.h.
sets slowmo Definition at line 202 of file CMPackWalkMC.h.
sets the step threshold -- see step_threshold Definition at line 188 of file CMPackWalkMC.h.
sets WalkParam::sway of wp Definition at line 198 of file CMPackWalkMC.h.
recalculates the target velocity so steps are of a given length to achieve the specified displacement in n steps
Definition at line 337 of file CMPackWalkMC.cc.
set the direction to walk
Definition at line 305 of file CMPackWalkMC.cc.
set the direction to walk
Definition at line 279 of file CMPackWalkMC.cc. Referenced by setTargetDisplacement(), setTargetVelocity(), and zeroVelocities().
sends an activate LocomotionEvent Reimplemented from MotionCommand. Definition at line 98 of file CMPackWalkMC.cc.
sends a deactivate LocomotionEvent Reimplemented from MotionCommand. Definition at line 106 of file CMPackWalkMC.cc.
calculates current positions of the legs or speeds of the wheels Implements MotionCommand. Definition at line 362 of file CMPackWalkMC.cc.
Posts a LocomotionEvent. Also forces an output frame setting wheel velocities to zero; needed because if we remove a motion command there may be nothing left to zero the velocities. Definition at line 111 of file CMPackWalkMC.cc. Referenced by stop(). Member Data Documentation
lets you switch between finite or infinite acceleration models Definition at line 260 of file CMPackWalkMC.h. Referenced by getAccelerationStyle(), setAccelerationStyle(), and updateOutputs().
the path the body goes through while walking (?) Definition at line 256 of file CMPackWalkMC.h. Referenced by init().
the path the body goes through while walking (?) Definition at line 255 of file CMPackWalkMC.h. Referenced by init().
holds current joint commands Definition at line 240 of file CMPackWalkMC.h. Referenced by updateOutputs().
calibration parameters for current walk. Definition at line 252 of file CMPackWalkMC.h. Referenced by getBinSize(), getCP(), loadBuffer(), saveBuffer(), setTargetVelocity(), and updateOutputs().
The CycleOffset variable is used to ensure that each time the AIBO starts walking, it starts at the same point in the walk cycle as where it stopped. This measure is intended to decrease the amount of jerking (and hence deviation) that occurs when the AIBO starts walking forward and then suddenly stops. Definition at line 281 of file CMPackWalkMC.h. Referenced by updateOutputs().
position each of the feet is next going to be set down Definition at line 258 of file CMPackWalkMC.h. Referenced by updateOutputs().
true if we are paused Definition at line 249 of file CMPackWalkMC.h. Referenced by getPaused(), isDirty(), and setPaused().
where the walk is in it its cycle, updated at the end of each call to updateOutputs() Definition at line 265 of file CMPackWalkMC.h. Referenced by updateOutputs().
the velocity that was last sent to motion Definition at line 298 of file CMPackWalkMC.h. Referenced by updateOutputs().
current position of each leg Definition at line 254 of file CMPackWalkMC.h. Referenced by getLegPosition(), resetLegPos(), and updateOutputs().
current state of each leg Definition at line 253 of file CMPackWalkMC.h. Referenced by init(), and updateOutputs().
position each of the feet was last lifted Definition at line 257 of file CMPackWalkMC.h. Referenced by updateOutputs().
maximum acceleration of x, y, and a velocity Definition at line 236 of file CMPackWalkMC.h. Referenced by updateOutputs().
maximum angular velocity, for setTargetDisplacement Definition at line 227 of file CMPackWalkMC.h. Referenced by CMPackWalkMC::CalibrationParam::CalibrationParam(), getMaxAVel(), and updateOutputs().
maximum forward velocity, for setTargetDisplacement Definition at line 225 of file CMPackWalkMC.h. Referenced by CMPackWalkMC::CalibrationParam::CalibrationParam(), getMaxXVel(), and updateOutputs().
maximum sideways velocity, for setTargetDisplacement Definition at line 226 of file CMPackWalkMC.h. Referenced by CMPackWalkMC::CalibrationParam::CalibrationParam(), getMaxYVel(), and updateOutputs().
Every time we stop, we know we'll have a new CycleOffset, and we'll need to compute a new TimeOffset. This boolean says as much. Definition at line 292 of file CMPackWalkMC.h. Referenced by updateOutputs().
scales time values to make the walk move in slow motion for analysis (or fast forward) Definition at line 273 of file CMPackWalkMC.h. Referenced by getSlowMo(), setSlowMo(), and updateOutputs().
number of steps to take before stopping; if negative, walk forever. Definition at line 262 of file CMPackWalkMC.h. Referenced by getRemainingSteps(), isAlive(), isDirty(), setTargetDisplacement(), setTargetVelocity(), and updateOutputs().
point in a leg's cycle where the step counter should be decremented; 0 - leg lift, .25 - mid-air, .5 - leg down, .75 - mid-ground Definition at line 263 of file CMPackWalkMC.h. Referenced by getStepThreshold(), setStepThreshold(), and updateOutputs().
requested displacement Definition at line 295 of file CMPackWalkMC.h. Referenced by setTargetDisplacement(), setTargetVelocity(), and updateOutputs().
the velocity that was requested Definition at line 297 of file CMPackWalkMC.h. Referenced by getTargetVelocity(), isDirty(), setTargetVelocity(), start(), and updateOutputs().
time of last call to updateOutputs() (scaled by slowmo) Definition at line 271 of file CMPackWalkMC.h. Referenced by updateOutputs().
Each CycleOffset corresponds to a different TimeOffset once the robot starts walking again. Consider this example: the robot stops 2/3 of the way through the cycle, then starts again 1/3 of the way through the cycle on the absolute clock. The time offset to advance the clock to the right part of the cycle is 1/3 of a cycle, so we set TimeOffset to 1/3 cycle and add that to every clock value used in the walk code. Definition at line 289 of file CMPackWalkMC.h. Referenced by updateOutputs().
time to pretend passes between each call to updateOutputs() - usually RobotInfo::FrameTime Definition at line 272 of file CMPackWalkMC.h. Referenced by updateOutputs().
the time of the last call to setTargetVelocity - handy to check the time we've been traveling current vector Definition at line 270 of file CMPackWalkMC.h. Referenced by getStartTravelTime(), start(), updateOutputs(), and zeroVelocities().
the current velocity we're moving Definition at line 296 of file CMPackWalkMC.h. Referenced by getCurVelocity(), isDirty(), and updateOutputs().
current walking parameters (note that it's not static - different CMPackWalkMC's can have different setting, handy... Definition at line 251 of file CMPackWalkMC.h. Referenced by getAngle(), getBinSize(), getHeight(), getHop(), getPeriod(), getSway(), getWP(), init(), loadBuffer(), resetLegPos(), saveBuffer(), setAngle(), setHeight(), setHop(), setPeriod(), setSway(), setTargetVelocity(), and updateOutputs(). The documentation for this class was generated from the following files: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Tekkotsu v5.1CVS |
Generated Tue Jan 31 04:32:16 2012 by Doxygen 1.6.3 |