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 49 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 | |
virtual int | isAlive () |
always true - never autoprunes | |
void | load (const char *pfile) |
loads parameters from a file ( | |
void | save (const char *pfile) const |
saves parameters to a file ( | |
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 | getTravelTime () |
returns the 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 | 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 |
vector version of MAX_DX,MAX_DY,MAX_DA | |
Protected Member Functions | |
void | init (const char *pfile) |
does some setup stuff, calls load(pfile) | |
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... | |
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 since the last call to setTargetVelocity - handy to check the time we've been traveling current vector | |
int | time |
time of last call to updateJointCmds() | |
int | TimeStep |
time to pretend passes between each call to updateJointCmds() - usually RobotInfo::FrameTime, unless you want to make it walk in slow motion (handy sometimes for debugging) | |
vector3d | vel_xya |
the current velocity we're moving | |
vector3d | target_vel_xya |
the velocity that was requested |
|
for convenience
|
|
for convenience
|
|
constructor
Definition at line 59 of file WalkMC.cc. References ERS210Info::FrameTime, get_time(), init(), and time. |
|
sends an activate LocomotionEvent
Reimplemented from MotionCommand. Definition at line 68 of file WalkMC.cc. References EventBase::activateETID, MotionCommand::DoStart(), get_time(), MotionManagerMsg::getID(), EventBase::locomotionEGID, MotionCommand::postEvent(), LocomotionEvent::setXYA(), target_vel_xya, travelTime, GVector::vector3d< double >::x, GVector::vector3d< double >::y, and GVector::vector3d< double >::z. |
|
sends a deactivate LocomotionEvent
Reimplemented from MotionCommand. Definition at line 76 of file WalkMC.cc. References EventBase::deactivateETID, MotionCommand::DoStop(), get_time(), MotionManagerMsg::getID(), EventBase::locomotionEGID, MotionCommand::postEvent(), LocomotionEvent::setXYA(), target_vel_xya, travelTime, GVector::vector3d< double >::x, GVector::vector3d< double >::y, and GVector::vector3d< double >::z. |
|
gets WalkParam::body_angle of wp
Definition at line 111 of file WalkMC.h. References WalkMC::WalkParam::body_angle, and wp. |
|
returns the velocity we're actually moving (subject to clipping at max_accel_xya), doesn't reflect value of getPaused()...
Definition at line 102 of file WalkMC.h. References vel_xya. |
|
gets WalkParam::body_height of wp
Definition at line 109 of file WalkMC.h. References WalkMC::WalkParam::body_height, and wp. |
|
gets WalkParam::hop of wp
Definition at line 113 of file WalkMC.h. References WalkMC::WalkParam::hop, and wp. |
|
if is true, we aren't moving
Definition at line 107 of file WalkMC.h. References isPaused. |
|
gets WalkParam::period of wp
Definition at line 117 of file WalkMC.h. References WalkMC::WalkParam::period, and wp. |
|
gets WalkParam::sway of wp
Definition at line 115 of file WalkMC.h. References WalkMC::WalkParam::sway, and wp. |
|
returns current velocity we're trying to go
Definition at line 100 of file WalkMC.h. References target_vel_xya. |
|
returns the time we've been traveling along the current vector
Definition at line 104 of file WalkMC.h. References get_time(), and travelTime. |
|
does some setup stuff, calls load(pfile)
Definition at line 85 of file WalkMC.cc. References WalkMC::LegWalkState::air, WalkMC::WalkParam::body_angle, body_angle, WalkMC::WalkParam::body_height, body_loc, GetLegPosition(), SplinePath< vector3d, double >::init(), ERS210Info::JointsPerLeg, legpos, legw, load(), ERS210Info::NumLegs, vector3d, and wp. |
|
always true - never autoprunes
Implements MotionCommand. |
|
returns true if we are walking
Implements MotionCommand. Definition at line 90 of file WalkMC.h. References isPaused, target_vel_xya, GVector::vector3d< double >::x, GVector::vector3d< double >::y, and GVector::vector3d< double >::z. |
|
loads parameters from a file (
Definition at line 109 of file WalkMC.cc. References checksum(), mzero(), read_file(), and wp. |
|
takes current leg positions from WorldState and tries to match the point in the cycle most like it
Definition at line 228 of file WalkMC.cc. References GetLegPosition(), ERS210Info::JointsPerLeg, ERS210Info::LegOffset, legpos, ERS210Info::NumLegs, WorldState::outputs, and state. |
|
saves parameters to a file (
Definition at line 117 of file WalkMC.cc. References checksum(), save_file(), and wp. |
|
sets WalkParam::body_angle of wp
Definition at line 110 of file WalkMC.h. References WalkMC::WalkParam::body_angle, and wp. |
|
sets WalkParam::body_height of wp
Definition at line 108 of file WalkMC.h. References WalkMC::WalkParam::body_height, and wp. |
|
sets WalkParam::hop of wp
Definition at line 112 of file WalkMC.h. References WalkMC::WalkParam::hop, and wp. |
|
if set to true, will stop moving
Definition at line 106 of file WalkMC.h. References isPaused. |
|
sets WalkParam::period of wp
Definition at line 116 of file WalkMC.h. References WalkMC::WalkParam::period, and wp. |
|
sets WalkParam::sway of wp
Definition at line 114 of file WalkMC.h. References WalkMC::WalkParam::sway, and wp. |
|
set the direction to walk - can specify x (forward), y (left), and angular (counterclockwise) velocities
Definition at line 123 of file WalkMC.cc. References bound(), da, dx, get_time(), MotionManagerMsg::getID(), MotionCommand::isActive(), GVector::vector2d< num >::length(), EventBase::locomotionEGID, MAX_DA, MAX_DX, MAX_DY, MotionCommand::postEvent(), GVector::vector3d< double >::set(), LocomotionEvent::setXYA(), EventBase::statusETID, target_vel_xya, travelTime, GVector::vector2d< num >::x, and GVector::vector2d< num >::y. |
|
|
how much we've turned
|
|
the path the body goes through while walking (?)
|
|
the path the body goes through while walking (?)
|
|
holds current joint commands
|
|
true if we are paused
|
|
current position of each leg
|
|
current state of each leg
|
|
vector version of MAX_DX,MAX_DY,MAX_DA
|
|
==1.8 rad/sec
|
|
==180 mm/sec
|
|
==140 mm/sec
|
|
how much we've moved
|
|
the velocity that was requested
|
|
time of last call to updateJointCmds()
|
|
time to pretend passes between each call to updateJointCmds() - usually RobotInfo::FrameTime, unless you want to make it walk in slow motion (handy sometimes for debugging)
|
|
the time since the last call to setTargetVelocity - handy to check the time we've been traveling current vector
|
|
the current velocity we're moving
|
|
current walking parameters (note that it's not static - different WalkMC's can have different setting, handy...
|
Tekkotsu v1.4 |
Generated Sat Jul 19 00:09:15 2003 by Doxygen 1.3.2 |