4 releases
0.0.7 | Sep 1, 2024 |
---|---|
0.0.6 | Sep 19, 2023 |
0.0.5 | Jan 25, 2022 |
0.0.4 | Jul 18, 2021 |
#938 in Science
Used in 2 crates
140KB
3K
SLoC
A wrapper of Gymnasium environments on Python.
GymEnv
is a wrapper of Gymnasium based on PyO3
.
It has been tested on some of classic control and
Gymnasium-Robotics environments.
In order to bridge Python and Rust, we need to convert Python objects to Rust objects and vice versa.
Observation
Observation is created in Python and passed to Rust as a Python object. In order to convert
Python object to Rust object, this crate provides GymObsFilter
trait. This trait has
GymObsFilter::filt
method which converts Python object to Rust object.
The type of the Rust object after conversion corresponds to the type parameter O
of the trait
and this is also the type of the observation in the environment, i.e., GymEnv
::Obs
.
There are two built-in implementations of GymObsFilter
: ArrayObsFilter
and ArrayDictObsFilter
.
ArrayObsFilter
is for environments where observation is an array (e.g., CartPole).
Internally, the array is converted to ndarray::ArrayD
from Python object.
Then, the array is converted to the type parameter O
of the filter.
Since O
must implement From<ndarray::ArrayD>
by trait bound, the conversion is done
by calling array.into()
.
ArrayDictObsFilter
is for environments where observation is a dictionary of arrays (e.g., FetchPickAndPlace).
Internally, the dictionary is converted to Vec<(String, border_py_gym_env:util::Array)>
from Python object.
Then, Vec<(String, border_py_gym_env:util::Array)>
is converted to O
by calling into()
.
Action
Action is created in Policy
and passed to Python as a Python object. In order to convert
Rust object to Python object, this crate provides GymActFilter
trait. This trait has
GymActFilter::filt
method which converts Rust object of type A
, which is the type parameter of
the trait, to Python object.
There are two built-in implementations of GymActFilter
: DiscreteActFilter
and ContinuousActFilter
.
DiscreteActFilter
is for environments where action is discrete (e.g., CartPole).
This filter converts A
to Vec<i32>
and then to Python object.
ContinuousActFilter
is for environments where action is continuous (e.g., Pendulum).
This filter converts A
to ArrayD
and then to Python object.
Dependencies
~12–17MB
~311K SLoC