All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
KSPDG Challenge @ SciTech 2024 - Semi-Finals Codebase
- New Lady-Bandit-Guard scenarios with active Lady spacecraft (LG2)
- updating test file names and adding additional scenarios to the test files (e.g.
test_lbg1_lg0_i2.py
->test_lbg1_i2.py
so we can test lg1_i2 and lg2_i2 in the same file) - Updating print statements to logger statements in pe1 e3_envs
- iss2 Unit test to check for PhysicsRangeExtender (PRE) proper installation
- PRE installed instructions in README
- bug where PARAMS from LBG1 classes overwrite PARAMS in PE1 classes due to top-level imports at kspdg/init.py.
- Updated which tests to be run, i.e.
sb1_e1_i5
- 20220516_PursuitEvade mission files
- Tests for 20220629 pursuit scenario
- Typo in SB1_E1_I5_V1
- New field in composite action space "vec_type" which is a discrete variable that can be used to indicate if the action vector represents throttle values (-1, 1 in each axes) or thrust values (in Newtons in each axes)
- further abstracted code from
pe1_base.PursuitEvadeGroup1Env
andlbg1_base.LadyBanditGuardGroup1Env
intobase_envs.Group1BaseEnv
which defines the composite action space shared across the child classes
- New composite action space for
pe1
environments that allows you to define the reference frame in which the burn is to be interpretted. The composite action space uses dictionaries as actions with two fields "burn_vec" and "ref_frame". burn_vec is the same format as the old action space (Box action space). ref_frame is an integer (Discrete action space). Backward compatibility with old action space has been maintained. If a list-like object is passed in, it will treat it as the old action space, otherwise a dict with appropriate fields must be passed - Addtional
test_pe1_e1_i3.py
tests for reference frames - Example agent using new action space and NTW reference frame. See
ProgradePursuitAgent
inagent_api/example_agent.py
- Abstracted
convert_rhntw_to_rhpbody
andconvert_rhcbci_to_rhpbody
to parent level functions requiring as input the vessel object for which conversion to right-hand body coords is to be performed - Abstracted
_start_bot_threads()
andclose()
to KSPDGBaseEnv to reduce redundancy - Abstracted the
step
function frompe1
,lbg1
, andsb1
environments up to KSPDGBaseEnv under thestep_v1
function
- Commented code in lbg1_base.py,
observation_dict_to_list
andobservation_list_to_dict
- Resolve iss7 by switching print statements to logger statements in lbg1_base.py
- Conda environment is no longer pinned to python 3.9 due to removal of poliastro dependency. This will cause the most recent python version (currently 3.12) to be used when creating the environment
evaluate.pyc
script has been replaced by python-version-specific binariesevaluate.cpython-39.pyc
(for python 3.9) andevaluate.cpython-312.pyc
(for python 3.12). This is to avoid aRuntimeError: Bad magic number in .pyc file
when trying to run evaluate.pyc from the wrong python version
- poliastro dependency and related functions in
utils.py
. This removes functions for propagating orbits which were used for non-essential metric evals. For further justification, see this issue utils.estimate_capture_dv
and related unit tests which depended upon poliastroutils.solve_lambert
and related unit tests which depended upon poliastroutils.propagate_orbit_tof
and related unit tests which depended upon poliastro
- Single-value scoring function for pursuit-evade (pe1), sun-blocking (sb1), and lady-bandit-guard (lbg1) scenarios
- User id and passkey in evaluation process
- Agent instance name in agent_cfg for evaluation script
- Logs if episode is done in info
- Individual scenario environments are made accessible at top-level of package and version numbers added. e.g.
from kspdg import PE1_E1_I3_V1
. This also sets the beginning of version-marking environments. Future updates to almost any aspect of the environment (particularly observation, action, or reward) would imply the need for version increment - New example baseline agents: random and passive
- Upgrading kRPC dependency from v0.4.8 to v0.5.2 which fixed several issues that had required hard-pinning some dependencies (setuptools, protobuf). By un-pinning these, the library is more flexible / less brittle
- AgentEnvRunner timeout allowed to be None, will wait for environment episode to return done if runner timeout is None
- Expanding evaluation results string to log additional information about user, agent, environment, and kspdg version
- Evaluation results printed to a json-formatted txt file for ease of reading and unified uploading
- Improving termination of AgentEnvRunner so as not to wait for observation timeout on runner.py
- pe1 scenario reward function is now negative of scoring function and only assessed at termination (zero all other times)
- Renamed compiled evaluation script to evaluate.pyc
- Restructured where evaluation scripts, inputs (configs), and outputs (results) are housed in the repo
- First implementation of sun-blocking environments (sb1)
example_hello_kspdg.py
a "hello world" scirpt for defining an agentagent_api
subpackage used for defining KSPDG solver agents that integrate and run within KSPDG environments in a streamlined, systematic fashion- agent-environment evaluator with authentication tools. To be used for decentralized evalutation of user-defined agents
- Improved, custom logger for environments (KSPDGBaseEnv) and agent-environment runners (BaseAgentEnvRunner)
- Unused
scripts
:lmp_safehandler.sh
,lmp_safehandler_macos.sh
,pf_lmp.conf
to clean up library