Homepage | Demos | Overview | Downloads | Tutorials | Reference | Credits |
#include <WalkMC.h>
Inheritance diagram for WalkMC:
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.
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 52 of file WalkMC.h.
Public Types | |
typedef SplinePath< vector3d, double > | splinepath |
for convenience | |
typedef HermiteSplineSegment< vector3d, double > | spline |
for convenience | |
Public Member Functions | |
WalkMC (const char *pfile=NULL) | |
constructor | |
virtual void | DoStart () |
sends an activate LocomotionEvent | |
virtual void | DoStop () |
sends a deactivate LocomotionEvent | |
virtual int | updateOutputs () |
calculates current positions of the paws | |
virtual int | isDirty () |
Returns true if we are walking. This modified isDirty allows the AIBO to slow down to a stop rather than stopping immediately. | |
virtual int | isAlive () |
always true - never autoprunes | |
virtual unsigned int | getBinSize () const |
calculates space needed to save - if you can't precisely add up the size, overestimate and things will still work. | |
virtual unsigned int | LoadBuffer (const char buf[], unsigned int len) |
Load from a saved buffer. | |
virtual unsigned int | SaveBuffer (char buf[], unsigned int len) const |
Save to a given buffer. | |
void | setTargetVelocity (double dx, double dy, double da) |
set the direction to walk - can specify x (forward), y (left), and angular (counterclockwise) velocities | |
const vector3d & | getTargetVelocity () |
returns current velocity we're trying to go | |
const vector3d & | getCurVelocity () const |
returns the velocity we're actually moving (subject to clipping at max_accel_xya), doesn't reflect value of getPaused()... | |
unsigned int | getStartTravelTime () |
returns the time at which we started traveling along the current vector | |
unsigned int | getTravelTime () |
returns the amount of time we've been traveling along the current vector | |
void | setPaused (bool p) |
if set to true, will stop moving | |
bool | getPaused () const |
if is true, we aren't moving | |
void | setHeight (double h) |
sets WalkParam::body_height of wp | |
double | getHeight () |
gets WalkParam::body_height of wp | |
void | setAngle (double a) |
sets WalkParam::body_angle of wp | |
double | getAngle () |
gets WalkParam::body_angle of wp | |
void | setHop (double h) |
sets WalkParam::hop of wp | |
double | getHop () |
gets WalkParam::hop of wp | |
void | setSway (double h) |
sets WalkParam::sway of wp | |
double | getSway () |
gets WalkParam::sway of wp | |
void | setPeriod (long p) |
sets WalkParam::period of wp | |
long | getPeriod () |
gets WalkParam::period of wp | |
void | setSlowMo (float p) |
sets slowmo | |
float * | getSlowMo () |
gets slowmo | |
WalkParam & | getWP () |
CalibrationParam & | getCP () |
void | resetLegPos () |
takes current leg positions from WorldState and tries to match the point in the cycle most like it | |
Static Public Attributes | |
const float | MAX_DX = 180 |
==180 mm/sec | |
const float | MAX_DY = 140 |
==140 mm/sec | |
const float | MAX_DA = 1.8 |
==1.8 rad/sec | |
const vector3d | max_accel_xya |
maximum acceleration of x, y, and a velocity | |
Protected Member Functions | |
void | init (const char *pfile) |
does some setup stuff, calls load(pfile) | |
Static Protected Member Functions | |
void | applyCalibration (const float mat[3][11], const vector3d &in, vector3d &out) |
converts in to calibration parameters and multiplies through the calibration matrix | |
Protected Attributes | |
OutputCmd | cmds [NumOutputs][NumFrames] |
holds current joint commands | |
bool | isPaused |
true if we are paused | |
WalkParam | wp |
current walking parameters (note that it's not static - different WalkMC's can have different setting, handy... | |
CalibrationParam | cp |
calibration parameters for current walk. | |
LegWalkState | legw [NumLegs] |
current state of each leg | |
vector3d | legpos [NumLegs] |
current position of each leg | |
splinepath | body_loc |
the path the body goes through while walking (?) | |
splinepath | body_angle |
the path the body goes through while walking (?) | |
vector3d | pos_delta |
how much we've moved | |
double | angle_delta |
how much we've turned | |
unsigned int | travelTime |
the time of the last call to setTargetVelocity - handy to check the time we've been traveling current vector | |
int | time |
time of last call to updateJointCmds() (scaled by slowmo) | |
int | TimeStep |
time to pretend passes between each call to updateJointCmds() - usually RobotInfo::FrameTime | |
float | slowmo |
scales time values to make the walk move in slow motion for analysis (or fast forward) | |
int | CycleOffset |
int | TimeOffset |
bool | NewCycleOffset |
vector3d | vel_xya |
the current velocity we're moving | |
vector3d | target_vel_xya |
the velocity that was requested | |
vector3d | last_target_vel_xya |
the velocity that was last sent to motion |
|
for convenience
|
|
for convenience
|
|
constructor
|
|
converts in to calibration parameters and multiplies through the calibration matrix
Definition at line 392 of file WalkMC.cc. Referenced by updateOutputs(). |
|
sends an activate LocomotionEvent
Reimplemented from MotionCommand. |
|
sends a deactivate LocomotionEvent
Reimplemented from MotionCommand. |
|
gets WalkParam::body_angle of wp
|
|
calculates space needed to save - if you can't precisely add up the size, overestimate and things will still work.
Implements LoadSave. |
|
Definition at line 151 of file WalkMC.h. Referenced by StartupBehavior::SetupWalkEdit(). |
|
returns the velocity we're actually moving (subject to clipping at max_accel_xya), doesn't reflect value of getPaused()...
|
|
gets WalkParam::body_height of wp
|
|
gets WalkParam::hop of wp
|
|
if is true, we aren't moving
|
|
gets WalkParam::period of wp
|
|
gets slowmo
Definition at line 148 of file WalkMC.h. Referenced by StartupBehavior::SetupWalkEdit(). |
|
returns the time at which we started traveling along the current vector
Definition at line 131 of file WalkMC.h. Referenced by getTravelTime(). |
|
gets WalkParam::sway of wp
|
|
returns current velocity we're trying to go
|
|
returns the amount of time we've been traveling along the current vector
Definition at line 133 of file WalkMC.h. Referenced by updateOutputs(). |
|
Definition at line 150 of file WalkMC.h. Referenced by StartupBehavior::SetupWalkEdit(). |
|
does some setup stuff, calls load(pfile)
Definition at line 106 of file WalkMC.cc. Referenced by WalkMC(). |
|
always true - never autoprunes
Implements MotionCommand. |
|
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 131 of file WalkMC.cc. Referenced by updateOutputs(). |
|
Load from a saved buffer.
Implements LoadSave. |
|
takes current leg positions from WorldState and tries to match the point in the cycle most like it
|
|
Save to a given buffer.
Implements LoadSave. |
|
sets WalkParam::body_angle of wp
|
|
sets WalkParam::body_height of wp
|
|
sets WalkParam::hop of wp
|
|
if set to true, will stop moving
|
|
sets WalkParam::period of wp
|
|
sets slowmo
|
|
sets WalkParam::sway of wp
|
|
set the direction to walk - can specify x (forward), y (left), and angular (counterclockwise) velocities
Definition at line 202 of file WalkMC.cc. Referenced by WalkToTargetMachine::processEvent(), DriveMeBehavior::processEvent(), and ChaseBallBehavior::processEvent(). |
|
calculates current positions of the paws
Implements MotionCommand. |
|
how much we've turned
Definition at line 184 of file WalkMC.h. Referenced by updateOutputs(). |
|
the path the body goes through while walking (?)
Definition at line 181 of file WalkMC.h. Referenced by init(). |
|
the path the body goes through while walking (?)
Definition at line 180 of file WalkMC.h. Referenced by init(). |
|
holds current joint commands
Definition at line 165 of file WalkMC.h. Referenced by updateOutputs(). |
|
calibration parameters for current walk.
Definition at line 177 of file WalkMC.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 197 of file WalkMC.h. Referenced by updateOutputs(). |
|
true if we are paused
Definition at line 174 of file WalkMC.h. Referenced by getPaused(), isDirty(), and setPaused(). |
|
the velocity that was last sent to motion
Definition at line 213 of file WalkMC.h. Referenced by updateOutputs(). |
|
current position of each leg
Definition at line 179 of file WalkMC.h. Referenced by init(), resetLegPos(), and updateOutputs(). |
|
current state of each leg
Definition at line 178 of file WalkMC.h. Referenced by init(), and updateOutputs(). |
|
maximum acceleration of x, y, and a velocity
Referenced by updateOutputs(). |
|
==1.8 rad/sec
Definition at line 53 of file WalkMC.cc. Referenced by FollowHeadBehavior::processEvent(), and updateOutputs(). |
|
==180 mm/sec
Definition at line 51 of file WalkMC.cc. Referenced by FollowHeadBehavior::processEvent(), and updateOutputs(). |
|
==140 mm/sec
Definition at line 52 of file WalkMC.cc. Referenced by FollowHeadBehavior::processEvent(), 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 208 of file WalkMC.h. Referenced by updateOutputs(). |
|
how much we've moved
Definition at line 183 of file WalkMC.h. Referenced by updateOutputs(). |
|
scales time values to make the walk move in slow motion for analysis (or fast forward)
Definition at line 189 of file WalkMC.h. Referenced by getSlowMo(), setSlowMo(), and updateOutputs(). |
|
the velocity that was requested
Definition at line 212 of file WalkMC.h. Referenced by DoStart(), DoStop(), getTargetVelocity(), isDirty(), setTargetVelocity(), and updateOutputs(). |
|
time of last call to updateJointCmds() (scaled by slowmo)
Definition at line 187 of file WalkMC.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 205 of file WalkMC.h. Referenced by updateOutputs(). |
|
time to pretend passes between each call to updateJointCmds() - usually RobotInfo::FrameTime
Definition at line 188 of file WalkMC.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 186 of file WalkMC.h. Referenced by DoStart(), DoStop(), getStartTravelTime(), and updateOutputs(). |
|
the current velocity we're moving
Definition at line 211 of file WalkMC.h. Referenced by getCurVelocity(), isDirty(), and updateOutputs(). |
|
current walking parameters (note that it's not static - different WalkMC's can have different setting, handy...
Definition at line 176 of file WalkMC.h. Referenced by getAngle(), getBinSize(), getHeight(), getHop(), getPeriod(), getSway(), getWP(), init(), LoadBuffer(), SaveBuffer(), setAngle(), setHeight(), setHop(), setPeriod(), setSway(), and updateOutputs(). |
Tekkotsu v2.0 |
Generated Wed Jan 21 03:23:33 2004 by Doxygen 1.3.4 |