upkie 9.0.0
Open-source wheeled biped robots
|
Wrapper to make Upkie act as a wheeled inverted pendulum. More...
Public Member Functions | |
def | __init__ (self, UpkieEnv env, float fall_pitch=1.0, bool left_wheeled=True, float max_ground_velocity=1.0) |
Initialize environment. More... | |
Tuple[np.ndarray, Dict] | reset (self, *Optional[int] seed=None, Optional[dict] options=None) |
Resets the environment and get an initial observation. More... | |
Tuple[np.ndarray, float, bool, bool, dict] | step (self, np.ndarray action) |
Run one timestep of the environment's dynamics. More... | |
Public Attributes | |
observation_space | |
Observation space. | |
action_space | |
Action space. | |
env | |
Internal upkie.envs.upkie_env.UpkieEnv environment. | |
fall_pitch | |
Fall detection pitch angle, in radians. | |
left_wheeled | |
Set to True (default) if the robot is left wheeled, that is, a positive turn of the left wheel results in forward motion. More... | |
wheel_radius | |
Robot wheel radius in meters. | |
Wrapper to make Upkie act as a wheeled inverted pendulum.
When this wrapper is applied, Upkie keeps its legs straight and actions only affect wheel velocities. This way, it behaves like a wheeled inverted pendulum.
The action corresponds to the ground velocity resulting from wheel velocities. The action vector is simply:
\[ a =\begin{bmatrix} \dot{p}^* \end{bmatrix} \]
where we denote by \(\dot{p}^*\) the commanded ground velocity in m/s, which is internally converted into wheel velocity commands. Note that, while this action is not normalized, [-1, 1] m/s is a reasonable range for ground velocities.
Vectorized observations have the following structure:
\[ \begin{align*} o &= \begin{bmatrix} \theta \\ p \\ \dot{\theta} \\ \dot{p} \end{bmatrix} \end{align*} \]
where we denote by:
As with all Upkie environments, full observations from the spine (detailed in Observations) are also available in the info
dictionary returned by the reset and step functions.