Releases: proroklab/VectorizedMultiAgentSimulator
1.4.3
As always, we have a LOT of new updates and this time they are mostly community-driven.
Ovewrview
Terminated/truncated support and Gymnasium wrapper #143
Thanks to @LukasSchaefer, we now have the option to return terminated and truncated from vmas envs instead of done.
We further have wrappers for gymnasium (single vmas env) and vectorized gymnasium, which wraps a batched vmas environemnt, maintaining the n_envs
dimension in the data.
Choose how you want to discretize continuous actions #119
Before, continuous actions were discretized in 3 options: increase, decrease, stay
Now, thanks to @rikifunt, you can choose how many options you want to split the continuous range in!
Vectorized lidars #124
Lidars have multiple rays that can see multiple entities. Thanks to @Zartris we know have vectorized both these dimensions making scaling seamless in the number of rays.
VIsualize the boundaries of the world #142
Thanks to @Giovannibriglia, if you set the world bouindaries in a scenario, VMAS now automatically plots them
More dynamics #125
- Static: no movement actions
- Forward: just froward and backwards force in the direction of the orientation
- Rotation: just rotation action
Breaking changes
env.unwrapped()
->env.unwrapped
inGymWrapper
- removed from "discovery" a redundant
agent.state.pos
in observation
What's Changed
- [Feature] Joint rotation offset and more dynamics by @matteobettini in #125
- [BugFix] Fixed joints inferred angle by @matteobettini in #127
- [Feature] Warn if spwaning entities takes too long by @matteobettini in #128
- [Feature] different number of actions for each action dimension (discrete actions) by @rikifunt in #119
- Introduce x_semidim and y_semidim parameters to enable customizable environment dimensions by @Giovannibriglia in #133
- [BugFix] Discovery obs by @matteobettini in #137
- [Bug fix] Navigation scenario: ensure entity placement within constrained environment boundaries by @Giovannibriglia in #139
- [Feature] Enable to set the number of lidar rays in navigation, discovery and flocking scenarios by @Giovannibriglia in #141
- [Feature] Boundary visualization for limited-size environments by @Giovannibriglia in #142
- [Feature] Terminated/truncated support and Gymnasium wrapper by @LukasSchaefer in #143
New Contributors
- @rikifunt made their first contribution in #119
- @Giovannibriglia made their first contribution in #133
- @LukasSchaefer made their first contribution in #143
Full Changelog: 1.4.2...1.4.3
1.4.2
VMAS 1.4.2
This time we have a LOT of exciting updates and community contributions.
New road traffic scenario
First and foremost, we have a new road_traffic
scenario thanks to the formidable work of @Jianye-Xu !
Here is a gif to stimulate your appetite
Joints are more powerfull than ever
In #113 we made serious improvements to joints.
Now you can connect n-bodies to form new physical bodies that share all forces and torques.
Check out the renderings in #113 for examples of what can be done now in VMAS with joints
Here is a taster
LIDAR improvements
@Zartris made lidar his mission and helped on a lot of useful LIDAR features
- Lidar angles are now relative to the agent rotation #101
- rendering lidars is now optional #108
- imporvement to lidar rendering and transparency #115
New pre_step
and post_step
scenario functions
@Zartris also made creating scenarios way easier with the addition of these 2 functions.
Check them out in #112
Kwargs check in scenarios
Thanks to @KaleabTessera we now have better kwargs checking that will warn you if you pass an unexpected parameter to a scenario
#117
What's Changed
- [Rendering] Import
matplotplib
only if necessary by @matteobettini in #96 - [Feature] Make lidar angles relative to agent rotation by @matteobettini in #101
- [BugFix] Fix dynamics by @matteobettini in #102
- [Tests] MacOS runner to Apple silicon by @matteobettini in #103
- [CI] FIx CI by @matteobettini in #105
- [Feature] Optional sensor render by @matteobettini in #108
- [Feature] Remove extra
observation
call by @matteobettini in #111 - [Feature] Adding pre and post step to BaseScenario by @Zartris in #112
- [Feature] Joint rotations by @matteobettini in #113
- [Feature] Warn when kwargs passed to a
Scenario
are not used by @matteobettini in #117 - [Tests] Improve tests by @matteobettini in #118
- [Feat] Render lidar before agents and allow for tuple as color by @Zartris in #115
- [New Scenario] Road Traffic by @Jianye-Xu in #99
- [Rendering] Add ellipse by @matteobettini in #123
New Contributors
Full Changelog: 1.4.1...1.4.2
VMAS-1.4.1
Highlights
- Drone dynamics by @gy2256 in #83 !!!
- Fix a bug where the package mass was not passed to the constructor in the transport scenarios by @kfu02 in #91
- Introduce
scenario.render_origin
by @matteobettini in #93 - Compatibility with Python 3.11 by @matteobettini in #95
- Better tests and CI on all platforms #89
- Now VMAS has docs!
What's Changed
- [Dynamics] Drone dynamics by @gy2256 in #83
- [CodeQuality] Pre-commit formatting by @matteobettini in #87
- [Docs] First instance of basic docs by @matteobettini in #85
- [Docs] Usage by @matteobettini in #88
- [Test] Better tests and multi OS by @matteobettini in #89
- [Notbooks] Refresh notebooks by @matteobettini in #90
- [Bug] Package mass arg now passed into constructor by @kfu02 in #91
- [Render] Introduce
scenario.render_origin
by @matteobettini in #93 - [Quality] Python 3.11 by @matteobettini in #95
New Contributors
Full Changelog: VMAS-1.4.0...VMAS-1.4.1
VMAS-1.4.0
Differentiable VMAS
That's right, VMAS is now fully differentiable!
How do I use it?
Just set grad_enabled=True
at environement construction time and have any input that requires gradients. This can be actions or scenario parameters. VMAS will keep track of the computation graph on that tensor over time.
What does it mean?
It means that you can differentiate any VMAS output, enabling differentaition of the transition dynamics, reward functions, and observation functions.
Why is it useful?
You can now optimize parameters in VMAS scenarios (e.g., parameters of the various scenario functions or simply initial state values) using losses computed on rewards or observations. It further allows you to backpropagate through time (simulation steps).
What's Changed
- [Feature] Differentiable VMAS by @matteobettini in #80
- [Refactor] DIff drive dynamics by @matteobettini in #81
Full Changelog: VMAS-1.3.4...VMAS-1.4.0
VMAS-1.3.4
Highlights
- VMAS actions are now decoupled from physics. This allows to define custom agent dynamic models (
Holonomic
,HolonomicWithRotation
,DiffDrive
,KinematicBicycle
) at construction. And also have additional custom actions. See #76 - Control Lyapunov Controllers are available in VMAS as heuristics! @gy2256 made this possible in #74
- Scenarios that could be done after a reset have been fixed (e.g., transport, dropout) and more kwargs were added to scenarios in #78
What's Changed
- Added an HeuristicPolicy with Control Lyapunov Controller by @gy2256 in #74
- [Feature] Actions detached from physics and allow any number of actions by @matteobettini in #76
- [Feature] Update scenarios by @matteobettini in #78
New Contributors
Full Changelog: VMAS-1.3.3...VMAS-1.3.4
VMAS-1.3.3
Fixed bugs related to new vecotrized constraints
Full Changelog: VMAS-1.3.0...VMAS-1.3.3
VMAS-1.3.0
Vectorized physics eginge
If you are using vmas, this is the time to pull.
The physics engine has been rewritten to run vectorised over the agents (not only over environments) with no changes at all to the VMAS logic and interface.
The change
- Before: vmas was vectorized over the environments, but the engine that resolves collisions and constraints ran a double for loop over the entities
- Now: the double for loop over the entities has been replaced by vectorization, making vmas vectorized both in the agent and in the environment dimensions while still keeping the possibility of heterogeneity among the agents.
What it means
- Normal environments can observe speedups around 10x
- Environments with high density of collidable entities will observe incredible speedups (especially on gpu) up to 10000x
- Simulating environments with large number of agents and entities of different shapes should be significantly faster with better computational scaling in the number of entities
Car-like robot dynamics
Thanks to @Jianye-Xu VMAS now has dynamics for car like robots. Meaning that you create your favourite traffic scenarios.
Check out the dedicated scenario to see how this works.
What's Changed
- [Refactor]
use_vmas_env
example compatible with 3d actions by @matteobettini in #69 - [Feature] New dynamics for car-like robots: kinematic bicycle model by @Jianye-Xu in #68
- [Rendering] Choose cmap to plot by @matteobettini in #70
- [Perf] Vectorized collisions and other major perf improvements by @matteobettini in #71
New Contributors
- @Jianye-Xu made their first contribution in #68
Full Changelog: VMAS-1.2.13...VMAS-1.3.0
VMAS-1.2.13
- Fixes to MPE resetting
- Introduces naming convention
<name>_<int>
for all scenarios (to be used in torchrl for automatic grouping pytorch/rl#1658)
VMAS-1.2.12
What's Changed
- [Feature] Text is a Geom and can be returned by scenarios by @matteobettini in #54
- detach() on input actions
- [DOCS] Torchrl notebook link by @matteobettini in #59
Full Changelog: VMAS-1.2.11...VMAS-1.2.12