Changelog
All notable changes to this project will be documented in this file.
[0.8.0] - 2024-08-07
Bug Fixes
Use py3.11 as it still ships pkg_resources by default which docstr-coverage needs (25d649f)
Issue was with CI.yml not installing jdrones (7898915)
Check for different env types (5aae992)
Check for different env types (d24b766)
Legacy imports (f6f196c)
Tensorflow-probability 0.24.0 not compatible with sbx 0.12.0 (6441dc2)
Reset to initial state z not current z (5679bf1)
Re-added is_success logging (f429dd1)
Switch to vector-based velocity method (04ea745)
Enable policy net_arch for RecurrentPPO to be customizable from the CLI (dcea513)
Success distance is 1 not 1.5 (32e96bd)
Don’t break the loop if a target is reached to ensure that time stays synchronized (7a2db4a)
Switch to SB3’s DummyVecEnv to handle the multi-env logic (29bbe52)
Properly handle collision reward (703274e)
Ensure eval env is the same as training env (3a7833f)
Re-include time in the observation (a5c30e4)
Ensure observation is (1,X) in shape (a7ee23c)
Disable JIT for codecov, but also run the same setup with jit without codecov (4f2e626)
Documentation
Quick readme for the drl example (e1cdc81)
Features
Install pytest-testmon from git and run in CI (#61) (b54d03b)
Energy consumption (5dc0a29)
Energy consumption (23ca884)
Energy consumption (75c28be)
Switch to Hatch from setuptools (8ce1d14)
DRL controlled drone going from A to hovering at B (675947e)
A working DRL example with plotting (2e42527)
Use optuna for hyperparameter sweep in DRL example (f244822)
A working DRL example with plotting (34014e2)
Add wandb to example (a5204d3)
LQR+DRL meta-controller framework (2be6be6)
Additional eval logging (da18e46)
Change LQR tuner to be velocity centric (c0f4849)
Add 2D plot to graphing callback (38b4a5e)
Swap to velocity-based action space (3afe0a2)
Add colors and circles to 2D position plot to show the targets, their radius and order (e8d6e71)
Multi-env DRL (d21b26d)
Extend to any n env (04d3e72)
Number of sub-envs from CLI (91209c0)
Tensorboard and optuna for the 3d drl example (73bed0d)
Optimal quintic poly trajectory generation (aa8b488)
Miscellaneous Tasks
Remove the status updater. Was causing more issues than was worth. (bd80432)
Bump gymnasium from 0.28.1 to 0.29.1 (234a5bb)
Bump pydantic from 1.10.6 to 2.3.0 (2f309aa)
Bump pandas from 2.0.0 to 2.1.0 (51ff0a1)
Bump JamesIves/github-pages-deploy-action (71b93c7)
Bump actions/setup-python from 4 to 5 (d56ff9e)
Bump actions/upload-artifact from 3 to 4 (d406f45)
Bump actions/download-artifact from 3 to 4 (0f3299c)
Bump actions/checkout from 3 to 4 (465029a)
Flake8 config in .flake8 ini file (871c0ca)
Add a fifth action that controls the scaling of the propeller actions (17a6e79)
Explicitly add gitignored file version.py (c2d4183)
Use requirements.txt file for all so that dependabot can auto-update (6b68265)
version -> _version to avoid name conflicts (f93a6df)
Bump orhun/git-cliff-action from 2 to 3 (e4c9070)
Bump codecov/codecov-action from 3.1.1 to 4.0.2 (dd37dc5)
Bump matplotlib from 3.7.1 to 3.8.3 (0f7149f)
Bump seaborn from 0.12.2 to 0.13.2 (3af4c7b)
Bump scipy from 1.10.1 to 1.12.0 (386e883)
Bump numpy from 1.24.2 to 1.26.4 (8a02a35)
Bump pydantic from 2.3.0 to 2.6.2 (ff1f8a6)
Switch to using “unwrapped” (a5467e2)
Import order (d6f9879)
Further edits to energy example (5371a38)
Try out sbx (556968c)
Update types (28f728c)
Allow a reset state to be given within options (11bc080)
Bump codecov/codecov-action from 4.0.2 to 4.1.0 (bb6c90e)
Bump pandas from 2.1.0 to 2.2.1 (cd083b1)
Make sure num_timesteps is set properly (8127e41)
Make sure num_timesteps is set properly (83606e4)
Make sure num_timesteps is set properly (6a8b455)
Change example rewards scheme to be normalized (3271621)
Use subprocvecenv when n_envs > 1 (f3b724f)
Make Monitor log other info keywords (010ab83)
Normalize reward by maximum action command T (f82ffff)
Normalize reward by maximum action command T (ee96f4a)
Normalize reward by maximum action command T (fd66268)
Play around with how the control is structured. Only let policy define target x and y pos (e0d7690)
Enable maximum time to be specified from CLI (294cfbc)
Enable maximum time to be specified from CLI (844d19b)
Reduce observation space to x-y plane (04347f6)
Include angular position and velocity in the observation (f3dcd89)
Plot actions (0216f3e)
Adjust observation shape to match observation (94cbc0e)
Ensure fig.tight_layout() is called for plotting during callbacks to avoid weird layouts (6490375)
Set target z to env z (769741b)
Use env.unwrapped pattern (d8674e3)
Ensure target is set before it is used within reset (8a8e3d5)
Adjust reward normalization (6d7a036)
Change step simulation time to be 3 (3d79c69)
Expose initial_state (ab834d7)
Move to relative control rather than absolute (c1df545)
Reduce step sim time down to 0.25s (6334782)
Reduce eval episodes to 10 (f930698)
Log number of targets achieved (b07881e)
Increase dx magnitude (915ec5f)
The reward is dependent on the target z as well, so we have to include that data in the observation to make the env fully observable (3ca0bc3)
Include clip_range in CLI inputs (4b2f8a9)
Reduce sub-env sim time to 0.1s (0b6d02a)
Increase dx magnitude (eaa10a4)
Include the next target in the observation (fd287ce)
Reduce sub-env sim time to 0.1s (d9b97da)
Plot targets (783177c)
Switch to a heading-velocity scheme and reintroduce the control action penalty (e8a4fb7)
Set squash_output to true when using SDE (a265f65)
Rename env to be more representative of what it is (db08c1a)
Bump pydantic from 2.6.2 to 2.7.1 (a10848d)
Pass total sim time to the mult DRL env (6040eca)
Bump pydantic from 2.7.1 to 2.8.2 (2b8b402)
Make reward calculations optional for polynomial envs (6e38d55)
Silence pybullet messages at import (1683157)
Performance
Improve State.normed and move into main repo (1afdf85)
Improve to_x and from_x by up to 2x speeds (2669d4b)
Use numpy+numba in transformation calculations for better performance (fe5b953)
Use numba jit for core simulation methods (f9b27ca)
Use faster way of checking if any item is nan (eb81c10)
Use a faster method to zero clip than np.clip (ea5d3bc)
Refactor
[0.7.2] - 2023-04-26
Bug Fixes
Proper type casting to np.float64 (0b2b805)
Ignore init for doctests due to circular import errors (3cfb121)
Inherit the action space from the base clase (423ce55)
Skip CI jobs/steps that interact with outside resources if triggered by bot (6e5c357)
Set stack=True to ensure state observations are stacked (edf45d5)
Documentation
Miscellaneous Tasks
Performance
Refactor
Stop using @property for action and observation spaces (3b89837)
Testing
[0.7.1] - 2023-04-05
Miscellaneous Tasks
Update changelog for v0.7.1 [skip pre-commit.ci] (8926597)
[0.7.0] - 2023-04-05
Bug Fixes
Position drones would crash if target position was the same as current position (1e97511)
White space in doctest for PID (ce9ef68)
White space in doctest for PID (09585ab)
Option to not show, to enable saving of figure (8c004df)
Reset was calling States(States(…)) causing invalid shaped arrays) (f8c3233)
Use local version of jdrones. Installing it previously means that a cached version could be used during unit testing (6a1edb3)
Reset was calling States(States(…)) causing invalid shaped arrays) (901cb08)
Use local version of jdrones. Installing it previously means that a cached version could be used during unit testing (3343d30)
Improve consistency between docstrings and code (#45) (2e1a819)
Documentation
Add gymnasium env names to README (42361c1)
Add gymnasium env names to README (3a1da91)
Fifth order polynomial with look-ahead drone env (fe55815)
Add new gymnasium env names to README (a94a720)
Add new gymnasium env names to README (dffdde7)
Fifth order polynomial with look-ahead drone env (bc79fa6)
Features
Miscellaneous Tasks
Add new plotting module in notebook quick setup (5cc8fc9)
Use new plotting utility functions (ec60216)
Add matplotlib and seaborn as a requirement (72f99ae)
Bump pandas from 1.5.3 to 2.0.0 (2f2f1dd)
Proper axis labels for 3D path plot (f6c03aa)
Proper axis labels for standard plots (585d2d3)
Clean up imports (b8ef4a5)
Clean up imports (16b2b94)
Update changelog for v0.7.0 [skip pre-commit.ci] (f9b1512)
Refactor
Testing
[0.6.0] - 2023-03-16
Bug Fixes
Use \mathbf instead of \textbf to ensure symbols are being rendered correctly (96e9376)
Python versions (was >3.8, now is >3.10) (8f5e9f7)
Use short ref in docstr-cov CI (ae6bf2a)
Use python 3.10 to build the package in the CD (320a88c)
–no-deps for wheels to only build jdrones and none of the deps (7b8599d)
Documentation
Features
Miscellaneous Tasks
Update graphics (d30bb66)
Update changelog for v0.5.3 [skip pre-commit.ci] (482652c)
Bump pandas from 1.3.4 to 1.5.3 (9051ed2)
Bump pydantic from 1.10.4 to 1.10.6 (5b69bd5)
Update changelog for v0.6.0 [skip pre-commit.ci] (a183231)
Delete changelog for redo of v0.6.0 [skip pre-commit.ci] (b8c872d)
Update changelog for v0.6.0 [skip pre-commit.ci] (1b98622)
Delete changelog for redo of v0.6.0 [skip pre-commit.ci] (85b3de8)
Update changelog for v0.6.0 [skip pre-commit.ci] (b714e69)
Testing
[0.5.2] - 2023-03-02
Bug Fixes
Miscellaneous Tasks
[0.5.0] - 2023-03-02
Bug Fixes
Make velocity depend on the yaw error (55e3e09)
Update states after step (e768caf)
Small changes to simplify drone model (6c540a5)
General controller as return, rather than PID (c7a0f3c)
Top-level collect errors (9d8bd3f)
Remove and add the appropriate envs (19e835e)
Incorrect classmethod implementation (df08a83)
Bug in PID code after updating to Controller parent class (93a6a5a)
Add all in the dir. Controlling what gets published is done via VSC (92db0a8)
Droneenv -> pbdroneenv as per conftest (9b7d206)
Sign changes due to linear model direction changes in d394ad6e1778d2add26d0c792f706db06c0d8ccd (72ab2cb)
Top level warning at every import to warn about the different coordinate systems in use (67d330a)
Other dependencies were causing huge increases in CI build time, so just cache them all for now (efd7e00)
Stupid dumb typo… (1702be4)
Correctly define drone motors (1860e97)
Simulation_name -> tag (80e3fa8)
Add condition within PositionDroneEnv to truncate sim if any value is nan (024387b)
Update docs to reflect changes in f56225d9 (previously forgot to do this) (4ff1508)
Typo (8af69f8)
Correction on the maths. This step is done elsewhere (3d8a93c)
Oversight from aa0e1e3 after refactor (a011166)
Documentation
Incude PositionDroneEnv (f488f7b)
Docstring for LQR solve (1730bdf)
Catagorise example notebooks (9fd5531)
Include trajectory code in docs (3057bd0)
Full docs (incl. maths) for QuinticPolynomialTrajectory (53b56c1)
Explain cost function within get_reward() (b175e1c)
Docs for BasePositionDroneEnv (aa0e1e3)
Docs for PolyPositionDroneEnv (95d28d0)
Docs for LQRPositionDroneEnv (52ab54f)
Fix intersphinx links (5e0a308)
Update README.md to show how to run all types of tests (dcb07b2)
Feat
GA-tuned LQR (d35f8b2)
Features
Allow wrappers to be added to the sub-env (647cc1f)
Implement nonlinear, linear, and nonlinear PB3 models (d394ad6)
Create helper functions for both rpm->rpyT and vise versa (6aea072)
LQR controlled drone env (eb30f2d)
Helper functions and classes to make going from and to state logs easier using pandas (8fd2b89)
Lqrdroneenv fixture (4e725fc)
Use scipy (f8c96a1)
PositionDroneEnv (11e812d)
Visually validate models to step inputs (6123dd2)
Position example (8a3c694)
Import script to make the imports less clunky across scripts (4000218)
Positiondroneenv fixture (345c5e8)
MPC Drone Example (80f4458)
Add pandas (450c653)
Quaternion multiplication (083e53f)
Rotate state by quat (8aeba67)
Ensure all models use RHR coordinate system, consistent with URDF and other sim packages (2e90952)
Polynomial trajectory drone env (7ef1768)
Stress test the position environments to ensure they don’t crash over time (513dcf2)
Miscellaneous Tasks
Clean up application of forces and torques to use body (d6b2ed4)
Commit before deleting, to save the current state of the AttitudeAltitudeDroneEnv (54c99a9)
Commit before deleting, to save the current state of the VelHeadAltDroneEnv (f312e9d)
Commit before deleting, to save the current state of the trajectory envs (fa55246)
Update Q and R matrix gains from tuning via GA (5a0c71c)
Fix API (be1e6c2)
Add more test cases to transform tests (2e850c3)
Commit before deletion for archival purposes (1b2c99c)
Specify action space (497e74f)
Implement reset in LQR controller and be more verbose about shape of error (eb828e1)
Cleanup imports (e416f5b)
Version getting (664d4aa)
Remove (c1ac6cf)
Update Q and R matrix gains from tuning via GA (e59f514)
Update graphics (d8b8ac8)
Still broken, but at least it’s been unified… (adc136a)
Mark integration tests (c54f3fe)
Rename CI step to something more descriptive (475303d)
Update Q and R matrix gains from tuning via GA (6d14ee9)
Update graphics (e78074f)
Add automatic linearisation of NL model to examples (e365fb1)
Mock pandas (4b2399c)
Document BaseControlledEnv (f4b039e)
Explicitly state the stratgies to prevent duplicates and only run the stress tests once (e976499)
Update changelog for v0.5.0 [skip pre-commit.ci] (3a7f9a7)
Refactor
Remove AttitudeAltitudeDroneEnv to be replaced by LQR controller (6df31dd)
Remove VelHeadAltDroneEnv to be replaced by LQR controller (9de143a)
Remove trajectory envs to be replaced by LQR controller (1807e57)
Reflect envs refactory changes (07e91ad)
Merge into BaseDroneEnv (d3df134)
Switch to creating matrices via staticmethod to enable easier access without creating the class (4b972da)
Move to/from x tests as per refactor (387cf9f)
Delete (1f4fd4f)
Use the new PositionDroneEnv (3149d74)
Split true types and data models into seperate files (f56225d)
Testing
Unify tests for NL and L models to ensure compatibility when designing controllers (606317d)
Correct input to rotation (820540d)
Mark pybullet env’s test_vel_from_rot as skipped for now (1b30792)
Tested State.apply_quat (683a12e)
Ensure assets are consistent between lib and tests (581d0d5)
Ensure states are float as per 683a12ec (ab208fd)
Quat mul via hypothesis using scipy.spatial.transform.Rotation (5cfcd55)
Add pytest-xdist to allow threaded test execution (92c480b)
[0.4.0] - 2023-02-09
Bug Fixes
Documentation
Features
Add GPL3 headers to all project files (737214c)
Miscellaneous Tasks
[0.3.1] - 2023-02-03
Bug Fixes
Install pandoc in CD pipeline (8ede886)
Miscellaneous Tasks
Update changelog for v0.3.1 [skip pre-commit.ci] (98c3597)
[0.3.0] - 2023-02-03
Bug Fixes
Features
Examples (8baabd4)
Miscellaneous Tasks
[0.2.0] - 2023-02-02
Bug Fixes
Unused variable in the URDFModel from refactoring (95ae8b1)
Features
Move yaw and rpy transform calculations into maths module (99e6532)
Move poly traj into own module and fully test (a727658)
Use nptyping library to define shapes of data (d824d27)
Trajectory env refactored (2aeeb96)
Cache pybullet by installing in empty workflow (15e4a88)
Properly handle asset paths (583c600)
Miscellaneous Tasks
Use more appropriate clip_scalar (e288313)
Deal with refactoring of drone envs (05fe4c5)
Give ground plane collision data in info dict (417de31)
Deal with the various refactors (0455adb)
Deal with the various refactors (76d4715)
Add nptyping to requirements (c0a45f6)
Export DronePlus from envs (7860f19)
Update changelog for v0.2.0 [skip pre-commit.ci] (1a4ccd8)
Refactor
Testing
Fully test PID controllers (94862d4)
[0.1.2] - 2023-01-31
Bug Fixes
Documentation
Miscellaneous Tasks
Refactor
[0.1.1] - 2023-01-31
Bug Fixes
Documentation
Features
Check docstr coverage isn’t being reduced (a4be21b)
Miscellaneous Tasks
Improve readme (f909511)
Add future work on motor modelling (9307e91)
Mute git checkouts in docstr-cov CI (9721eb9)
Fix flake errors (ambiguous variable, unused imports) (1f2b750)
Add intersphinx mapping for gymnasium (c0316f8)
Don’t upload badge as artifact. Can’t currently use it (6d9817b)
Upload docstr-cov badge to gh-pages (d7e923a)
Update changelog for v0.1.1 [skip pre-commit.ci] (066c6c3)
[0.1.0] - 2023-01-27
Bug Fixes
Updates to setup since there’s no CPP (6e489fb)
Use pip wheel rather than cibuildwheel as it’s currently a pure python package (94a0837)
No need for many and musl as it’s pure python for now (3e57819)
Move to only python >=3.10 (87570d9)
Space (a870dfe)
Spaces (808a9cd)
Fix issues with runners not correctly initializing due to misconfigured matrix (5c88fca)
Set correct permissions for gh pages and releases (8aabdfd)
Install docs/requiremnts.txt rather than tests/ (961f940)
Revert permissions, as this is done through settings console (07b9198)
Features
Miscellaneous Tasks
Update changelog for v0.2.0 [skip pre-commit.ci] (e4b25d4)
Update changelog for v0.1.0 [skip pre-commit.ci] (9b40238)
Update how conda is used in CI (d9704d8)
A little import cleanup (6cb83e9)
Update CI to also run integration tests but standalone (aa867ce)
Document transform funcs to show what’s happening behind the scenes in PB3 (645ce50)
Update changelog for v0.1.0 [skip pre-commit.ci] (79d9f01)
Delete changelog for redo of v0.1.0 [skip pre-commit.ci] (45f3fb3)
Update changelog for v0.1.0 [skip pre-commit.ci] (d3dc768)
Refactor
Docs filenames and symlink names (64aba9a)