upkie 6.1.0
Open-source wheeled biped robots
|
Command servos by position control. More...
Public Member Functions | |
def | __init__ (self, float fall_pitch=1.0, float frequency=200.0, bool frequency_checks=True, Optional[RobotState] init_state=None, bool regulate_frequency=True, str shm_name="/upkie", Optional[dict] spine_config=None) |
Initialize environment. More... | |
Public Member Functions inherited from upkie.envs.upkie_servos.UpkieServos | |
def | __init__ (self, float fall_pitch=1.0, float frequency=200.0, bool frequency_checks=True, Optional[RobotState] init_state=None, bool regulate_frequency=True, str shm_name="/upkie", Optional[dict] spine_config=None) |
Initialize environment. More... | |
dict | get_neutral_action (self) |
Get the neutral action where servos don't move. More... | |
def | get_env_observation (self, dict spine_observation) |
Extract environment observation from spine observation dictionary. More... | |
dict | get_spine_action (self, dict env_action) |
Convert environment action to a spine action dictionary. More... | |
Public Member Functions inherited from upkie.envs.upkie_base_env.UpkieBaseEnv | |
None | __init__ (self, float fall_pitch=1.0, Optional[float] frequency=200.0, bool frequency_checks=True, Optional[RobotState] init_state=None, bool regulate_frequency=True, str shm_name="/upkie", Optional[dict] spine_config=None, int spine_retries=10) |
Initialize environment. More... | |
def | __del__ (self) |
Stop the spine when deleting the environment instance. | |
None | close (self) |
Stop the spine properly. | |
Optional[float] | dt (self) |
Regulated period of the control loop in seconds, or None if there is no loop frequency regulation. | |
Optional[float] | frequency (self) |
Regulated frequency of the control loop in Hz, or None if there is no loop frequency regulation. | |
None | update_init_rand (self, **kwargs) |
Update initial-state randomization. More... | |
Tuple[np.ndarray, dict] | reset (self, *Optional[int] seed=None, Optional[dict] options=None) |
Resets the spine 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... | |
bool | detect_fall (self, dict spine_observation) |
Detect a fall based on the base-to-world pitch angle. More... | |
def | get_env_observation (self, dict spine_observation) |
Extract environment observation from spine observation dictionary. More... | |
dict | get_spine_action (self, action) |
Convert environment action to a spine action dictionary. More... | |
None | log (self, str name, Any entry) |
Log a new entry to the "log" key of the action dictionary. More... | |
None | bullet_extra (self, dict bullet_action) |
Prepend for the next step an extra action for the Bullet spine. More... | |
Public Attributes | |
action_space | |
Action space. | |
Public Attributes inherited from upkie.envs.upkie_servos.UpkieServos | |
action_space | |
Action space. | |
observation_space | |
Observation space. | |
Public Attributes inherited from upkie.envs.upkie_base_env.UpkieBaseEnv | |
fall_pitch | |
Fall detection pitch angle, in radians. | |
init_state | |
Initial state for the floating base of the robot, which may be randomized upon resets. | |
model | |
Robot model read from its URDF description. | |
Additional Inherited Members | |
Static Public Attributes inherited from upkie.envs.upkie_servos.UpkieServos | |
int | version = 4 |
Environment version number. | |
Command servos by position control.
The action space is consists of the following targets for each joint:
position
: commanded joint angle \(\theta^*\) in [rad] (NaN to disable) (required).kp_scale
: scaling factor \(k_{p}^{\mathit{scale}}\) applied to the position feedback gain, between zero and one.kd_scale
: scaling factor \(k_{d}^{\mathit{scale}}\) applied to the velocity feedback gain, between zero and one.This makes the agent command servo positions with velocity damping:
\[ \begin{align*} \tau & = k_{p} k_{p}^{\mathit{scale}} (\theta^* - \theta) - k_{d} k_{d}^{\mathit{scale}} \dot{\theta} \end{align*} \]
This environment has the same observation space as UpkieServos.
def upkie.envs.upkie_servo_positions.UpkieServoPositions.__init__ | ( | self, | |
float | fall_pitch = 1.0 , |
||
float | frequency = 200.0 , |
||
bool | frequency_checks = True , |
||
Optional[RobotState] | init_state = None , |
||
bool | regulate_frequency = True , |
||
str | shm_name = "/upkie" , |
||
Optional[dict] | spine_config = None |
||
) |
Initialize environment.
fall_pitch | Fall pitch angle, in radians. |
frequency | Regulated frequency of the control loop, in Hz. |
frequency_checks | If regulate_frequency is set and this parameter is true (default), a warning is issued every time the control loop runs slower than the desired frequency . Set this parameter to false to disable these warnings. |
init_state | Initial state of the robot, only used in simulation. |
regulate_frequency | Enables loop frequency regulation. |
shm_name | Name of shared-memory file. |
spine_config | Additional spine configuration overriding the default upkie.config.SPINE_CONFIG . The combined configuration dictionary is sent to the spine at every reset. |
Reimplemented from upkie.envs.upkie_servos.UpkieServos.