diff --git a/.gitattributes b/.gitattributes index a6344aac8c09253b3b630fb776ae94478aa0275b..a37a85082d4ce51e1e2fe4bc62a7c3bd3757c1a2 100644 --- a/.gitattributes +++ b/.gitattributes @@ -33,3 +33,11 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text *.zip filter=lfs diff=lfs merge=lfs -text *.zst filter=lfs diff=lfs merge=lfs -text *tfevents* filter=lfs diff=lfs merge=lfs -text +Kinetix/images/general_2.gif filter=lfs diff=lfs merge=lfs -text +Kinetix/images/kinetix_logo.gif filter=lfs diff=lfs merge=lfs -text +Kinetix/images/random_1.gif filter=lfs diff=lfs merge=lfs -text +Kinetix/images/random_3.gif filter=lfs diff=lfs merge=lfs -text +Kinetix/images/random_4.gif filter=lfs diff=lfs merge=lfs -text +Kinetix/images/random_5.gif filter=lfs diff=lfs merge=lfs -text +Kinetix/images/random_6.gif filter=lfs diff=lfs merge=lfs -text +Kinetix/images/random_7.gif filter=lfs diff=lfs merge=lfs -text diff --git a/Kinetix/.gitignore b/Kinetix/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..19d580e9fd51b30673d17aa025aa1297f940562e --- /dev/null +++ b/Kinetix/.gitignore @@ -0,0 +1,194 @@ +tmp/ +wandb/ +runs/ + +play_data +checkpoints + +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache* +.cache_* +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + + +!configs/env + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +.idea/ +texture_cache.pbz2 +texture_cache*.pbz2 +profile* +wandb_key +test.py +outputs +lol* +.cache-location +experiments/ppo_old.py +.bash_history +logs/ +.vscode + +kinetix/util/old_learning_with_mask.py +offline/datasets/*.pkl +all_sweeps +worlds/games + +artifacts +log*_* +kinetix/analysis/test*.py +slurm-*.out +results/ \ No newline at end of file diff --git a/Kinetix/.pre-commit-config.yaml b/Kinetix/.pre-commit-config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..8d09c1da9329a603975621978dfe11c7110dc807 --- /dev/null +++ b/Kinetix/.pre-commit-config.yaml @@ -0,0 +1,7 @@ +repos: +- repo: https://github.com/psf/black + rev: 22.3.0 + hooks: + - id: black + language_version: python3 + args: [--line-length=120] \ No newline at end of file diff --git a/Kinetix/LICENSE b/Kinetix/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..70b0f5878e5bd2bc15aec41eb21b98f5a4571ebd --- /dev/null +++ b/Kinetix/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2024 Michael Matthews + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/Kinetix/README.md b/Kinetix/README.md new file mode 100644 index 0000000000000000000000000000000000000000..e23f5db8c31cea8c13b61d56b83257c367bb5ac9 --- /dev/null +++ b/Kinetix/README.md @@ -0,0 +1,217 @@ +

+ +

+ +

+ + + + + + + + + + + + +

+ +# Kinetix + +Kinetix is a framework for reinforcement learning in a 2D rigid-body physics world, written entirely in [JAX](https://github.com/jax-ml/jax). +Kinetix can represent a huge array of physics-based tasks within a unified framework. +We use Kinetix to investigate the training of large, general reinforcement learning agents by procedurally generating millions of tasks for training. +You can play with Kinetix in our [online editor](https://kinetix-env.github.io/), or have a look at the JAX [physics engine](https://github.com/MichaelTMatthews/Jax2D) and [graphics library](https://github.com/FLAIROx/JaxGL) we made for Kinetix. Finally, see our [docs](./docs/README.md) for more information and more in-depth examples. + +

+ + + +

+

+ + + +

+ +

+The above shows specialist agents trained on their respective levels. +

+ +# 📊 Paper TL; DR + + + +We train a general agent on millions of procedurally generated physics tasks. +Every task has the same goal: make the green and blue touch, without green touching red. +The agent can act through applying torque via motors and force via thrusters. + +

+ + + +

+

+ + + +

+ +

+The above shows a general agent zero-shotting unseen randomly generated levels. +

+ +We then investigate the transfer capabilities of this agent to unseen handmade levels. +We find that the agent can zero-shot simple physics problems, but still struggles with harder tasks. + +

+ + + +

+

+ + + +

+ +

+The above shows a general agent zero-shotting unseen handmade levels. +

+ + +# 📜 Basic Usage + +Kinetix follows the interfaces established in [gymnax](https://github.com/RobertTLange/gymnax) and [jaxued](https://github.com/DramaCow/jaxued): + +```python +# Use default parameters +env_params = EnvParams() +static_env_params = StaticEnvParams() +ued_params = UEDParams() + +# Create the environment +env = make_kinetix_env_from_args( + obs_type="pixels", + action_type="multidiscrete", + reset_type="replay", + static_env_params=static_env_params, +) + +# Sample a random level +rng = jax.random.PRNGKey(0) +rng, _rng = jax.random.split(rng) +level = sample_kinetix_level(_rng, env.physics_engine, env_params, static_env_params, ued_params) + +# Reset the environment state to this level +rng, _rng = jax.random.split(rng) +obs, env_state = env.reset_to_level(_rng, level, env_params) + +# Take a step in the environment +rng, _rng = jax.random.split(rng) +action = env.action_space(env_params).sample(_rng) +rng, _rng = jax.random.split(rng) +obs, env_state, reward, done, info = env.step(_rng, env_state, action, env_params) +``` + + +# ⬇️ Installation +To install Kinetix with a CUDA-enabled JAX backend (tested with python3.10): +```commandline +git clone https://github.com/FlairOx/Kinetix.git +cd Kinetix +pip install -e . +pre-commit install +``` + +# 🎯 Editor +We recommend using the [KinetixJS editor](https://kinetix-env.github.io/gallery.html?editor=true), but also provide a native (less polished) Kinetix editor. + +To open this editor run the following command. +```commandline +python3 kinetix/editor.py +``` + +The controls in the editor are: +- Move between `edit` and `play` modes using `spacebar` +- In `edit` mode, the type of edit is shown by the icon at the top and is changed by scrolling the mouse wheel. For instance, by navigating to the rectangle editing function you can click to place a rectangle. + - You can also press the number keys to cycle between modes. +- To open handmade levels press ctrl-O and navigate to the ones in the L folder. +- **When playing a level use the arrow keys to control motors and the numeric keys (1, 2) to control thrusters.** + +# 📈 Experiments + +We have three primary experiment files, +1. [**SFL**](https://github.com/amacrutherford/sampling-for-learnability?tab=readme-ov-file): Training on levels with high learnability, this is how we trained our best general agents. +2. **PLR** PLR/DR/ACCEL in the [JAXUED](https://github.com/DramaCow/jaxued) style. +3. **PPO** Normal PPO in the [PureJaxRL](https://github.com/luchris429/purejaxrl/) style. + +To run experiments with default parameters run any of the following: +```commandline +python3 experiments/sfl.py +python3 experiments/plr.py +python3 experiments/ppo.py +``` + +We use [hydra](https://hydra.cc/) for managing our configs. See the `configs/` folder for all the hydra configs that will be used by default. +If you want to run experiments with different configurations, you can either edit these configs or pass command line arguments as so: + +```commandline +python3 experiments/sfl.py model.transformer_depth=8 +``` + +These experiments use [wandb](https://wandb.ai/home) for logging by default. + +## 🏋️ Training RL Agents +We provide several different ways to train RL agents, with the three most common options being, (a) [Training an agent on random levels](#training-on-random-levels), (b) [Training an agent on a single, hand-designed level](#training-on-a-single-hand-designed-level) or (c) [Training an agent on a set of hand-designed levels](#training-on-a-set-of-hand-designed-levels). + +> [!WARNING] +> Kinetix has three different environment sizes, `s`, `m` and `l`. When running any of the scripts, you have to set the `env_size` option accordingly, for instance, `python3 experiments/ppo.py train_levels=random env_size=m` would train on random `m` levels. +> It will give an error if you try and load large levels into a small env size, for instance `python3 experiments/ppo.py train_levels=m env_size=s` would error. + +### Training on random levels +This is the default option, but we give the explicit command for completeness +```commandline +python3 experiments/ppo.py train_levels=random +``` +### Training on a single hand-designed level + +> [!NOTE] +> Check the `worlds/` folder for handmade levels for each size category. By default, the loading functions require a relative path to the `worlds/` directory + +```commandline +python3 experiments/ppo.py train_levels=s train_levels.train_levels_list='["s/h4_thrust_aim.json"]' +``` +### Training on a set of hand-designed levels +```commandline +python3 experiments/ppo.py train_levels=s env_size=s eval_env_size=s +# python3 experiments/ppo.py train_levels=m env_size=m eval_env_size=m +# python3 experiments/ppo.py train_levels=l env_size=l eval_env_size=l +``` + +Or, on a custom set: +```commandline +python3 experiments/ppo.py train_levels=l eval_env_size=l env_size=l train_levels.train_levels_list='["s/h2_one_wheel_car","l/h11_obstacle_avoidance"]' +``` + + +# 🔎 See Also +- 🌐 [Kinetix.js](https://github.com/Michael-Beukman/Kinetix.js) Kinetix reimplemented in Javascript, with a live demo [here](https://kinetix-env.github.io/gallery.html?editor=true). +- 🍎 [Jax2D](https://github.com/MichaelTMatthews/Jax2D) The physics engine we made for Kinetix. +- 👨‍💻 [JaxGL](https://github.com/FLAIROx/JaxGL) The graphics library we made for Kinetix. +- 📋 [Our Paper](https://arxiv.org/abs/2410.23208) for more details and empirical results. + +# 📚 Citation +Please cite Kinetix it as follows: +``` +@article{matthews2024kinetix, + title={Kinetix: Investigating the Training of General Agents through Open-Ended Physics-Based Control Tasks}, + author={Michael Matthews and Michael Beukman and Chris Lu and Jakob Foerster}, + year={2024}, + eprint={2410.23208}, + archivePrefix={arXiv}, + primaryClass={cs.LG}, + url={https://arxiv.org/abs/2410.23208}, +} +``` diff --git a/Kinetix/configs/editor.yaml b/Kinetix/configs/editor.yaml new file mode 100644 index 0000000000000000000000000000000000000000..4601d4bd1095bdcfd17901e6fa7b62bfd8f3438e --- /dev/null +++ b/Kinetix/configs/editor.yaml @@ -0,0 +1,22 @@ +defaults: + - env: entity + - env_size: l + - learning: + - ppo-base + - ppo-rnn + - misc: misc + - model: + - model-base + - model-transformer + - _self_ + +seed: 0 +upscale: 2 +downscale: 1 +fps: 60 +debug: true + +env: + frame_skip: 1 + +agent_taking_actions: false \ No newline at end of file diff --git a/Kinetix/configs/env/entity.yaml b/Kinetix/configs/env/entity.yaml new file mode 100644 index 0000000000000000000000000000000000000000..042e4e472b4867070cad4064757a5beff8f165e6 --- /dev/null +++ b/Kinetix/configs/env/entity.yaml @@ -0,0 +1,3 @@ +env_name: "Kinetix-Entity-MultiDiscrete-v1" +dense_reward_scale: 2.0 +frame_skip: 2 \ No newline at end of file diff --git a/Kinetix/configs/env/symbolic.yaml b/Kinetix/configs/env/symbolic.yaml new file mode 100644 index 0000000000000000000000000000000000000000..0a1d948d89dc114c86e7a3dde22038b4d5bf1ce2 --- /dev/null +++ b/Kinetix/configs/env/symbolic.yaml @@ -0,0 +1,3 @@ +env_name: "Kinetix-Symbolic-MultiDiscrete-v1" +dense_reward_scale: 2.0 +frame_skip: 2 \ No newline at end of file diff --git a/Kinetix/configs/env_size/custom.yaml b/Kinetix/configs/env_size/custom.yaml new file mode 100644 index 0000000000000000000000000000000000000000..97eb42727c5889939d9f90a4cbbd249fd8c4dbe9 --- /dev/null +++ b/Kinetix/configs/env_size/custom.yaml @@ -0,0 +1,3 @@ +custom_path: worlds/l/grasp_easy.json +env_size_type: custom +env_size_name: custom \ No newline at end of file diff --git a/Kinetix/configs/env_size/l.yaml b/Kinetix/configs/env_size/l.yaml new file mode 100644 index 0000000000000000000000000000000000000000..4629607b90d3fc30e7d8594321ceec6b3af35ccb --- /dev/null +++ b/Kinetix/configs/env_size/l.yaml @@ -0,0 +1,8 @@ +num_polygons: 12 +num_circles: 4 +num_joints: 6 +num_thrusters: 2 +env_size_name: l +num_motor_bindings: 4 +num_thruster_bindings: 2 +env_size_type: predefined \ No newline at end of file diff --git a/Kinetix/configs/env_size/m.yaml b/Kinetix/configs/env_size/m.yaml new file mode 100644 index 0000000000000000000000000000000000000000..a5b2c2abcf5e7ceb1eacc315221ee8253e745ca8 --- /dev/null +++ b/Kinetix/configs/env_size/m.yaml @@ -0,0 +1,8 @@ +num_polygons: 6 +num_circles: 3 +num_joints: 2 +num_thrusters: 2 +env_size_name: m +num_motor_bindings: 4 +num_thruster_bindings: 2 +env_size_type: predefined \ No newline at end of file diff --git a/Kinetix/configs/env_size/s.yaml b/Kinetix/configs/env_size/s.yaml new file mode 100644 index 0000000000000000000000000000000000000000..2e0dfc1ce5ef8570f08331b17dd0c94208caec7f --- /dev/null +++ b/Kinetix/configs/env_size/s.yaml @@ -0,0 +1,8 @@ +num_polygons: 5 +num_circles: 2 +num_joints: 1 +num_thrusters: 1 +env_size_name: s +num_motor_bindings: 4 +num_thruster_bindings: 2 +env_size_type: predefined \ No newline at end of file diff --git a/Kinetix/configs/eval/eval_all.yaml b/Kinetix/configs/eval/eval_all.yaml new file mode 100644 index 0000000000000000000000000000000000000000..e502b48869d28c042be23704dab08b9800f170a8 --- /dev/null +++ b/Kinetix/configs/eval/eval_all.yaml @@ -0,0 +1,82 @@ +eval_levels: + [ + "s/h0_weak_thrust", + "s/h7_unicycle_left", + "s/h3_point_the_thruster", + "s/h4_thrust_aim", + "s/h1_thrust_over_ball", + "s/h5_rotate_fall", + "s/h9_explode_then_thrust_over", + "s/h6_unicycle_right", + "s/h8_unicycle_balance", + "s/h2_one_wheel_car", + + "m/h0_unicycle", + "m/h1_car_left", + "m/h2_car_right", + "m/h3_car_thrust", + "m/h4_thrust_the_needle", + "m/h5_angry_birds", + "m/h6_thrust_over", + "m/h7_car_flip", + "m/h8_weird_vehicle", + "m/h9_spin_the_right_way", + "m/h10_thrust_right_easy", + "m/h11_thrust_left_easy", + "m/h12_thrustfall_left", + "m/h13_thrustfall_right", + "m/h14_thrustblock", + "m/h15_thrustshoot", + "m/h16_thrustcontrol_right", + "m/h17_thrustcontrol_left", + "m/h18_thrust_right_very_easy", + "m/h19_thrust_left_very_easy", + "m/arm_left", + "m/arm_right", + "m/arm_up", + "m/arm_hard", + + "l/h0_angrybirds", + "l/h1_car_left", + "l/h2_car_ramp", + "l/h3_car_right", + "l/h4_cartpole", + "l/h5_flappy_bird", + "l/h6_lorry", + "l/h7_maze_1", + "l/h8_maze_2", + "l/h9_morph_direction", + "l/h10_morph_direction_2", + "l/h11_obstacle_avoidance", + "l/h12_platformer_1", + "l/h13_platformer_2", + "l/h14_simple_thruster", + "l/h15_swing_up", + "l/h16_thruster_goal", + "l/h17_unicycle", + "l/hard_beam_balance", + "l/hard_cartpole_thrust", + "l/hard_cartpole_wheels", + "l/hard_lunar_lander", + "l/hard_pinball", + "l/grasp_hard", + "l/grasp_easy", + "l/mjc_half_cheetah", + "l/mjc_half_cheetah_easy", + "l/mjc_hopper", + "l/mjc_hopper_easy", + "l/mjc_swimmer", + "l/mjc_walker", + "l/mjc_walker_easy", + "l/car_launch", + "l/car_swing_around", + "l/chain_lander", + "l/chain_thrust", + "l/gears", + "l/lever_puzzle", + "l/pr", + "l/rail", + ] +eval_num_attempts: 10 +eval_freq: 10 +EVAL_ON_SAMPLED: false \ No newline at end of file diff --git a/Kinetix/configs/eval/eval_auto.yaml b/Kinetix/configs/eval/eval_auto.yaml new file mode 100644 index 0000000000000000000000000000000000000000..aae572a209514e6885037c0ae04513ca82884d71 --- /dev/null +++ b/Kinetix/configs/eval/eval_auto.yaml @@ -0,0 +1,4 @@ +eval_levels: "auto" +eval_num_attempts: 10 +eval_freq: 10 +EVAL_ON_SAMPLED: false \ No newline at end of file diff --git a/Kinetix/configs/eval/eval_general.yaml b/Kinetix/configs/eval/eval_general.yaml new file mode 100644 index 0000000000000000000000000000000000000000..00d2b00228e233dca097e56ff7c1213af0cd4ffe --- /dev/null +++ b/Kinetix/configs/eval/eval_general.yaml @@ -0,0 +1,7 @@ +eval_levels: + [ + "easy.simple_thruster", + ] +eval_num_attempts: 10 +eval_freq: 10 +EVAL_ON_SAMPLED: false \ No newline at end of file diff --git a/Kinetix/configs/eval/l.yaml b/Kinetix/configs/eval/l.yaml new file mode 100644 index 0000000000000000000000000000000000000000..71516b2093c0f10563ea5d9ccd71b9922b12d718 --- /dev/null +++ b/Kinetix/configs/eval/l.yaml @@ -0,0 +1,46 @@ +eval_levels: + [ + "l/h0_angrybirds", + "l/h1_car_left", + "l/h2_car_ramp", + "l/h3_car_right", + "l/h4_cartpole", + "l/h5_flappy_bird", + "l/h6_lorry", + "l/h7_maze_1", + "l/h8_maze_2", + "l/h9_morph_direction", + "l/h10_morph_direction_2", + "l/h11_obstacle_avoidance", + "l/h12_platformer_1", + "l/h13_platformer_2", + "l/h14_simple_thruster", + "l/h15_swing_up", + "l/h16_thruster_goal", + "l/h17_unicycle", + "l/hard_beam_balance", + "l/hard_cartpole_thrust", + "l/hard_cartpole_wheels", + "l/hard_lunar_lander", + "l/hard_pinball", + "l/grasp_hard", + "l/grasp_easy", + "l/mjc_half_cheetah", + "l/mjc_half_cheetah_easy", + "l/mjc_hopper", + "l/mjc_hopper_easy", + "l/mjc_swimmer", + "l/mjc_walker", + "l/mjc_walker_easy", + "l/car_launch", + "l/car_swing_around", + "l/chain_lander", + "l/chain_thrust", + "l/gears", + "l/lever_puzzle", + "l/pr", + "l/rail", + ] +eval_num_attempts: 10 +eval_freq: 50 +EVAL_ON_SAMPLED: true \ No newline at end of file diff --git a/Kinetix/configs/eval/m.yaml b/Kinetix/configs/eval/m.yaml new file mode 100644 index 0000000000000000000000000000000000000000..4e274e6e6ecc8f39622b26c89e0f201cf7dd90a3 --- /dev/null +++ b/Kinetix/configs/eval/m.yaml @@ -0,0 +1,30 @@ +eval_levels: + [ + "m/h0_unicycle", + "m/h1_car_left", + "m/h2_car_right", + "m/h3_car_thrust", + "m/h4_thrust_the_needle", + "m/h5_angry_birds", + "m/h6_thrust_over", + "m/h7_car_flip", + "m/h8_weird_vehicle", + "m/h9_spin_the_right_way", + "m/h10_thrust_right_easy", + "m/h11_thrust_left_easy", + "m/h12_thrustfall_left", + "m/h13_thrustfall_right", + "m/h14_thrustblock", + "m/h15_thrustshoot", + "m/h16_thrustcontrol_right", + "m/h17_thrustcontrol_left", + "m/h18_thrust_right_very_easy", + "m/h19_thrust_left_very_easy", + "m/arm_left", + "m/arm_right", + "m/arm_up", + "m/arm_hard", + ] +eval_num_attempts: 10 +eval_freq: 50 +EVAL_ON_SAMPLED: true \ No newline at end of file diff --git a/Kinetix/configs/eval/mujoco.yaml b/Kinetix/configs/eval/mujoco.yaml new file mode 100644 index 0000000000000000000000000000000000000000..bbedb84fa36c520bdf9c79849e8f757eee067926 --- /dev/null +++ b/Kinetix/configs/eval/mujoco.yaml @@ -0,0 +1,13 @@ +eval_levels: + [ + "l/mjc_half_cheetah", + "l/mjc_half_cheetah_easy", + "l/mjc_hopper", + "l/mjc_hopper_easy", + "l/mjc_swimmer", + "l/mjc_walker", + "l/mjc_walker_easy", + ] +eval_num_attempts: 10 +eval_freq: 10 +EVAL_ON_SAMPLED: false \ No newline at end of file diff --git a/Kinetix/configs/eval/s.yaml b/Kinetix/configs/eval/s.yaml new file mode 100644 index 0000000000000000000000000000000000000000..52f305ce2f52ed36c011ef7c0020adbec3cfd673 --- /dev/null +++ b/Kinetix/configs/eval/s.yaml @@ -0,0 +1,16 @@ +eval_levels: + [ + "s/h0_weak_thrust", + "s/h7_unicycle_left", + "s/h3_point_the_thruster", + "s/h4_thrust_aim", + "s/h1_thrust_over_ball", + "s/h5_rotate_fall", + "s/h9_explode_then_thrust_over", + "s/h6_unicycle_right", + "s/h8_unicycle_balance", + "s/h2_one_wheel_car", + ] +eval_num_attempts: 10 +eval_freq: 50 +EVAL_ON_SAMPLED: true \ No newline at end of file diff --git a/Kinetix/configs/eval_env_size/l.yaml b/Kinetix/configs/eval_env_size/l.yaml new file mode 100644 index 0000000000000000000000000000000000000000..5569d980463eeb274e741e931bd2a9be812dfb0c --- /dev/null +++ b/Kinetix/configs/eval_env_size/l.yaml @@ -0,0 +1,7 @@ +num_polygons: 12 +num_circles: 4 +num_joints: 6 +num_thrusters: 2 +env_size_name: l +num_motor_bindings: 4 +num_thruster_bindings: 2 \ No newline at end of file diff --git a/Kinetix/configs/eval_env_size/m.yaml b/Kinetix/configs/eval_env_size/m.yaml new file mode 100644 index 0000000000000000000000000000000000000000..e3f7b4fe188f938103d8d9aeb7bc630b7d7bab6f --- /dev/null +++ b/Kinetix/configs/eval_env_size/m.yaml @@ -0,0 +1,7 @@ +num_polygons: 6 +num_circles: 3 +num_joints: 2 +num_thrusters: 2 +env_size_name: m +num_motor_bindings: 4 +num_thruster_bindings: 2 \ No newline at end of file diff --git a/Kinetix/configs/eval_env_size/s.yaml b/Kinetix/configs/eval_env_size/s.yaml new file mode 100644 index 0000000000000000000000000000000000000000..25af087a49c0d472e9f9ad2f049497af9ab7ff76 --- /dev/null +++ b/Kinetix/configs/eval_env_size/s.yaml @@ -0,0 +1,7 @@ +num_polygons: 5 +num_circles: 2 +num_joints: 1 +num_thrusters: 1 +env_size_name: s +num_motor_bindings: 4 +num_thruster_bindings: 2 \ No newline at end of file diff --git a/Kinetix/configs/learning/ppo-base.yaml b/Kinetix/configs/learning/ppo-base.yaml new file mode 100644 index 0000000000000000000000000000000000000000..48565ac32db1f9e836bdd73c2454375a257eb17d --- /dev/null +++ b/Kinetix/configs/learning/ppo-base.yaml @@ -0,0 +1,20 @@ +lr: 5e-5 +peak_lr: 3e-4 +initial_lr: 1e-5 +warmup_frac: 0.1 +max_grad_norm: 1.0 +total_timesteps: 1073741824 +num_train_envs: 2048 +num_minibatches: 32 +gamma: 0.995 +update_epochs: 8 +clip_eps: 0.2 +gae_lambda: 0.9 +ent_coef: 0.01 +anneal_lr: false +warmup_lr: false +vf_coef: 0.5 +permute_state_during_training: false +filter_levels: true +level_filter_n_steps: 64 +level_filter_sample_ratio: 2 \ No newline at end of file diff --git a/Kinetix/configs/learning/ppo-rnn.yaml b/Kinetix/configs/learning/ppo-rnn.yaml new file mode 100644 index 0000000000000000000000000000000000000000..5be41f56baa65e4201ce0625ef5c01e1e745b1fd --- /dev/null +++ b/Kinetix/configs/learning/ppo-rnn.yaml @@ -0,0 +1,2 @@ +num_steps: 64 +num_repeats: 1 \ No newline at end of file diff --git a/Kinetix/configs/learning/ppo-sfl.yaml b/Kinetix/configs/learning/ppo-sfl.yaml new file mode 100644 index 0000000000000000000000000000000000000000..aa4e35e44f1a8aec0c0b8d10f93f54ab6fc21e3e --- /dev/null +++ b/Kinetix/configs/learning/ppo-sfl.yaml @@ -0,0 +1 @@ +num_steps: 512 \ No newline at end of file diff --git a/Kinetix/configs/learning/ppo-ued.yaml b/Kinetix/configs/learning/ppo-ued.yaml new file mode 100644 index 0000000000000000000000000000000000000000..e5e7d272118fc07f636dc03b486ef7651f4fbb54 --- /dev/null +++ b/Kinetix/configs/learning/ppo-ued.yaml @@ -0,0 +1,2 @@ +num_steps: 64 +outer_rollout_steps: 4 \ No newline at end of file diff --git a/Kinetix/configs/misc/misc.yaml b/Kinetix/configs/misc/misc.yaml new file mode 100644 index 0000000000000000000000000000000000000000..12970dda6e7dd8d63b9c4826eea9460cf383907d --- /dev/null +++ b/Kinetix/configs/misc/misc.yaml @@ -0,0 +1,16 @@ +group: "auto" +group_auto_prefix: "" +save_path: "checkpoints/kinetix" +use_wandb: true +save_policy: true +wandb_project: "kinetix-experiments" +wandb_entity: null +wandb_mode : online +video_frequency: 10 +load_from_checkpoint: null +load_only_params: true +checkpoint_save_freq: 512 +checkpoint_human_numbers: false +load_legacy_checkpoint: false +load_train_levels_legacy: false +economical_saving: false \ No newline at end of file diff --git a/Kinetix/configs/model/model-base.yaml b/Kinetix/configs/model/model-base.yaml new file mode 100644 index 0000000000000000000000000000000000000000..a85132c0fda8f20b0dccf553fabd5ebcc0f8f523 --- /dev/null +++ b/Kinetix/configs/model/model-base.yaml @@ -0,0 +1,4 @@ +fc_layer_depth: 5 +fc_layer_width: 128 +activation: "tanh" +recurrent_model: False \ No newline at end of file diff --git a/Kinetix/configs/model/model-transformer.yaml b/Kinetix/configs/model/model-transformer.yaml new file mode 100644 index 0000000000000000000000000000000000000000..05d62c5ba16d491853c1899baaf1beca2a9bc16f --- /dev/null +++ b/Kinetix/configs/model/model-transformer.yaml @@ -0,0 +1,6 @@ +transformer_depth: 2 +transformer_size: 16 +transformer_encoder_size: 128 +num_heads: 8 +full_attention_mask: false +aggregate_mode: dummy_and_mean \ No newline at end of file diff --git a/Kinetix/configs/plr.yaml b/Kinetix/configs/plr.yaml new file mode 100644 index 0000000000000000000000000000000000000000..a63178e05f6e077dacbdbab5cf58a379078de9f9 --- /dev/null +++ b/Kinetix/configs/plr.yaml @@ -0,0 +1,17 @@ +defaults: + - env: entity + - learning: + - ppo-base + - ppo-ued + - misc: misc + - env_size: s + - eval: s + - eval_env_size: s + - ued: plr + - train_levels: random + - model: + - model-base + - model-transformer + - _self_ + +seed: 0 \ No newline at end of file diff --git a/Kinetix/configs/ppo.yaml b/Kinetix/configs/ppo.yaml new file mode 100644 index 0000000000000000000000000000000000000000..290bb3a2f31005e70b32b404452c35fcad20c620 --- /dev/null +++ b/Kinetix/configs/ppo.yaml @@ -0,0 +1,20 @@ +defaults: + - env: entity + - env_size: s + - learning: + - ppo-base + - ppo-rnn + - misc: misc + - eval: s + - eval_env_size: s + - train_levels: random + - model: + - model-base + - model-transformer + - _self_ + + +eval: + eval_freq: 40 + +seed: 0 \ No newline at end of file diff --git a/Kinetix/configs/sfl.yaml b/Kinetix/configs/sfl.yaml new file mode 100644 index 0000000000000000000000000000000000000000..ae75296a19789f7cbfca91584134bf237a88b84b --- /dev/null +++ b/Kinetix/configs/sfl.yaml @@ -0,0 +1,21 @@ +defaults: + - env: entity + - learning: + - ppo-base + - ppo-rnn + - misc: misc + - ued: sfl + - env_size: s + - eval: s + - eval_env_size: s + - train_levels: random + - model: + - model-base + - model-transformer + - _self_ + +eval: + eval_freq: 128 +learning: + num_steps: 256 +seed: 0 \ No newline at end of file diff --git a/Kinetix/configs/train_levels/l.yaml b/Kinetix/configs/train_levels/l.yaml new file mode 100644 index 0000000000000000000000000000000000000000..5650fcfec0daec1432289148c533edf7b0734200 --- /dev/null +++ b/Kinetix/configs/train_levels/l.yaml @@ -0,0 +1,44 @@ +train_level_mode: list +train_levels_list: + [ + "l/h0_angrybirds", + "l/h1_car_left", + "l/h2_car_ramp", + "l/h3_car_right", + "l/h4_cartpole", + "l/h5_flappy_bird", + "l/h6_lorry", + "l/h7_maze_1", + "l/h8_maze_2", + "l/h9_morph_direction", + "l/h10_morph_direction_2", + "l/h11_obstacle_avoidance", + "l/h12_platformer_1", + "l/h13_platformer_2", + "l/h14_simple_thruster", + "l/h15_swing_up", + "l/h16_thruster_goal", + "l/h17_unicycle", + "l/hard_beam_balance", + "l/hard_cartpole_thrust", + "l/hard_cartpole_wheels", + "l/hard_lunar_lander", + "l/hard_pinball", + "l/mjc_half_cheetah", + "l/mjc_half_cheetah_easy", + "l/mjc_hopper", + "l/mjc_hopper_easy", + "l/mjc_swimmer", + "l/mjc_walker", + "l/mjc_walker_easy", + "l/grasp_hard", + "l/grasp_easy", + "l/car_launch", + "l/car_swing_around", + "l/chain_lander", + "l/chain_thrust", + "l/gears", + "l/lever_puzzle", + "l/pr", + "l/rail", + ] \ No newline at end of file diff --git a/Kinetix/configs/train_levels/m.yaml b/Kinetix/configs/train_levels/m.yaml new file mode 100644 index 0000000000000000000000000000000000000000..41e1a6410507563e385d621978e4435cbd3bbbdc --- /dev/null +++ b/Kinetix/configs/train_levels/m.yaml @@ -0,0 +1,28 @@ +train_level_mode: list +train_levels_list: + [ + "m/h0_unicycle", + "m/h1_car_left", + "m/h2_car_right", + "m/h3_car_thrust", + "m/h4_thrust_the_needle", + "m/h5_angry_birds", + "m/h6_thrust_over", + "m/h7_car_flip", + "m/h8_weird_vehicle", + "m/h9_spin_the_right_way", + "m/h10_thrust_right_easy", + "m/h11_thrust_left_easy", + "m/h12_thrustfall_left", + "m/h13_thrustfall_right", + "m/h14_thrustblock", + "m/h15_thrustshoot", + "m/h16_thrustcontrol_right", + "m/h17_thrustcontrol_left", + "m/h18_thrust_right_very_easy", + "m/h19_thrust_left_very_easy", + "m/arm_left", + "m/arm_right", + "m/arm_up", + "m/arm_hard", + ] \ No newline at end of file diff --git a/Kinetix/configs/train_levels/mujoco.yaml b/Kinetix/configs/train_levels/mujoco.yaml new file mode 100644 index 0000000000000000000000000000000000000000..d76936f0a93c0b57cc7ddd39b921b58daeaebc0b --- /dev/null +++ b/Kinetix/configs/train_levels/mujoco.yaml @@ -0,0 +1,11 @@ +train_level_mode: list +train_levels_list: + [ + "l/mjc_half_cheetah", + "l/mjc_half_cheetah_easy", + "l/mjc_hopper", + "l/mjc_hopper_easy", + "l/mjc_swimmer", + "l/mjc_walker", + "l/mjc_walker_easy", + ] \ No newline at end of file diff --git a/Kinetix/configs/train_levels/random.yaml b/Kinetix/configs/train_levels/random.yaml new file mode 100644 index 0000000000000000000000000000000000000000..81ca32ba2cf42f795402d16968ee6404a30975bf --- /dev/null +++ b/Kinetix/configs/train_levels/random.yaml @@ -0,0 +1,2 @@ +train_level_mode: random +train_level_distribution: distribution_v3 diff --git a/Kinetix/configs/train_levels/s.yaml b/Kinetix/configs/train_levels/s.yaml new file mode 100644 index 0000000000000000000000000000000000000000..4628d06ec8d074319e288ad2ebf1a76f77cc4521 --- /dev/null +++ b/Kinetix/configs/train_levels/s.yaml @@ -0,0 +1,14 @@ +train_level_mode: list +train_levels_list: + [ + "s/h0_weak_thrust", + "s/h7_unicycle_left", + "s/h3_point_the_thruster", + "s/h4_thrust_aim", + "s/h1_thrust_over_ball", + "s/h5_rotate_fall", + "s/h9_explode_then_thrust_over", + "s/h6_unicycle_right", + "s/h8_unicycle_balance", + "s/h2_one_wheel_car", + ] \ No newline at end of file diff --git a/Kinetix/configs/train_levels/train_all.yaml b/Kinetix/configs/train_levels/train_all.yaml new file mode 100644 index 0000000000000000000000000000000000000000..4f6cefde69da796163a3798a2e80c234f71c3fbd --- /dev/null +++ b/Kinetix/configs/train_levels/train_all.yaml @@ -0,0 +1,80 @@ +train_level_mode: list +train_levels_list: + [ + "s/h0_weak_thrust", + "s/h7_unicycle_left", + "s/h3_point_the_thruster", + "s/h4_thrust_aim", + "s/h1_thrust_over_ball", + "s/h5_rotate_fall", + "s/h9_explode_then_thrust_over", + "s/h6_unicycle_right", + "s/h8_unicycle_balance", + "s/h2_one_wheel_car", + + "m/h0_unicycle", + "m/h1_car_left", + "m/h2_car_right", + "m/h3_car_thrust", + "m/h4_thrust_the_needle", + "m/h5_angry_birds", + "m/h6_thrust_over", + "m/h7_car_flip", + "m/h8_weird_vehicle", + "m/h9_spin_the_right_way", + "m/h10_thrust_right_easy", + "m/h11_thrust_left_easy", + "m/h12_thrustfall_left", + "m/h13_thrustfall_right", + "m/h14_thrustblock", + "m/h15_thrustshoot", + "m/h16_thrustcontrol_right", + "m/h17_thrustcontrol_left", + "m/h18_thrust_right_very_easy", + "m/h19_thrust_left_very_easy", + "m/arm_left", + "m/arm_right", + "m/arm_up", + "m/arm_hard", + + "l/h0_angrybirds", + "l/h1_car_left", + "l/h2_car_ramp", + "l/h3_car_right", + "l/h4_cartpole", + "l/h5_flappy_bird", + "l/h6_lorry", + "l/h7_maze_1", + "l/h8_maze_2", + "l/h9_morph_direction", + "l/h10_morph_direction_2", + "l/h11_obstacle_avoidance", + "l/h12_platformer_1", + "l/h13_platformer_2", + "l/h14_simple_thruster", + "l/h15_swing_up", + "l/h16_thruster_goal", + "l/h17_unicycle", + "l/hard_beam_balance", + "l/hard_cartpole_thrust", + "l/hard_cartpole_wheels", + "l/hard_lunar_lander", + "l/hard_pinball", + "l/grasp_hard", + "l/grasp_easy", + "l/mjc_half_cheetah", + "l/mjc_half_cheetah_easy", + "l/mjc_hopper", + "l/mjc_hopper_easy", + "l/mjc_swimmer", + "l/mjc_walker", + "l/mjc_walker_easy", + "l/car_launch", + "l/car_swing_around", + "l/chain_lander", + "l/chain_thrust", + "l/gears", + "l/lever_puzzle", + "l/pr", + "l/rail", + ] \ No newline at end of file diff --git a/Kinetix/configs/ued/accel.yaml b/Kinetix/configs/ued/accel.yaml new file mode 100644 index 0000000000000000000000000000000000000000..f5d9085949105691bf6d2f6511632951c3552713 --- /dev/null +++ b/Kinetix/configs/ued/accel.yaml @@ -0,0 +1,16 @@ +use_accel: true +exploratory_grad_updates: true +num_edits: 5 +score_function: MaxMC +level_buffer_capacity: 4000 +replay_prob: 0.5 +staleness_coeff: 0.3 +temperature: 1.0 +topk_k: 8 +minimum_fill_ratio: 0.5 +prioritization: rank +buffer_duplicate_check: false +buffer_train: false +mode: train +checkpoint_directory: checkpoints/physicsenv/ued +max_number_of_checkpoints: 5 \ No newline at end of file diff --git a/Kinetix/configs/ued/plr.yaml b/Kinetix/configs/ued/plr.yaml new file mode 100644 index 0000000000000000000000000000000000000000..681c169731af125fa782f83b0e37547349c3eb5d --- /dev/null +++ b/Kinetix/configs/ued/plr.yaml @@ -0,0 +1,17 @@ +use_accel: false +exploratory_grad_updates: true +num_edits: 2 +score_function: MaxMC +level_buffer_capacity: 4000 +replay_prob: 0.5 +staleness_coeff: 0.3 +temperature: 1.0 +topk_k: 8 +minimum_fill_ratio: 0.5 +prioritization: rank +buffer_duplicate_check: false +buffer_train: false +mode: train +checkpoint_directory: checkpoints/physicsenv/ued +max_number_of_checkpoints: 5 +accel_start_from_empty: True \ No newline at end of file diff --git a/Kinetix/configs/ued/sfl.yaml b/Kinetix/configs/ued/sfl.yaml new file mode 100644 index 0000000000000000000000000000000000000000..ecdfa6933c72ec2ce812cd4dc42af900a2481fb1 --- /dev/null +++ b/Kinetix/configs/ued/sfl.yaml @@ -0,0 +1,9 @@ +"sampled_envs_ratio": 0.5 +"batch_size": 4096 +"num_batches": 3 +"rollout_steps": 512 +"num_to_save": 1024 + +log_learnability_before_after: false +put_eval_levels_in_buffer: false +save_learnability_buffer_pickle: false \ No newline at end of file diff --git a/Kinetix/docs/README.md b/Kinetix/docs/README.md new file mode 100644 index 0000000000000000000000000000000000000000..cacde3736a604a631eb30739ace86eeca1ac09b0 --- /dev/null +++ b/Kinetix/docs/README.md @@ -0,0 +1,83 @@ +# Documentation +This is intended to provide some more details about how Kinetix works, including more in-depth examples. If you are interested in the configuration options, see [here](./configs.md). + +- [Documentation](#documentation) + - [Different Versions of Kinetix Environments](#different-versions-of-kinetix-environments) + - [Action Spaces](#action-spaces) + - [Observation Spaces](#observation-spaces) + - [Resetting Functionality](#resetting-functionality) + - [Using Kinetix to easily design your own JAX Environments](#using-kinetix-to-easily-design-your-own-jax-environments) + - [Step 1 - Design an Environment](#step-1---design-an-environment) + - [Step 2 - Export It](#step-2---export-it) + - [Step 3 - Import It](#step-3---import-it) + - [Step 4 - Train](#step-4---train) + + +## Different Versions of Kinetix Environments +We provide several different variations on the standard Kinetix environment, where the primary difference is the action and observation spaces. + +Each of the environments has a different name, of the following form: `Kinetix---v1`, and can be made using the `make_kinetix_env_from_name` helper function. +### Action Spaces +For all action spaces, the agent can control joints and thrusters. Joints have a property `motor_binding`, which is a way to tie different joints to the same action. Two joints that have the same binding will always perform the same action, likewise for thrusters. + +We have three observation spaces, discrete, continuous and multi-discrete (which is the default). +- **Discrete** has `2 * num_motor_bindings + num_thruster_bindings + 1` options, one of which can be active at any time. There are two options for every joint, i.e., backward and forward at full power. There is one option for each thruster, to activate it at full power. The final option is a no-op, meaning that no torque or force is applied to joints/thrusters. +- **Continuous** has shape `num_motor_bindings + num_thruster_bindings`, where each motor element can take a value between -1 and 1, and thruster elements can take values between 0 and 1. +- **Multi-Discrete**: This is a discrete action space, but allows multiple joints and thrusters to be active at any one time. The agent must output a flat vector of size `3 * num_motor_bindings + 2 * num_thruster_bindings`. For joints, each group of three represents a categorical distribution of `[0, -1, +1]` and for thrusters it represents `[0, +1]`. + +### Observation Spaces +We provide three primary observation spaces, Symbolic-Flat (called just symbolic), Symbolic-Entity (called entity, which is also the default) and Pixels. +- **Symbolic-Flat** returns a large vector, which is the flattened representation of all shapes and their properties. +- **Symbolic-Entity** also returns a vector representation of all entities, but does not flatten it, instead returning it in a form that can be used with permutation-invariant network architectures, such as transformers. +- **Pixels** returns an image representation of the scene. This is partially observable, as features such as the restitution and density of shapes is not shown. + + +Each observation space has its own pros and cons. **Symbolic-Flat** is the fastest by far, but has two clear downsides. First, it is restricted to a single environment size, e.g. a model trained on `small` cannot be run on `medium` levels. Second, due to the large number of symmetries (e.g. any permutation of the same shapes would represent the same scene but would look very different in this observation space), this generalises worse than *entity*. + +**Symbolic-Entity** is faster than pixels, but slower than Symbolic-Flat. However, it can be applied to any number of shapes, and is natively permutation invariant. For these reasons we chose it as the default option. + +Finally, **Pixels** runs the slowest, and also requires more memory, which means that we cannot run as many parallel environments. However, pixels is potentially the most general format, and could theoretically allow transfer to other domains and simulators. + + +## Resetting Functionality +We have two primary resetting functions that control the environment's behaviour when an episode ends. The first of these is to train on a known, predefined set of levels, and resetting samples a new level from this set. In the extreme case, this also allows training only on a single level in the standard RL manner. The other main way of resetting is to sample a *random* level from some distribution, meaning that it is exceedingly unlikely to sample the same level twice. + +## Using Kinetix to easily design your own JAX Environments +Since Kinetix has a general physics engine, you can design your own environments and train RL agents on them very fast! This section in the docs describes this pipeline. +### Step 1 - Design an Environment +You can go to our [online editor](https://kinetix-env.github.io/gallery.html?editor=true). You can also have a look at the [gallery](https://kinetix-env.github.io/gallery.html) if you need some inspiration. + +The following two images show the main editor page, and then the level I designed, where you have to spin the ball the right way. While designing the level, you can play it to test it out, seeing if it is possible and of the appropriate difficulty. + + +

+ + +

+ +### Step 2 - Export It +Once you are satisfied with your level, you can download it as a json file by using the button on the bottom left. Once this is downloaded, move it to `$KINETIX_ROOT/worlds/custom/my_custom_level.json`, where `$KINETIX_ROOT` is the root of the Kinetix repo. + + +### Step 3 - Import It +In python, you can import the level as follows, see `examples/example_premade_level_replay.py` for an example. +```python +from kinetix.util.saving import load_from_json_file +level, static_env_params, env_params = load_from_json_file("worlds/custom/my_custom_level.json") +``` + +### Step 4 - Train +You can use the above if you want to import the level and play around with it. If you want to train an RL agent on this level, you can do the following (see [here](https://github.com/FLAIROx/Kinetix?tab=readme-ov-file#training-on-a-single-hand-designed-level) from the main README). + +```commandline +python3 experiments/ppo.py env_size=custom \ + env_size.custom_path=custom/my_custom_level.json \ + train_levels=s \ + train_levels.train_levels_list='["custom/my_custom_level.json"]' \ + eval=eval_auto +``` + +And the agent will start training, with videos on this on [wandb](https://wandb.ai). +

+ +

\ No newline at end of file diff --git a/Kinetix/docs/configs.md b/Kinetix/docs/configs.md new file mode 100644 index 0000000000000000000000000000000000000000..261e3340b4471607441ed9f9ed22a1146882c23f --- /dev/null +++ b/Kinetix/docs/configs.md @@ -0,0 +1,179 @@ +# Configuration + +- [Configuration](#configuration) + - [Configuration Headings](#configuration-headings) + - [Env](#env) + - [Env Size](#env-size) + - [Learning](#learning) + - [Misc](#misc) + - [Eval](#eval) + - [Eval Env Size](#eval-env-size) + - [Train Levels](#train-levels) + - [Model](#model) + - [UED](#ued) + + +We use [hydra](hydra.cc) for all of our configurations, and we use [hierarchical configuration](https://hydra.cc/docs/tutorials/structured_config/schema/) to organise everything better. + +In particular, we have the following configuration headings, with the base `ppo` config looking like: +```yaml +defaults: + - env: entity + - env_size: s + - learning: + - ppo-base + - ppo-rnn + - misc: misc + - eval: s + - eval_env_size: s + - train_levels: random + - model: + - model-base + - model-transformer + - _self_ +seed: 0 +``` + +## Configuration Headings +### Env +This controls the environment to be used. +#### Preset Options +We provide two options in `configs/env`, namely `entity` and `symbolic`; each of these can be used by running `python3 experiments/ppo.py env=symbolic` or `python3 experiments/ppo.py env=entity`. If you wish to customise the options further, you can add any of the following subkeys (e.g. by running `python3 experiments/ppo.py env=symbolic env.dense_reward_scale=0.0`): +#### Individual Subkeys +- `env.env_name`: The name of the environment, with controls the observation and action space. +- `env.dense_reward_scale`: How large the dense reward scale is, set this to zero to disable dense rewards. +- `env.frame_skip`: The number of frames to skip, setting this to 2 (the default) seems to perform better. +### Env Size +This controls the maximum number of shapes present in the simulation. This has two important tradeoffs, namely speed and representational power: Small environments run much faster but some complex environments require a large number of shapes. See `configs/env_size` +#### Preset Options +- `s`: The `small` preset +- `m`: `Medium` preset +- `l`: `Large` preset +- `custom`: Allows the use of a custom environment size loaded from a json file (see [here](#train-levels) for more). +#### Individual Subkeys +- `num_polygons`: How many polygons +- `num_circles`: How many circles +- `num_joints`: How many joints +- `num_thrusters`: How many thrusters +- `env_size_name`: "s", "m" or "l" +- `num_motor_bindings`: How many different joint bindings are there, meaning how many different actions are there associated with joints. All joints with the same binding will have the same action applied to them. +- `num_thruster_bindings`: How many different thruster bindings are there +- `env_size_type`: "predefined" or "custom" +- `custom_path`: **Only for env_size_type=custom**, controls the json file to load the custom environment size from. +### Learning +This controls the agent's learning, see `configs/learning` +#### Preset Options +- `ppo-base`: This has all of the base PPO parameters, and is used by all methods +- `ppo-rnn`: This has the PureJaxRL settings for some of PPO's hyperparameters (mainly `num_steps` is different) +- `ppo-sfl`: This has the SFL-specific value of `num_steps` +- `ppo-ued`: This has the JAXUED-specific `num_steps` and `outer_rollout_steps` +#### Individual Subkeys +- `lr`: Learning Rate +- `anneal_lr`: Whether to anneal LR +- `warmup_lr`: Whether to warmup LR +- `peak_lr`: If warming up, the peak +- `initial_lr`: If warming up, the initial LR +- `warmup_frac`: If warming up, the warmup fraction of training time +- `max_grad_norm`: Maximum grad norm +- `total_timesteps`: How many total environment interactions must be run +- `num_train_envs`: Number of parallel environments to run simultaneously +- `num_minibatches`: Minibatches for PPO learning +- `gamma`: Discount factor +- `update_epochs`: PPO update epochs +- `clip_eps`: PPO clipping epsilon +- `gae_lambda`: PPO Lambda for GAE +- `ent_coef`: Entropy loss coefficient +- `vf_coef`: Value function loss coefficient +- `permute_state_during_training`: If true, the state is permuted on every reset. +- `filter_levels`: If true, and we are training on random levels, this filters out levels that can be solved by a no-op +- `level_filter_n_steps`: How many steps to allocate to the no-op policy for filtering +- `level_filter_sample_ratio`: How many more levels to sample than required (ideally `level_filter_sample_ratio` is more than the fraction that will be filtered out). +- `num_steps`: PPO rollout length +- `outer_rollout_steps`: How many learning steps to do for e.g. PLR for each rollout (see the [Craftax paper](https://arxiv.org/abs/2402.16801) for a more in-depth explanation). +### Misc +There are a plethora of miscellaneous options that are grouped under the `misc` category. There is only one preset option, `configs/misc/misc.yaml`. +#### Individual Subkeys +- `group`: Wandb group ("auto" usually works well) +- `group_auto_prefix`: If using group=auto, this is a user-defined prefix +- `save_path`: Where to save checkpoints to +- `use_wandb`: Should wandb be logged to +- `save_policy`: Should we save the policy +- `wandb_project`: Wandb project +- `wandb_entity`: Wandb entity, leave as `null` to use your default one +- `wandb_mode` : Wandb mode +- `video_frequency`: How often to log videos (they are quite large) +- `load_from_checkpoint`: WWandb artifact path to load from +- `load_only_params`: Whether to load just the network parameters or entire train state. +- `checkpoint_save_freq`: How often to log checkpoits +- `checkpoint_human_numbers`: Should the checkpoints have human-readable timestep numbers +- `load_legacy_checkpoint`: Do not use +- `load_train_levels_legacy`: Do not use +- `economical_saving`: If true, only saves a few important checkpoints for space conservation purposes. +### Eval +This option (see `configs/eval`) controls how evaluation works, and what levels are used. +#### Preset Options +- `s`: Eval on the `s` hand-designed levels located in `worlds/s` +- `m`: Eval on the `m` hand-designed levels located in `worlds/m` +- `l`: Eval on the `l` hand-designed levels located in `worlds/l` +- `eval_all`: Eval on all of the hand-designed eval levels +- `eval_auto`: If `train_levels` is not random, evaluate on the training levels. +- `mujoco`: Eval on the recreations of the mujoco tasks. +- `eval_general`: General option if you are planning on overwriting most options. +#### Individual Subkeys +- `eval_levels`: List of eval levels or the string "auto" +- `eval_num_attempts`: How many times to eval on the same level +- `eval_freq`: How often to evaluate +- `EVAL_ON_SAMPLED`: If true, in `plr.py` and `sfl.py`, evaluates on a fixed set of randomly-generated levels + +### Eval Env Size +This controls the size of the evaluation environment. This is crucial to match up with the size of the evaluation levels. +#### Preset Options +- `s`: Same as the `env_size` option. +- `m`: Same as the `env_size` option. +- `l`: Same as the `env_size` option. +### Train Levels +Which levels to train on. +#### Preset Options +- `s`: All of the `s` holdout levels +- `m`: All of the `m` holdout levels +- `l`: All of the `l` holdout levels +- `train_all`: All of the levels from all 3 holdout sets +- `mujoco`: All of the mujoco recreation levels. +- `random`: Train on random levels +#### Individual Subkeys +- `train_level_mode`: "random" or "list" +- `train_level_distribution`: if train_level_mode=random, this controls which distribution to use. By default `distribution_v3` +- `train_levels_list`: This is a list of levels to train on. +### Model +This controls the model architecture and options associated with that. +#### Preset Options +We use both of the following: +- `model-base` +- `model-entity` +#### Individual Subkeys +`fc_layer_depth`: How many layers in the FC model +`fc_layer_width`: How wide is each FC layer +`activation`: NN activation +`recurrent_model`: Whether or not to use recurrence +The following are just relevant when using `env=entity` +`transformer_depth`: How many transformer layers to use +`transformer_size`: How large are the KQV vectors +`transformer_encoder_size`: How large are the initial embeddings +`num_heads`: How many heads, must be a multiple of 4 and divide `transformer_size` evenly. +`full_attention_mask`: If true, all heads use the full attention mask +`aggregate_mode`: `dummy_and_mean` works well. +### UED +Options pertaining to UED (i.e., when using the scripts `plr.py` or `sfl.py`) +#### Preset Options +- `sfl` +- `plr` +- `accel` +#### Individual Subkeys +See the individual files for the configuration options used. +For SFL, we have: + +- `sampled_envs_ratio`: How many environments are from the SFL buffer and how many are randomly generated +- `batch_size`: How many levels to evaluate learnability on per batch +- `num_batches`: How many batches to run when choosing the most learnable levels +- `rollout_steps`: How many steps to rollout for when doing the learnability calculation. +- `num_to_save`: How many levels to save in the learnability buffer \ No newline at end of file diff --git a/Kinetix/examples/example_premade_level_replay.py b/Kinetix/examples/example_premade_level_replay.py new file mode 100644 index 0000000000000000000000000000000000000000..9791a0f232bf2e1fdcc0928d9c93093c6949acf8 --- /dev/null +++ b/Kinetix/examples/example_premade_level_replay.py @@ -0,0 +1,46 @@ +import jax +import jax.numpy as jnp +import jax.random +from jax2d.engine import PhysicsEngine +from matplotlib import pyplot as plt + +from kinetix.environment.env import make_kinetix_env_from_args +from kinetix.environment.env_state import StaticEnvParams, EnvParams +from kinetix.environment.ued.distributions import sample_kinetix_level +from kinetix.environment.ued.ued_state import UEDParams +from kinetix.render.renderer_pixels import make_render_pixels +from kinetix.util.saving import load_from_json_file + + +def main(): + # Load a premade level + level, static_env_params, env_params = load_from_json_file("worlds/l/grasp_easy.json") + + # Create the environment + env = make_kinetix_env_from_args( + obs_type="pixels", action_type="continuous", reset_type="replay", static_env_params=static_env_params + ) + + # Reset the environment state to this level + rng = jax.random.PRNGKey(0) + rng, _rng = jax.random.split(rng) + obs, env_state = env.reset_to_level(_rng, level, env_params) + + # Take a step in the environment + rng, _rng = jax.random.split(rng) + action = env.action_space(env_params).sample(_rng) + rng, _rng = jax.random.split(rng) + obs, env_state, reward, done, info = env.step(_rng, env_state, action, env_params) + + # Render environment + renderer = make_render_pixels(env_params, static_env_params) + + # There are a lot of wrappers + pixels = renderer(env_state.env_state.env_state.env_state) + + plt.imshow(pixels.astype(jnp.uint8).transpose(1, 0, 2)[::-1]) + plt.show() + + +if __name__ == "__main__": + main() diff --git a/Kinetix/examples/example_random_level_replay.py b/Kinetix/examples/example_random_level_replay.py new file mode 100644 index 0000000000000000000000000000000000000000..1e2613b367f232a54ccfb9b1c5e1002a91094cc2 --- /dev/null +++ b/Kinetix/examples/example_random_level_replay.py @@ -0,0 +1,51 @@ +import jax +import jax.numpy as jnp +import jax.random +from jax2d.engine import PhysicsEngine +from matplotlib import pyplot as plt + +from kinetix.environment.env import make_kinetix_env_from_args +from kinetix.environment.env_state import StaticEnvParams, EnvParams +from kinetix.environment.ued.distributions import sample_kinetix_level +from kinetix.environment.ued.ued_state import UEDParams +from kinetix.render.renderer_pixels import make_render_pixels + + +def main(): + # Use default parameters + env_params = EnvParams() + static_env_params = StaticEnvParams() + ued_params = UEDParams() + + # Create the environment + env = make_kinetix_env_from_args( + obs_type="pixels", action_type="continuous", reset_type="replay", static_env_params=static_env_params + ) + + # Sample a random level + rng = jax.random.PRNGKey(0) + rng, _rng = jax.random.split(rng) + level = sample_kinetix_level(_rng, env.physics_engine, env_params, static_env_params, ued_params) + + # Reset the environment state to this level + rng, _rng = jax.random.split(rng) + obs, env_state = env.reset_to_level(_rng, level, env_params) + + # Take a step in the environment + rng, _rng = jax.random.split(rng) + action = env.action_space(env_params).sample(_rng) + rng, _rng = jax.random.split(rng) + obs, env_state, reward, done, info = env.step(_rng, env_state, action, env_params) + + # Render environment + renderer = make_render_pixels(env_params, static_env_params) + + # There are a lot of wrappers + pixels = renderer(env_state.env_state.env_state.env_state) + + plt.imshow(pixels.astype(jnp.uint8).transpose(1, 0, 2)[::-1]) + plt.show() + + +if __name__ == "__main__": + main() diff --git a/Kinetix/experiments/plr.py b/Kinetix/experiments/plr.py new file mode 100644 index 0000000000000000000000000000000000000000..28778a86d4648875058a5d49d72b6b2a5faabcb5 --- /dev/null +++ b/Kinetix/experiments/plr.py @@ -0,0 +1,1143 @@ +from functools import partial +import time +from enum import IntEnum +from typing import Tuple + +import chex +import hydra +import jax +import jax.numpy as jnp +import numpy as np +from omegaconf import OmegaConf +import optax +from flax import core, struct +from flax.training.train_state import TrainState as BaseTrainState + +import wandb +from kinetix.environment.ued.distributions import ( + create_random_starting_distribution, +) +from kinetix.environment.ued.ued import ( + make_mutate_env, + make_reset_train_function_with_mutations, + make_vmapped_filtered_level_sampler, +) +from kinetix.environment.ued.ued import ( + make_mutate_env, + make_reset_train_function_with_list_of_levels, + make_reset_train_function_with_mutations, +) +from kinetix.util.config import ( + generate_ued_params_from_config, + get_video_frequency, + init_wandb, + normalise_config, + save_data_to_local_file, + generate_params_from_config, + get_eval_level_groups, +) +from jaxued.environments.underspecified_env import EnvState +from jaxued.level_sampler import LevelSampler +from jaxued.utils import compute_max_returns, max_mc, positive_value_loss +from flax.serialization import to_state_dict + +import sys + +sys.path.append("experiments") +from kinetix.environment.env import make_kinetix_env_from_name +from kinetix.environment.env_state import StaticEnvParams +from kinetix.environment.wrappers import ( + UnderspecifiedToGymnaxWrapper, + LogWrapper, + DenseRewardWrapper, + AutoReplayWrapper, +) +from kinetix.models import make_network_from_config +from kinetix.render.renderer_pixels import make_render_pixels +from kinetix.models.actor_critic import ScannedRNN +from kinetix.util.learning import ( + general_eval, + get_eval_levels, + no_op_and_random_rollout, + sample_trajectories_and_learn, +) +from kinetix.util.saving import ( + load_train_state_from_wandb_artifact_path, + save_model_to_wandb, +) + + +class UpdateState(IntEnum): + DR = 0 + REPLAY = 1 + MUTATE = 2 + + +def get_level_complexity_metrics(all_levels: EnvState, static_env_params: StaticEnvParams): + def get_for_single_level(level): + return { + "complexity/num_shapes": level.polygon.active[static_env_params.num_static_fixated_polys :].sum() + + level.circle.active.sum(), + "complexity/num_joints": level.joint.active.sum(), + "complexity/num_thrusters": level.thruster.active.sum(), + "complexity/num_rjoints": (level.joint.active * jnp.logical_not(level.joint.is_fixed_joint)).sum(), + "complexity/num_fjoints": (level.joint.active * (level.joint.is_fixed_joint)).sum(), + "complexity/has_ball": ((level.polygon_shape_roles == 1) * level.polygon.active).sum() + + ((level.circle_shape_roles == 1) * level.circle.active).sum(), + "complexity/has_goal": ((level.polygon_shape_roles == 2) * level.polygon.active).sum() + + ((level.circle_shape_roles == 2) * level.circle.active).sum(), + } + + return jax.tree.map(lambda x: x.mean(), jax.vmap(get_for_single_level)(all_levels)) + + +def get_ued_score_metrics(all_ued_scores): + (mc, pvl, learn) = all_ued_scores + scores = {} + for score, name in zip([mc, pvl, learn], ["MaxMC", "PVL", "Learnability"]): + scores[f"ued_scores/{name}/Mean"] = score.mean() + scores[f"ued_scores_additional/{name}/Max"] = score.max() + scores[f"ued_scores_additional/{name}/Min"] = score.min() + + return scores + + +class TrainState(BaseTrainState): + sampler: core.FrozenDict[str, chex.ArrayTree] = struct.field(pytree_node=True) + update_state: UpdateState = struct.field(pytree_node=True) + # === Below is used for logging === + num_dr_updates: int + num_replay_updates: int + num_mutation_updates: int + + dr_last_level_batch_scores: chex.ArrayTree = struct.field(pytree_node=True) + replay_last_level_batch_scores: chex.ArrayTree = struct.field(pytree_node=True) + mutation_last_level_batch_scores: chex.ArrayTree = struct.field(pytree_node=True) + + dr_last_level_batch: chex.ArrayTree = struct.field(pytree_node=True) + replay_last_level_batch: chex.ArrayTree = struct.field(pytree_node=True) + mutation_last_level_batch: chex.ArrayTree = struct.field(pytree_node=True) + + dr_last_rollout_batch: chex.ArrayTree = struct.field(pytree_node=True) + replay_last_rollout_batch: chex.ArrayTree = struct.field(pytree_node=True) + mutation_last_rollout_batch: chex.ArrayTree = struct.field(pytree_node=True) + + +# region PPO helper functions + +# endregion + + +def train_state_to_log_dict(train_state: TrainState, level_sampler: LevelSampler) -> dict: + """To prevent the entire (large) train_state to be copied to the CPU when doing logging, this function returns all of the important information in a dictionary format. + + Anything in the `log` key will be logged to wandb. + + Args: + train_state (TrainState): + level_sampler (LevelSampler): + + Returns: + dict: + """ + sampler = train_state.sampler + idx = jnp.arange(level_sampler.capacity) < sampler["size"] + s = jnp.maximum(idx.sum(), 1) + return { + "log": { + "level_sampler/size": sampler["size"], + "level_sampler/episode_count": sampler["episode_count"], + "level_sampler/max_score": sampler["scores"].max(), + "level_sampler/weighted_score": (sampler["scores"] * level_sampler.level_weights(sampler)).sum(), + "level_sampler/mean_score": (sampler["scores"] * idx).sum() / s, + }, + "info": { + "num_dr_updates": train_state.num_dr_updates, + "num_replay_updates": train_state.num_replay_updates, + "num_mutation_updates": train_state.num_mutation_updates, + }, + } + + +def compute_learnability(config, done, reward, info, num_envs): + num_agents = 1 + BATCH_ACTORS = num_envs * num_agents + + rollout_length = config["num_steps"] * config["outer_rollout_steps"] + + @partial(jax.vmap, in_axes=(None, 1, 1, 1)) + @partial(jax.jit, static_argnums=(0,)) + def _calc_outcomes_by_agent(max_steps: int, dones, returns, info): + idxs = jnp.arange(max_steps) + + @partial(jax.vmap, in_axes=(0, 0)) + def __ep_outcomes(start_idx, end_idx): + mask = (idxs > start_idx) & (idxs <= end_idx) & (end_idx != max_steps) + r = jnp.sum(returns * mask) + goal_r = info["GoalR"] + success = jnp.sum(goal_r * mask) + collision = 0 + timeo = 0 + l = end_idx - start_idx + return r, success, collision, timeo, l + + done_idxs = jnp.argwhere(dones, size=50, fill_value=max_steps).squeeze() + mask_done = jnp.where(done_idxs == max_steps, 0, 1) + ep_return, success, collision, timeo, length = __ep_outcomes( + jnp.concatenate([jnp.array([-1]), done_idxs[:-1]]), done_idxs + ) + + return { + "ep_return": ep_return.mean(where=mask_done), + "num_episodes": mask_done.sum(), + "num_success": success.sum(where=mask_done), + "success_rate": success.mean(where=mask_done), + "collision_rate": collision.mean(where=mask_done), + "timeout_rate": timeo.mean(where=mask_done), + "ep_len": length.mean(where=mask_done), + } + + done_by_env = done.reshape((-1, num_agents, num_envs)) + reward_by_env = reward.reshape((-1, num_agents, num_envs)) + o = _calc_outcomes_by_agent(rollout_length, done, reward, info) + success_by_env = o["success_rate"].reshape((num_agents, num_envs)) + learnability_by_env = (success_by_env * (1 - success_by_env)).sum(axis=0) + + return ( + learnability_by_env, + o["num_episodes"].reshape(num_agents, num_envs).sum(axis=0), + o["num_success"].reshape(num_agents, num_envs).T, + ) # so agents is at the end. + + +def compute_score( + config: dict, dones: chex.Array, values: chex.Array, max_returns: chex.Array, reward, info, advantages: chex.Array +) -> chex.Array: + # Computes the score for each level + if config["score_function"] == "MaxMC": + return max_mc(dones, values, max_returns) + elif config["score_function"] == "pvl": + return positive_value_loss(dones, advantages) + elif config["score_function"] == "learnability": + learnability, num_episodes, num_success = compute_learnability( + config, dones, reward, info, config["num_train_envs"] + ) + return learnability + else: + raise ValueError(f"Unknown score function: {config['score_function']}") + + +def compute_all_scores( + config: dict, + dones: chex.Array, + values: chex.Array, + max_returns: chex.Array, + reward, + info, + advantages: chex.Array, + return_success_rate=False, +): + mc = max_mc(dones, values, max_returns) + pvl = positive_value_loss(dones, advantages) + learnability, num_episodes, num_success = compute_learnability( + config, dones, reward, info, config["num_train_envs"] + ) + if config["score_function"] == "MaxMC": + main_score = mc + elif config["score_function"] == "pvl": + main_score = pvl + elif config["score_function"] == "learnability": + main_score = learnability + else: + raise ValueError(f"Unknown score function: {config['score_function']}") + if return_success_rate: + success_rate = num_success.squeeze(1) / jnp.maximum(num_episodes, 1) + return main_score, (mc, pvl, learnability, success_rate) + return main_score, (mc, pvl, learnability) + + +@hydra.main(version_base=None, config_path="../configs", config_name="plr") +def main(config=None): + my_name = "PLR" + config = OmegaConf.to_container(config) + if config["ued"]["replay_prob"] == 0.0: + my_name = "DR" + elif config["ued"]["use_accel"]: + my_name = "ACCEL" + + time_start = time.time() + config = normalise_config(config, my_name) + env_params, static_env_params = generate_params_from_config(config) + config["env_params"] = to_state_dict(env_params) + config["static_env_params"] = to_state_dict(static_env_params) + + run = init_wandb(config, my_name) + config = wandb.config + time_prev = time.time() + + def log_eval(stats, train_state_info): + nonlocal time_prev + print(f"Logging update: {stats['update_count']}") + total_loss = jnp.mean(stats["losses"][0]) + if jnp.isnan(total_loss): + print("NaN loss, skipping logging") + raise ValueError("NaN loss") + + # generic stats + env_steps = int( + int(stats["update_count"]) * config["num_train_envs"] * config["num_steps"] * config["outer_rollout_steps"] + ) + env_steps_delta = ( + config["eval_freq"] * config["num_train_envs"] * config["num_steps"] * config["outer_rollout_steps"] + ) + time_now = time.time() + log_dict = { + "timing/num_updates": stats["update_count"], + "timing/num_env_steps": env_steps, + "timing/sps": env_steps_delta / (time_now - time_prev), + "timing/sps_agg": env_steps / (time_now - time_start), + "loss/total_loss": jnp.mean(stats["losses"][0]), + "loss/value_loss": jnp.mean(stats["losses"][1][0]), + "loss/policy_loss": jnp.mean(stats["losses"][1][1]), + "loss/entropy_loss": jnp.mean(stats["losses"][1][2]), + } + time_prev = time_now + + # evaluation performance + + returns = stats["eval_returns"] + log_dict.update({"eval/mean_eval_return": returns.mean()}) + log_dict.update({"eval/mean_eval_learnability": stats["eval_learn"].mean()}) + log_dict.update({"eval/mean_eval_solve_rate": stats["eval_solves"].mean()}) + log_dict.update({"eval/mean_eval_eplen": stats["eval_ep_lengths"].mean()}) + for i in range(config["num_eval_levels"]): + log_dict[f"eval_avg_return/{config['eval_levels'][i]}"] = returns[i] + log_dict[f"eval_avg_learnability/{config['eval_levels'][i]}"] = stats["eval_learn"][i] + log_dict[f"eval_avg_solve_rate/{config['eval_levels'][i]}"] = stats["eval_solves"][i] + log_dict[f"eval_avg_episode_length/{config['eval_levels'][i]}"] = stats["eval_ep_lengths"][i] + log_dict[f"eval_get_max_eplen/{config['eval_levels'][i]}"] = stats["eval_get_max_eplen"][i] + log_dict[f"episode_return_bigger_than_negative/{config['eval_levels'][i]}"] = stats[ + "episode_return_bigger_than_negative" + ][i] + + def _aggregate_per_size(values, name): + to_return = {} + for group_name, indices in eval_group_indices.items(): + to_return[f"{name}_{group_name}"] = values[indices].mean() + return to_return + + log_dict.update(_aggregate_per_size(returns, "eval_aggregate/return")) + log_dict.update(_aggregate_per_size(stats["eval_solves"], "eval_aggregate/solve_rate")) + + if config["EVAL_ON_SAMPLED"]: + log_dict.update({"eval/mean_eval_return_sampled": stats["eval_dr_returns"].mean()}) + log_dict.update({"eval/mean_eval_solve_rate_sampled": stats["eval_dr_solve_rates"].mean()}) + log_dict.update({"eval/mean_eval_eplen_sampled": stats["eval_dr_eplen"].mean()}) + + # level sampler + log_dict.update(train_state_info["log"]) + + # images + log_dict.update( + { + "images/highest_scoring_level": wandb.Image( + np.array(stats["highest_scoring_level"]), caption="Highest scoring level" + ) + } + ) + log_dict.update( + { + "images/highest_weighted_level": wandb.Image( + np.array(stats["highest_weighted_level"]), caption="Highest weighted level" + ) + } + ) + + for s in ["dr", "replay", "mutation"]: + if train_state_info["info"][f"num_{s}_updates"] > 0: + log_dict.update( + { + f"images/{s}_levels": [ + wandb.Image(np.array(image), caption=f"{score}") + for image, score in zip(stats[f"{s}_levels"], stats[f"{s}_scores"]) + ] + } + ) + if stats["log_videos"]: + # animations + rollout_ep = stats[f"{s}_ep_len"] + arr = np.array(stats[f"{s}_rollout"][:rollout_ep]) + log_dict.update( + { + f"media/{s}_eval": wandb.Video( + arr.astype(np.uint8), fps=15, caption=f"{s.capitalize()} (len {rollout_ep})" + ) + } + ) + # * 255 + + # DR, Replay and Mutate Returns + dr_inds = (stats["update_state"] == UpdateState.DR).nonzero()[0] + rep_inds = (stats["update_state"] == UpdateState.REPLAY).nonzero()[0] + mut_inds = (stats["update_state"] == UpdateState.MUTATE).nonzero()[0] + + for name, inds in [ + ("DR", dr_inds), + ("REPLAY", rep_inds), + ("MUTATION", mut_inds), + ]: + if len(inds) > 0: + log_dict.update( + { + f"{name}/episode_return": stats["episode_return"][inds].mean(), + f"{name}/mean_eplen": stats["returned_episode_lengths"][inds].mean(), + f"{name}/mean_success": stats["returned_episode_solved"][inds].mean(), + f"{name}/noop_return": stats["noop_returns"][inds].mean(), + f"{name}/noop_eplen": stats["noop_eplen"][inds].mean(), + f"{name}/noop_success": stats["noop_success"][inds].mean(), + f"{name}/random_return": stats["random_returns"][inds].mean(), + f"{name}/random_eplen": stats["random_eplen"][inds].mean(), + f"{name}/random_success": stats["random_success"][inds].mean(), + } + ) + for k in stats: + if "complexity/" in k: + k2 = "complexity/" + name + "_" + k.replace("complexity/", "") + log_dict.update({k2: stats[k][inds].mean()}) + if "ued_scores/" in k: + k2 = "ued_scores/" + name + "_" + k.replace("ued_scores/", "") + log_dict.update({k2: stats[k][inds].mean()}) + + # Eval rollout animations + if stats["log_videos"]: + for i in range((config["num_eval_levels"])): + frames, episode_length = stats["eval_animation"][0][:, i], stats["eval_animation"][1][i] + frames = np.array(frames[:episode_length]) + log_dict.update( + { + f"media/eval_video_{config['eval_levels'][i]}": wandb.Video( + frames.astype(np.uint8), fps=15, caption=f"Len ({episode_length})" + ) + } + ) + + wandb.log(log_dict) + + def get_all_metrics( + rng, + losses, + info, + init_env_state, + init_obs, + dones, + grads, + all_ued_scores, + new_levels, + ): + noop_returns, noop_len, noop_success, random_returns, random_lens, random_success = no_op_and_random_rollout( + env, + env_params, + rng, + init_obs, + init_env_state, + config["num_train_envs"], + config["num_steps"] * config["outer_rollout_steps"], + ) + metrics = ( + { + "losses": jax.tree_util.tree_map(lambda x: x.mean(), losses), + "returned_episode_lengths": (info["returned_episode_lengths"] * dones).sum() + / jnp.maximum(1, dones.sum()), + "max_episode_length": info["returned_episode_lengths"].max(), + "levels_played": init_env_state.env_state.env_state, + "episode_return": (info["returned_episode_returns"] * dones).sum() / jnp.maximum(1, dones.sum()), + "episode_return_v2": (info["returned_episode_returns"] * info["returned_episode"]).sum() + / jnp.maximum(1, info["returned_episode"].sum()), + "grad_norms": grads.mean(), + "noop_returns": noop_returns, + "noop_eplen": noop_len, + "noop_success": noop_success, + "random_returns": random_returns, + "random_eplen": random_lens, + "random_success": random_success, + "returned_episode_solved": (info["returned_episode_solved"] * dones).sum() + / jnp.maximum(1, dones.sum()), + } + | get_level_complexity_metrics(new_levels, static_env_params) + | get_ued_score_metrics(all_ued_scores) + ) + return metrics + + # Setup the environment. + def make_env(static_env_params): + env = make_kinetix_env_from_name(config["env_name"], static_env_params=static_env_params) + env = AutoReplayWrapper(env) + env = UnderspecifiedToGymnaxWrapper(env) + env = DenseRewardWrapper(env, dense_reward_scale=config["dense_reward_scale"]) + env = LogWrapper(env) + return env + + env = make_env(static_env_params) + + if config["train_level_mode"] == "list": + sample_random_level = make_reset_train_function_with_list_of_levels( + config, config["train_levels_list"], static_env_params, make_pcg_state=False, is_loading_train_levels=True + ) + elif config["train_level_mode"] == "random": + sample_random_level = make_reset_train_function_with_mutations( + env.physics_engine, env_params, static_env_params, config, make_pcg_state=False + ) + else: + raise ValueError(f"Unknown train_level_mode: {config['train_level_mode']}") + + if config["use_accel"] and config["accel_start_from_empty"]: + + def make_sample_random_level(): + def inner(rng): + def _inner_accel(rng): + return create_random_starting_distribution( + rng, env_params, static_env_params, ued_params, config["env_size_name"], controllable=True + ) + + def _inner_accel_not_controllable(rng): + return create_random_starting_distribution( + rng, env_params, static_env_params, ued_params, config["env_size_name"], controllable=False + ) + + rng, _rng = jax.random.split(rng) + return _inner_accel(_rng) + + return inner + + sample_random_level = make_sample_random_level() + + sample_random_levels = make_vmapped_filtered_level_sampler( + sample_random_level, env_params, static_env_params, config, make_pcg_state=False, env=env + ) + + def generate_world(): + raise NotImplementedError + pass + + def generate_eval_world(rng, env_params, static_env_params, level_idx): + # jax.random.split(jax.random.PRNGKey(101), num_levels), env_params, static_env_params, jnp.arange(num_levels) + + raise NotImplementedError + + _, eval_static_env_params = generate_params_from_config( + config["eval_env_size_true"] | {"frame_skip": config["frame_skip"]} + ) + eval_env = make_env(eval_static_env_params) + ued_params = generate_ued_params_from_config(config) + + mutate_world = make_mutate_env(static_env_params, env_params, ued_params) + + def make_render_fn(static_env_params): + render_fn_inner = make_render_pixels(env_params, static_env_params) + render_fn = lambda x: render_fn_inner(x).transpose(1, 0, 2)[::-1] + return render_fn + + render_fn = make_render_fn(static_env_params) + render_fn_eval = make_render_fn(eval_static_env_params) + if config["EVAL_ON_SAMPLED"]: + NUM_EVAL_DR_LEVELS = 200 + key_to_sample_dr_eval_set = jax.random.PRNGKey(100) + DR_EVAL_LEVELS = sample_random_levels(key_to_sample_dr_eval_set, NUM_EVAL_DR_LEVELS) + + # And the level sampler + level_sampler = LevelSampler( + capacity=config["level_buffer_capacity"], + replay_prob=config["replay_prob"], + staleness_coeff=config["staleness_coeff"], + minimum_fill_ratio=config["minimum_fill_ratio"], + prioritization=config["prioritization"], + prioritization_params={"temperature": config["temperature"], "k": config["topk_k"]}, + duplicate_check=config["buffer_duplicate_check"], + ) + + @jax.jit + def create_train_state(rng) -> TrainState: + # Creates the train state + def linear_schedule(count): + frac = 1.0 - (count // (config["num_minibatches"] * config["update_epochs"])) / ( + config["num_updates"] * config["outer_rollout_steps"] + ) + return config["lr"] * frac + + rng, _rng = jax.random.split(rng) + init_state = jax.tree.map(lambda x: x[0], sample_random_levels(_rng, 1)) + + rng, _rng = jax.random.split(rng) + obs, _ = env.reset_to_level(_rng, init_state, env_params) + ns = config["num_steps"] * config["outer_rollout_steps"] + obs = jax.tree.map( + lambda x: jnp.repeat(jnp.repeat(x[None, ...], config["num_train_envs"], axis=0)[None, ...], ns, axis=0), + obs, + ) + init_x = (obs, jnp.zeros((ns, config["num_train_envs"]), dtype=jnp.bool_)) + network = make_network_from_config(env, env_params, config) + rng, _rng = jax.random.split(rng) + network_params = network.init(_rng, ScannedRNN.initialize_carry(config["num_train_envs"]), init_x) + + if config["anneal_lr"]: + tx = optax.chain( + optax.clip_by_global_norm(config["max_grad_norm"]), + optax.adam(learning_rate=linear_schedule, eps=1e-5), + ) + else: + tx = optax.chain( + optax.clip_by_global_norm(config["max_grad_norm"]), + optax.adam(config["lr"], eps=1e-5), + ) + + pholder_level = jax.tree.map(lambda x: x[0], sample_random_levels(jax.random.PRNGKey(0), 1)) + sampler = level_sampler.initialize(pholder_level, {"max_return": -jnp.inf}) + pholder_level_batch = jax.tree_util.tree_map( + lambda x: jnp.array([x]).repeat(config["num_train_envs"], axis=0), pholder_level + ) + pholder_rollout_batch = ( + jax.tree.map( + lambda x: jnp.repeat( + jnp.expand_dims(x, 0), repeats=config["num_steps"] * config["outer_rollout_steps"], axis=0 + ), + init_state, + ), + init_x[1][:, 0], + ) + + pholder_level_batch_scores = jnp.zeros((config["num_train_envs"],), dtype=jnp.float32) + train_state = TrainState.create( + apply_fn=network.apply, + params=network_params, + tx=tx, + sampler=sampler, + update_state=0, + num_dr_updates=0, + num_replay_updates=0, + num_mutation_updates=0, + dr_last_level_batch_scores=pholder_level_batch_scores, + replay_last_level_batch_scores=pholder_level_batch_scores, + mutation_last_level_batch_scores=pholder_level_batch_scores, + dr_last_level_batch=pholder_level_batch, + replay_last_level_batch=pholder_level_batch, + mutation_last_level_batch=pholder_level_batch, + dr_last_rollout_batch=pholder_rollout_batch, + replay_last_rollout_batch=pholder_rollout_batch, + mutation_last_rollout_batch=pholder_rollout_batch, + ) + + if config["load_from_checkpoint"] != None: + print("LOADING from", config["load_from_checkpoint"], "with only params =", config["load_only_params"]) + train_state = load_train_state_from_wandb_artifact_path( + train_state, + config["load_from_checkpoint"], + load_only_params=config["load_only_params"], + legacy=config["load_legacy_checkpoint"], + ) + return train_state + + all_eval_levels = get_eval_levels(config["eval_levels"], eval_env.static_env_params) + eval_group_indices = get_eval_level_groups(config["eval_levels"]) + + @jax.jit + def train_step(carry: Tuple[chex.PRNGKey, TrainState], _): + """ + This is the main training loop. It basically calls either `on_new_levels`, `on_replay_levels`, or `on_mutate_levels` at every step. + """ + + def on_new_levels(rng: chex.PRNGKey, train_state: TrainState): + """ + Samples new (randomly-generated) levels and evaluates the policy on these. It also then adds the levels to the level buffer if they have high-enough scores. + The agent is updated on these trajectories iff `config["exploratory_grad_updates"]` is True. + """ + sampler = train_state.sampler + + # Reset + rng, rng_levels, rng_reset = jax.random.split(rng, 3) + new_levels = sample_random_levels(rng_levels, config["num_train_envs"]) + init_obs, init_env_state = jax.vmap(env.reset_to_level, in_axes=(0, 0, None))( + jax.random.split(rng_reset, config["num_train_envs"]), new_levels, env_params + ) + init_hstate = ScannedRNN.initialize_carry(config["num_train_envs"]) + # Rollout + ( + (rng, train_state, new_hstate, last_obs, last_env_state), + ( + obs, + actions, + rewards, + dones, + log_probs, + values, + info, + advantages, + targets, + losses, + grads, + rollout_states, + ), + ) = sample_trajectories_and_learn( + env, + env_params, + config, + rng, + train_state, + init_hstate, + init_obs, + init_env_state, + update_grad=config["exploratory_grad_updates"], + return_states=True, + ) + max_returns = compute_max_returns(dones, rewards) + scores, all_ued_scores = compute_all_scores(config, dones, values, max_returns, rewards, info, advantages) + sampler, _ = level_sampler.insert_batch(sampler, new_levels, scores, {"max_return": max_returns}) + rng, _rng = jax.random.split(rng) + metrics = { + "update_state": UpdateState.DR, + } | get_all_metrics(_rng, losses, info, init_env_state, init_obs, dones, grads, all_ued_scores, new_levels) + + train_state = train_state.replace( + sampler=sampler, + update_state=UpdateState.DR, + num_dr_updates=train_state.num_dr_updates + 1, + dr_last_level_batch=new_levels, + dr_last_level_batch_scores=scores, + dr_last_rollout_batch=jax.tree.map( + lambda x: x[:, 0], (rollout_states.env_state.env_state.env_state, dones) + ), + ) + return (rng, train_state), metrics + + def on_replay_levels(rng: chex.PRNGKey, train_state: TrainState): + """ + This samples levels from the level buffer, and updates the policy on them. + """ + sampler = train_state.sampler + + # Collect trajectories on replay levels + rng, rng_levels, rng_reset = jax.random.split(rng, 3) + sampler, (level_inds, levels) = level_sampler.sample_replay_levels( + sampler, rng_levels, config["num_train_envs"] + ) + init_obs, init_env_state = jax.vmap(env.reset_to_level, in_axes=(0, 0, None))( + jax.random.split(rng_reset, config["num_train_envs"]), levels, env_params + ) + init_hstate = ScannedRNN.initialize_carry(config["num_train_envs"]) + ( + (rng, train_state, new_hstate, last_obs, last_env_state), + ( + obs, + actions, + rewards, + dones, + log_probs, + values, + info, + advantages, + targets, + losses, + grads, + rollout_states, + ), + ) = sample_trajectories_and_learn( + env, + env_params, + config, + rng, + train_state, + init_hstate, + init_obs, + init_env_state, + update_grad=True, + return_states=True, + ) + + max_returns = jnp.maximum( + level_sampler.get_levels_extra(sampler, level_inds)["max_return"], compute_max_returns(dones, rewards) + ) + scores, all_ued_scores = compute_all_scores(config, dones, values, max_returns, rewards, info, advantages) + sampler = level_sampler.update_batch(sampler, level_inds, scores, {"max_return": max_returns}) + + rng, _rng = jax.random.split(rng) + metrics = { + "update_state": UpdateState.REPLAY, + } | get_all_metrics(_rng, losses, info, init_env_state, init_obs, dones, grads, all_ued_scores, levels) + train_state = train_state.replace( + sampler=sampler, + update_state=UpdateState.REPLAY, + num_replay_updates=train_state.num_replay_updates + 1, + replay_last_level_batch=levels, + replay_last_level_batch_scores=scores, + replay_last_rollout_batch=jax.tree.map( + lambda x: x[:, 0], (rollout_states.env_state.env_state.env_state, dones) + ), + ) + return (rng, train_state), metrics + + def on_mutate_levels(rng: chex.PRNGKey, train_state: TrainState): + """ + This mutates the previous batch of replay levels and potentially adds them to the level buffer. + This also updates the policy iff `config["exploratory_grad_updates"]` is True. + """ + + sampler = train_state.sampler + rng, rng_mutate, rng_reset = jax.random.split(rng, 3) + + # mutate + parent_levels = train_state.replay_last_level_batch + child_levels = jax.vmap(mutate_world, (0, 0, None))( + jax.random.split(rng_mutate, config["num_train_envs"]), parent_levels, config["num_edits"] + ) + init_obs, init_env_state = jax.vmap(env.reset_to_level, in_axes=(0, 0, None))( + jax.random.split(rng_reset, config["num_train_envs"]), child_levels, env_params + ) + + init_hstate = ScannedRNN.initialize_carry(config["num_train_envs"]) + # rollout + ( + (rng, train_state, new_hstate, last_obs, last_env_state), + ( + obs, + actions, + rewards, + dones, + log_probs, + values, + info, + advantages, + targets, + losses, + grads, + rollout_states, + ), + ) = sample_trajectories_and_learn( + env, + env_params, + config, + rng, + train_state, + init_hstate, + init_obs, + init_env_state, + update_grad=config["exploratory_grad_updates"], + return_states=True, + ) + + max_returns = compute_max_returns(dones, rewards) + scores, all_ued_scores = compute_all_scores(config, dones, values, max_returns, rewards, info, advantages) + sampler, _ = level_sampler.insert_batch(sampler, child_levels, scores, {"max_return": max_returns}) + + rng, _rng = jax.random.split(rng) + metrics = {"update_state": UpdateState.MUTATE,} | get_all_metrics( + _rng, losses, info, init_env_state, init_obs, dones, grads, all_ued_scores, child_levels + ) + + train_state = train_state.replace( + sampler=sampler, + update_state=UpdateState.DR, + num_mutation_updates=train_state.num_mutation_updates + 1, + mutation_last_level_batch=child_levels, + mutation_last_level_batch_scores=scores, + mutation_last_rollout_batch=jax.tree.map( + lambda x: x[:, 0], (rollout_states.env_state.env_state.env_state, dones) + ), + ) + return (rng, train_state), metrics + + rng, train_state = carry + rng, rng_replay = jax.random.split(rng) + + # The train step makes a decision on which branch to take, either on_new, on_replay or on_mutate. + # on_mutate is only called if the replay branch has been taken before (as it uses `train_state.update_state`). + branches = [ + on_new_levels, + on_replay_levels, + ] + if config["use_accel"]: + s = train_state.update_state + branch = (1 - s) * level_sampler.sample_replay_decision(train_state.sampler, rng_replay) + 2 * s + branches.append(on_mutate_levels) + else: + branch = level_sampler.sample_replay_decision(train_state.sampler, rng_replay).astype(int) + + return jax.lax.switch(branch, branches, rng, train_state) + + @partial(jax.jit, static_argnums=(2,)) + def eval(rng: chex.PRNGKey, train_state: TrainState, keep_states=True): + """ + This evaluates the current policy on the set of evaluation levels specified by config["eval_levels"]. + It returns (states, cum_rewards, episode_lengths), with shapes (num_steps, num_eval_levels, ...), (num_eval_levels,), (num_eval_levels,) + """ + num_levels = config["num_eval_levels"] + return general_eval( + rng, + eval_env, + env_params, + train_state, + all_eval_levels, + env_params.max_timesteps, + num_levels, + keep_states=keep_states, + return_trajectories=True, + ) + + @partial(jax.jit, static_argnums=(2,)) + def eval_on_dr_levels(rng: chex.PRNGKey, train_state: TrainState, keep_states=False): + return general_eval( + rng, + env, + env_params, + train_state, + DR_EVAL_LEVELS, + env_params.max_timesteps, + NUM_EVAL_DR_LEVELS, + keep_states=keep_states, + ) + + @jax.jit + def train_and_eval_step(runner_state, _): + """ + This function runs the train_step for a certain number of iterations, and then evaluates the policy. + It returns the updated train state, and a dictionary of metrics. + """ + # Train + (rng, train_state), metrics = jax.lax.scan(train_step, runner_state, None, config["eval_freq"]) + + # Eval + metrics["update_count"] = ( + train_state.num_dr_updates + train_state.num_replay_updates + train_state.num_mutation_updates + ) + + vid_frequency = get_video_frequency(config, metrics["update_count"]) + should_log_videos = metrics["update_count"] % vid_frequency == 0 + + def _compute_eval_learnability(dones, rewards, infos): + @jax.vmap + def _single(d, r, i): + learn, num_eps, num_succ = compute_learnability(config, d, r, i, config["num_eval_levels"]) + + return num_eps, num_succ.squeeze(-1) + + num_eps, num_succ = _single(dones, rewards, infos) + num_eps, num_succ = num_eps.sum(axis=0), num_succ.sum(axis=0) + success_rate = num_succ / jnp.maximum(1, num_eps) + + return success_rate * (1 - success_rate) + + @jax.jit + def _get_eval(rng): + metrics = {} + rng, rng_eval = jax.random.split(rng) + (states, cum_rewards, done_idx, episode_lengths, eval_infos), (eval_dones, eval_rewards) = jax.vmap( + eval, (0, None) + )(jax.random.split(rng_eval, config["eval_num_attempts"]), train_state) + + # learnability here of the holdout set: + eval_learn = _compute_eval_learnability(eval_dones, eval_rewards, eval_infos) + # Collect Metrics + eval_returns = cum_rewards.mean(axis=0) # (num_eval_levels,) + eval_solves = (eval_infos["returned_episode_solved"] * eval_dones).sum(axis=1) / jnp.maximum( + 1, eval_dones.sum(axis=1) + ) + eval_solves = eval_solves.mean(axis=0) + metrics["eval_returns"] = eval_returns + metrics["eval_ep_lengths"] = episode_lengths.mean(axis=0) + metrics["eval_learn"] = eval_learn + metrics["eval_solves"] = eval_solves + + metrics["eval_get_max_eplen"] = (episode_lengths == env_params.max_timesteps).mean(axis=0) + metrics["episode_return_bigger_than_negative"] = (cum_rewards > -0.4).mean(axis=0) + + if config["EVAL_ON_SAMPLED"]: + states_dr, cum_rewards_dr, done_idx_dr, episode_lengths_dr, infos_dr = jax.vmap( + eval_on_dr_levels, (0, None) + )(jax.random.split(rng_eval, config["eval_num_attempts"]), train_state) + + eval_dr_returns = cum_rewards_dr.mean(axis=0).mean() + eval_dr_eplen = episode_lengths_dr.mean(axis=0).mean() + + my_eval_dones = infos_dr["returned_episode"] + eval_dr_solves = (infos_dr["returned_episode_solved"] * my_eval_dones).sum(axis=1) / jnp.maximum( + 1, my_eval_dones.sum(axis=1) + ) + + metrics["eval_dr_returns"] = eval_dr_returns + metrics["eval_dr_eplen"] = eval_dr_eplen + metrics["eval_dr_solve_rates"] = eval_dr_solves + return metrics, states, episode_lengths, cum_rewards + + @jax.jit + def _get_videos(rng, states, episode_lengths, cum_rewards): + metrics = {"log_videos": True} + + # just grab the first run + states, episode_lengths = jax.tree_util.tree_map( + lambda x: x[0], (states, episode_lengths) + ) # (num_steps, num_eval_levels, ...), (num_eval_levels,) + # And one attempt + states = jax.tree_util.tree_map(lambda x: x[:, :], states) + episode_lengths = episode_lengths[:] + images = jax.vmap(jax.vmap(render_fn_eval))( + states.env_state.env_state.env_state + ) # (num_steps, num_eval_levels, ...) + frames = images.transpose( + 0, 1, 4, 2, 3 + ) # WandB expects color channel before image dimensions when dealing with animations for some reason + + @jax.jit + def _get_video(rollout_batch): + states = rollout_batch[0] + images = jax.vmap(render_fn)(states) # dimensions are (steps, x, y, 3) + return ( + # jax.tree.map(lambda x: x[:].transpose(0, 2, 1, 3)[:, ::-1], images).transpose(0, 3, 1, 2), + images.transpose(0, 3, 1, 2), + # images.transpose(0, 1, 4, 2, 3), + rollout_batch[1][:].argmax(), + ) + + # rollouts + metrics["dr_rollout"], metrics["dr_ep_len"] = _get_video(train_state.dr_last_rollout_batch) + metrics["replay_rollout"], metrics["replay_ep_len"] = _get_video(train_state.replay_last_rollout_batch) + metrics["mutation_rollout"], metrics["mutation_ep_len"] = _get_video( + train_state.mutation_last_rollout_batch + ) + + metrics["eval_animation"] = (frames, episode_lengths) + + metrics["eval_returns_video"] = cum_rewards[0] + metrics["eval_len_video"] = episode_lengths + + # Eval on sampled + + return metrics + + @jax.jit + def _get_dummy_videos(rng, states, episode_lengths, cum_rewards): + n_eval = config["num_eval_levels"] + nsteps = env_params.max_timesteps + nsteps2 = config["outer_rollout_steps"] * config["num_steps"] + img_size = ( + env.static_env_params.screen_dim[0] // env.static_env_params.downscale, + env.static_env_params.screen_dim[1] // env.static_env_params.downscale, + ) + return { + "log_videos": False, + "dr_rollout": jnp.zeros((nsteps2, 3, *img_size), jnp.float32), + "dr_ep_len": jnp.zeros((), jnp.int32), + "replay_rollout": jnp.zeros((nsteps2, 3, *img_size), jnp.float32), + "replay_ep_len": jnp.zeros((), jnp.int32), + "mutation_rollout": jnp.zeros((nsteps2, 3, *img_size), jnp.float32), + "mutation_ep_len": jnp.zeros((), jnp.int32), + # "eval_returns": jnp.zeros((n_eval,), jnp.float32), + # "eval_solves": jnp.zeros((n_eval,), jnp.float32), + # "eval_learn": jnp.zeros((n_eval,), jnp.float32), + # "eval_ep_lengths": jnp.zeros((n_eval,), jnp.int32), + "eval_animation": ( + jnp.zeros((nsteps, n_eval, 3, *img_size), jnp.float32), + jnp.zeros((n_eval,), jnp.int32), + ), + "eval_returns_video": jnp.zeros((n_eval,), jnp.float32), + "eval_len_video": jnp.zeros((n_eval,), jnp.int32), + } + + rng, rng_eval, rng_vid = jax.random.split(rng, 3) + + metrics_eval, states, episode_lengths, cum_rewards = _get_eval(rng_eval) + metrics = { + **metrics, + **metrics_eval, + **jax.lax.cond( + should_log_videos, _get_videos, _get_dummy_videos, rng_vid, states, episode_lengths, cum_rewards + ), + } + max_num_images = 8 + + top_regret_ones = max_num_images // 2 + bot_regret_ones = max_num_images - top_regret_ones + + @jax.jit + def get_values(level_batch, scores): + args = jnp.argsort(scores) # low scores are at the start, high scores are at the end + + low_scores = args[:bot_regret_ones] + high_scores = args[-top_regret_ones:] + + low_levels = jax.tree.map(lambda x: x[low_scores], level_batch) + high_levels = jax.tree.map(lambda x: x[high_scores], level_batch) + + low_scores = scores[low_scores] + high_scores = scores[high_scores] + # now concatenate: + return jax.vmap(render_fn)( + jax.tree.map(lambda x, y: jnp.concatenate([x, y], axis=0), low_levels, high_levels) + ), jnp.concatenate([low_scores, high_scores], axis=0) + + metrics["dr_levels"], metrics["dr_scores"] = get_values( + train_state.dr_last_level_batch, train_state.dr_last_level_batch_scores + ) + metrics["replay_levels"], metrics["replay_scores"] = get_values( + train_state.replay_last_level_batch, train_state.replay_last_level_batch_scores + ) + metrics["mutation_levels"], metrics["mutation_scores"] = get_values( + train_state.mutation_last_level_batch, train_state.mutation_last_level_batch_scores + ) + + def _t(i): + return jax.lax.select(i == 0, config["num_steps"], i) + + metrics["dr_ep_len"] = _t(train_state.dr_last_rollout_batch[1][:].argmax()) + metrics["replay_ep_len"] = _t(train_state.replay_last_rollout_batch[1][:].argmax()) + metrics["mutation_ep_len"] = _t(train_state.mutation_last_rollout_batch[1][:].argmax()) + + highest_scoring_level = level_sampler.get_levels(train_state.sampler, train_state.sampler["scores"].argmax()) + highest_weighted_level = level_sampler.get_levels( + train_state.sampler, level_sampler.level_weights(train_state.sampler).argmax() + ) + + metrics["highest_scoring_level"] = render_fn(highest_scoring_level) + metrics["highest_weighted_level"] = render_fn(highest_weighted_level) + + # log_eval(metrics, train_state_to_log_dict(runner_state[1], level_sampler)) + jax.debug.callback(log_eval, metrics, train_state_to_log_dict(runner_state[1], level_sampler)) + return (rng, train_state), {"update_count": metrics["update_count"]} + + def log_checkpoint(update_count, train_state): + if config["save_path"] is not None and config["checkpoint_save_freq"] > 1: + steps = ( + int(update_count) + * int(config["num_train_envs"]) + * int(config["num_steps"]) + * int(config["outer_rollout_steps"]) + ) + # save_params_to_wandb(train_state.params, steps, config) + save_model_to_wandb(train_state, steps, config) + + def train_eval_and_checkpoint_step(runner_state, _): + runner_state, metrics = jax.lax.scan( + train_and_eval_step, runner_state, xs=jnp.arange(config["checkpoint_save_freq"] // config["eval_freq"]) + ) + jax.debug.callback(log_checkpoint, metrics["update_count"][-1], runner_state[1]) + return runner_state, metrics + + # Set up the train states + rng = jax.random.PRNGKey(config["seed"]) + rng_init, rng_train = jax.random.split(rng) + + train_state = create_train_state(rng_init) + runner_state = (rng_train, train_state) + + runner_state, metrics = jax.lax.scan( + train_eval_and_checkpoint_step, + runner_state, + xs=jnp.arange((config["num_updates"]) // (config["checkpoint_save_freq"])), + ) + + if config["save_path"] is not None: + # save_params_to_wandb(runner_state[1].params, config["total_timesteps"], config) + save_model_to_wandb(runner_state[1], config["total_timesteps"], config, is_final=True) + + return runner_state[1] + + +if __name__ == "__main__": + main() diff --git a/Kinetix/experiments/ppo.py b/Kinetix/experiments/ppo.py new file mode 100644 index 0000000000000000000000000000000000000000..be450f6d6bb276519b5a1a15e8a8ae3f32fc1de8 --- /dev/null +++ b/Kinetix/experiments/ppo.py @@ -0,0 +1,468 @@ +import os +import hydra +from omegaconf import OmegaConf + +from kinetix.environment.ued.ued import ( + make_reset_train_function_with_list_of_levels, + make_reset_train_function_with_mutations, +) +from kinetix.render.renderer_pixels import make_render_pixels +from kinetix.util.config import ( + get_video_frequency, + init_wandb, + normalise_config, + generate_params_from_config, +) + +os.environ["WANDB_DISABLE_SERVICE"] = "True" + + +import sys +from typing import Any, NamedTuple + +import jax +import jax.numpy as jnp +import numpy as np +import optax +from flax.training.train_state import TrainState + +from kinetix.models import make_network_from_config +from kinetix.util.learning import general_eval, get_eval_levels +from flax.serialization import to_state_dict + +import wandb +from kinetix.environment.env import PixelObservations, make_kinetix_env_from_name +from kinetix.environment.wrappers import ( + AutoReplayWrapper, + AutoResetWrapper, + BatchEnvWrapper, + DenseRewardWrapper, + LogWrapper, + UnderspecifiedToGymnaxWrapper, +) +from kinetix.models.actor_critic import ScannedRNN +from kinetix.util.saving import ( + load_train_state_from_wandb_artifact_path, + save_model_to_wandb, +) + + +class Transition(NamedTuple): + done: jnp.ndarray + action: jnp.ndarray + value: jnp.ndarray + reward: jnp.ndarray + log_prob: jnp.ndarray + obs: Any + info: jnp.ndarray + + +def make_train(config, env_params, static_env_params): + config["num_updates"] = config["total_timesteps"] // config["num_steps"] // config["num_train_envs"] + config["minibatch_size"] = config["num_train_envs"] * config["num_steps"] // config["num_minibatches"] + + env = make_kinetix_env_from_name(config["env_name"], static_env_params=static_env_params) + + if config["train_level_mode"] == "list": + reset_func = make_reset_train_function_with_list_of_levels( + config, config["train_levels_list"], static_env_params, is_loading_train_levels=True + ) + elif config["train_level_mode"] == "random": + reset_func = make_reset_train_function_with_mutations( + env.physics_engine, env_params, env.static_env_params, config + ) + else: + raise ValueError(f"Unknown train_level_mode: {config['train_level_mode']}") + + env = UnderspecifiedToGymnaxWrapper(AutoResetWrapper(env, reset_func)) + + eval_env = make_kinetix_env_from_name(config["env_name"], static_env_params=static_env_params) + eval_env = UnderspecifiedToGymnaxWrapper(AutoReplayWrapper(eval_env)) + + env = DenseRewardWrapper(env) + env = LogWrapper(env) + env = BatchEnvWrapper(env, num_envs=config["num_train_envs"]) + + eval_env_nonbatch = LogWrapper(DenseRewardWrapper(eval_env)) + + def linear_schedule(count): + frac = 1.0 - (count // (config["num_minibatches"] * config["update_epochs"])) / config["num_updates"] + return config["lr"] * frac + + def linear_warmup_cosine_decay_schedule(count): + frac = (count // (config["num_minibatches"] * config["update_epochs"])) / config[ + "num_updates" + ] # between 0 and 1 + delta = config["peak_lr"] - config["initial_lr"] + frac_diff_max = 1.0 - config["warmup_frac"] + frac_cosine = (frac - config["warmup_frac"]) / frac_diff_max + + return jax.lax.select( + frac < config["warmup_frac"], + config["initial_lr"] + delta * frac / config["warmup_frac"], + config["peak_lr"] * jnp.maximum(0.0, 0.5 * (1.0 + jnp.cos(jnp.pi * ((frac_cosine) % 1.0)))), + ) + + def train(rng): + # INIT NETWORK + network = make_network_from_config(env, env_params, config) + rng, _rng = jax.random.split(rng) + obsv, env_state = env.reset(_rng, env_params) + dones = jnp.zeros((config["num_train_envs"]), dtype=jnp.bool_) + rng, _rng = jax.random.split(rng) + init_hstate = ScannedRNN.initialize_carry(config["num_train_envs"]) + init_x = jax.tree.map(lambda x: x[None, ...], (obsv, dones)) + network_params = network.init(_rng, init_hstate, init_x) + + param_count = sum(x.size for x in jax.tree_util.tree_leaves(network_params)) + obs_size = sum(x.size for x in jax.tree_util.tree_leaves(obsv)) // config["num_train_envs"] + + print("Number of parameters", param_count, "size of obs: ", obs_size) + if config["anneal_lr"]: + tx = optax.chain( + optax.clip_by_global_norm(config["max_grad_norm"]), + optax.adam(learning_rate=linear_schedule, eps=1e-5), + ) + elif config["warmup_lr"]: + tx = optax.chain( + optax.clip_by_global_norm(config["max_grad_norm"]), + optax.adamw(learning_rate=linear_warmup_cosine_decay_schedule, eps=1e-5), + ) + else: + tx = optax.chain( + optax.clip_by_global_norm(config["max_grad_norm"]), + optax.adam(config["lr"], eps=1e-5), + ) + train_state = TrainState.create( + apply_fn=network.apply, + params=network_params, + tx=tx, + ) + if config["load_from_checkpoint"] != None: + print("LOADING from", config["load_from_checkpoint"], "with only params =", config["load_only_params"]) + train_state = load_train_state_from_wandb_artifact_path( + train_state, config["load_from_checkpoint"], load_only_params=config["load_only_params"] + ) + # INIT ENV + rng, _rng = jax.random.split(rng) + obsv, env_state = env.reset(_rng, env_params) + init_hstate = ScannedRNN.initialize_carry(config["num_train_envs"]) + render_static_env_params = env.static_env_params.replace(downscale=1) + pixel_renderer = jax.jit(make_render_pixels(env_params, render_static_env_params)) + pixel_render_fn = lambda x: pixel_renderer(x) / 255.0 + eval_levels = get_eval_levels(config["eval_levels"], env.static_env_params) + + def _vmapped_eval_step(runner_state, rng): + def _single_eval_step(rng): + return general_eval( + rng, + eval_env_nonbatch, + env_params, + runner_state[0], + eval_levels, + env_params.max_timesteps, + config["num_eval_levels"], + keep_states=True, + return_trajectories=True, + ) + + (states, returns, done_idxs, episode_lengths, eval_infos), (eval_dones, eval_rewards) = jax.vmap( + _single_eval_step + )(jax.random.split(rng, config["eval_num_attempts"])) + eval_solves = (eval_infos["returned_episode_solved"] * eval_dones).sum(axis=1) / jnp.maximum( + 1, eval_dones.sum(axis=1) + ) + states_to_plot = jax.tree.map(lambda x: x[0], states) + # obs = jax.vmap(jax.vmap(pixel_render_fn))(states_to_plot.env_state.env_state.env_state) + + return ( + states_to_plot, + done_idxs[0], + returns[0], + returns.mean(axis=0), + episode_lengths.mean(axis=0), + eval_solves.mean(axis=0), + ) + + # TRAIN LOOP + def _update_step(runner_state, unused): + # COLLECT TRAJECTORIES + def _env_step(runner_state, unused): + ( + train_state, + env_state, + last_obs, + last_done, + hstate, + rng, + update_step, + ) = runner_state + + # SELECT ACTION + rng, _rng = jax.random.split(rng) + ac_in = (jax.tree.map(lambda x: x[np.newaxis, :], last_obs), last_done[np.newaxis, :]) + hstate, pi, value = network.apply(train_state.params, hstate, ac_in) + action = pi.sample(seed=_rng) + log_prob = pi.log_prob(action) + value, action, log_prob = ( + value.squeeze(0), + action.squeeze(0), + log_prob.squeeze(0), + ) + + # STEP ENV + rng, _rng = jax.random.split(rng) + obsv, env_state, reward, done, info = env.step(_rng, env_state, action, env_params) + transition = Transition(last_done, action, value, reward, log_prob, last_obs, info) + runner_state = ( + train_state, + env_state, + obsv, + done, + hstate, + rng, + update_step, + ) + return runner_state, transition + + initial_hstate = runner_state[-3] + runner_state, traj_batch = jax.lax.scan(_env_step, runner_state, None, config["num_steps"]) + + # CALCULATE ADVANTAGE + ( + train_state, + env_state, + last_obs, + last_done, + hstate, + rng, + update_step, + ) = runner_state + ac_in = (jax.tree.map(lambda x: x[np.newaxis, :], last_obs), last_done[np.newaxis, :]) + _, _, last_val = network.apply(train_state.params, hstate, ac_in) + last_val = last_val.squeeze(0) + + def _calculate_gae(traj_batch, last_val, last_done): + def _get_advantages(carry, transition): + gae, next_value, next_done = carry + done, value, reward = ( + transition.done, + transition.value, + transition.reward, + ) + delta = reward + config["gamma"] * next_value * (1 - next_done) - value + gae = delta + config["gamma"] * config["gae_lambda"] * (1 - next_done) * gae + return (gae, value, done), gae + + _, advantages = jax.lax.scan( + _get_advantages, + (jnp.zeros_like(last_val), last_val, last_done), + traj_batch, + reverse=True, + unroll=16, + ) + return advantages, advantages + traj_batch.value + + advantages, targets = _calculate_gae(traj_batch, last_val, last_done) + + # UPDATE NETWORK + def _update_epoch(update_state, unused): + def _update_minbatch(train_state, batch_info): + init_hstate, traj_batch, advantages, targets = batch_info + + def _loss_fn(params, init_hstate, traj_batch, gae, targets): + # RERUN NETWORK + _, pi, value = network.apply(params, init_hstate[0], (traj_batch.obs, traj_batch.done)) + log_prob = pi.log_prob(traj_batch.action) + + # CALCULATE VALUE LOSS + value_pred_clipped = traj_batch.value + (value - traj_batch.value).clip( + -config["clip_eps"], config["clip_eps"] + ) + value_losses = jnp.square(value - targets) + value_losses_clipped = jnp.square(value_pred_clipped - targets) + value_loss = 0.5 * jnp.maximum(value_losses, value_losses_clipped).mean() + + # CALCULATE ACTOR LOSS + ratio = jnp.exp(log_prob - traj_batch.log_prob) + gae = (gae - gae.mean()) / (gae.std() + 1e-8) + loss_actor1 = ratio * gae + loss_actor2 = ( + jnp.clip( + ratio, + 1.0 - config["clip_eps"], + 1.0 + config["clip_eps"], + ) + * gae + ) + loss_actor = -jnp.minimum(loss_actor1, loss_actor2) + loss_actor = loss_actor.mean() + entropy = pi.entropy().mean() + + total_loss = loss_actor + config["vf_coef"] * value_loss - config["ent_coef"] * entropy + return total_loss, (value_loss, loss_actor, entropy) + + grad_fn = jax.value_and_grad(_loss_fn, has_aux=True) + total_loss, grads = grad_fn(train_state.params, init_hstate, traj_batch, advantages, targets) + train_state = train_state.apply_gradients(grads=grads) + return train_state, total_loss + + ( + train_state, + init_hstate, + traj_batch, + advantages, + targets, + rng, + ) = update_state + rng, _rng = jax.random.split(rng) + permutation = jax.random.permutation(_rng, config["num_train_envs"]) + batch = (init_hstate, traj_batch, advantages, targets) + + shuffled_batch = jax.tree_util.tree_map(lambda x: jnp.take(x, permutation, axis=1), batch) + + minibatches = jax.tree_util.tree_map( + lambda x: jnp.swapaxes( + jnp.reshape( + x, + [x.shape[0], config["num_minibatches"], -1] + list(x.shape[2:]), + ), + 1, + 0, + ), + shuffled_batch, + ) + + train_state, total_loss = jax.lax.scan(_update_minbatch, train_state, minibatches) + update_state = ( + train_state, + init_hstate, + traj_batch, + advantages, + targets, + rng, + ) + return update_state, total_loss + + init_hstate = initial_hstate[None, :] # TBH + update_state = ( + train_state, + init_hstate, + traj_batch, + advantages, + targets, + rng, + ) + update_state, loss_info = jax.lax.scan(_update_epoch, update_state, None, config["update_epochs"]) + train_state = update_state[0] + metric = jax.tree.map( + lambda x: (x * traj_batch.info["returned_episode"]).sum() / traj_batch.info["returned_episode"].sum(), + traj_batch.info, + ) + rng = update_state[-1] + + if config["use_wandb"]: + vid_frequency = get_video_frequency(config, update_step) + rng, _rng = jax.random.split(rng) + to_log_videos = _vmapped_eval_step(runner_state, _rng) + should_log_videos = update_step % vid_frequency == 0 + first = jax.lax.cond( + should_log_videos, + lambda: jax.vmap(jax.vmap(pixel_render_fn))(to_log_videos[0].env_state.env_state.env_state), + lambda: ( + jnp.zeros( + ( + env_params.max_timesteps, + config["num_eval_levels"], + *PixelObservations(env_params, render_static_env_params) + .observation_space(env_params) + .shape, + ) + ) + ), + ) + to_log_videos = (first, should_log_videos, *to_log_videos[1:]) + + def callback(metric, raw_info, loss_info, update_step, to_log_videos): + to_log = {} + to_log["timing/num_updates"] = update_step + to_log["timing/num_env_steps"] = update_step * config["num_steps"] * config["num_train_envs"] + ( + obs_vid, + should_log_videos, + idx_vid, + eval_return_vid, + eval_return_mean, + eval_eplen_mean, + eval_solverate_mean, + ) = to_log_videos + to_log["eval/mean_eval_return"] = eval_return_mean.mean() + to_log["eval/mean_eval_eplen"] = eval_eplen_mean.mean() + for i, eval_name in enumerate(config["eval_levels"]): + return_on_video = eval_return_vid[i] + to_log[f"eval_video/return_{eval_name}"] = return_on_video + to_log[f"eval_video/len_{eval_name}"] = idx_vid[i] + to_log[f"eval_avg/return_{eval_name}"] = eval_return_mean[i] + to_log[f"eval_avg/solve_rate_{eval_name}"] = eval_solverate_mean[i] + + if should_log_videos: + for i, eval_name in enumerate(config["eval_levels"]): + obs_to_use = obs_vid[: idx_vid[i], i] + obs_to_use = np.asarray(obs_to_use).transpose(0, 3, 2, 1)[:, :, ::-1, :] + to_log[f"media/eval_video_{eval_name}"] = wandb.Video((obs_to_use * 255).astype(np.uint8)) + + wandb.log(to_log) + + jax.debug.callback(callback, metric, traj_batch.info, loss_info, update_step, to_log_videos) + + runner_state = ( + train_state, + env_state, + last_obs, + last_done, + hstate, + rng, + update_step + 1, + ) + return runner_state, metric + + rng, _rng = jax.random.split(rng) + runner_state = ( + train_state, + env_state, + obsv, + jnp.zeros((config["num_train_envs"]), dtype=bool), + init_hstate, + _rng, + 0, + ) + runner_state, metric = jax.lax.scan(_update_step, runner_state, None, config["num_updates"]) + return {"runner_state": runner_state, "metric": metric} + + return train + + +@hydra.main(version_base=None, config_path="../configs", config_name="ppo") +def main(config): + config = normalise_config(OmegaConf.to_container(config), "PPO") + env_params, static_env_params = generate_params_from_config(config) + config["env_params"] = to_state_dict(env_params) + config["static_env_params"] = to_state_dict(static_env_params) + + if config["use_wandb"]: + run = init_wandb(config, "PPO") + + rng = jax.random.PRNGKey(config["seed"]) + rng, _rng = jax.random.split(rng) + train_jit = jax.jit(make_train(config, env_params, static_env_params)) + + out = train_jit(_rng) + + if config["use_wandb"]: + if config["save_policy"]: + train_state = jax.tree.map(lambda x: x, out["runner_state"][0]) + save_model_to_wandb(train_state, config["total_timesteps"], config) + + +if __name__ == "__main__": + main() diff --git a/Kinetix/experiments/sfl.py b/Kinetix/experiments/sfl.py new file mode 100644 index 0000000000000000000000000000000000000000..9958189de53f662ae79dce231953baf86b88b3d0 --- /dev/null +++ b/Kinetix/experiments/sfl.py @@ -0,0 +1,1067 @@ +""" +Based on PureJaxRL Implementation of PPO +""" + +import os +import sys +import time +import typing +from functools import partial +from typing import NamedTuple + +import chex +import hydra +import jax +import jax.experimental +import jax.numpy as jnp +import matplotlib.pyplot as plt +import numpy as np +import optax +from flax.training.train_state import TrainState +from kinetix.environment.ued.ued import make_reset_train_function_with_mutations, make_vmapped_filtered_level_sampler +from kinetix.environment.ued.ued import ( + make_reset_train_function_with_list_of_levels, + make_reset_train_function_with_mutations, +) +from kinetix.util.config import ( + generate_ued_params_from_config, + init_wandb, + normalise_config, + generate_params_from_config, + get_eval_level_groups, +) +from jaxued.environments.underspecified_env import EnvParams, EnvState, Observation, UnderspecifiedEnv +from omegaconf import OmegaConf +from PIL import Image +from flax.serialization import to_state_dict + +import wandb +from kinetix.environment.env import make_kinetix_env_from_name +from kinetix.environment.wrappers import ( + AutoReplayWrapper, + DenseRewardWrapper, + LogWrapper, + UnderspecifiedToGymnaxWrapper, +) +from kinetix.models import make_network_from_config +from kinetix.models.actor_critic import ScannedRNN +from kinetix.render.renderer_pixels import make_render_pixels +from kinetix.util.learning import general_eval, get_eval_levels +from kinetix.util.saving import ( + load_train_state_from_wandb_artifact_path, + save_model_to_wandb, +) + +sys.path.append("ued") +from flax.traverse_util import flatten_dict, unflatten_dict +from safetensors.flax import load_file, save_file + + +def save_params(params: typing.Dict, filename: typing.Union[str, os.PathLike]) -> None: + flattened_dict = flatten_dict(params, sep=",") + save_file(flattened_dict, filename) + + +def load_params(filename: typing.Union[str, os.PathLike]) -> typing.Dict: + flattened_dict = load_file(filename) + return unflatten_dict(flattened_dict, sep=",") + + +class Transition(NamedTuple): + global_done: jnp.ndarray + done: jnp.ndarray + action: jnp.ndarray + value: jnp.ndarray + reward: jnp.ndarray + log_prob: jnp.ndarray + obs: jnp.ndarray + info: jnp.ndarray + + +class RolloutBatch(NamedTuple): + obs: jnp.ndarray + actions: jnp.ndarray + rewards: jnp.ndarray + dones: jnp.ndarray + log_probs: jnp.ndarray + values: jnp.ndarray + targets: jnp.ndarray + advantages: jnp.ndarray + # carry: jnp.ndarray + mask: jnp.ndarray + + +def evaluate_rnn( + rng: chex.PRNGKey, + env: UnderspecifiedEnv, + env_params: EnvParams, + train_state: TrainState, + init_hstate: chex.ArrayTree, + init_obs: Observation, + init_env_state: EnvState, + max_episode_length: int, + keep_states=True, +) -> tuple[chex.Array, chex.Array, chex.Array]: + """This runs the RNN on the environment, given an initial state and observation, and returns (states, rewards, episode_lengths) + + Args: + rng (chex.PRNGKey): + env (UnderspecifiedEnv): + env_params (EnvParams): + train_state (TrainState): + init_hstate (chex.ArrayTree): Shape (num_levels, ) + init_obs (Observation): Shape (num_levels, ) + init_env_state (EnvState): Shape (num_levels, ) + max_episode_length (int): + + Returns: + Tuple[chex.Array, chex.Array, chex.Array]: (States, rewards, episode lengths) ((NUM_STEPS, NUM_LEVELS), (NUM_STEPS, NUM_LEVELS), (NUM_LEVELS,) + """ + num_levels = jax.tree_util.tree_flatten(init_obs)[0][0].shape[0] + + def step(carry, _): + rng, hstate, obs, state, done, mask, episode_length = carry + rng, rng_action, rng_step = jax.random.split(rng, 3) + + x = jax.tree.map(lambda x: x[None, ...], (obs, done)) + hstate, pi, _ = train_state.apply_fn(train_state.params, hstate, x) + action = pi.sample(seed=rng_action).squeeze(0) + + obs, next_state, reward, done, info = jax.vmap(env.step, in_axes=(0, 0, 0, None))( + jax.random.split(rng_step, num_levels), state, action, env_params + ) + + next_mask = mask & ~done + episode_length += mask + + if keep_states: + return (rng, hstate, obs, next_state, done, next_mask, episode_length), (state, reward, info) + else: + return (rng, hstate, obs, next_state, done, next_mask, episode_length), (None, reward, info) + + (_, _, _, _, _, _, episode_lengths), (states, rewards, infos) = jax.lax.scan( + step, + ( + rng, + init_hstate, + init_obs, + init_env_state, + jnp.zeros(num_levels, dtype=bool), + jnp.ones(num_levels, dtype=bool), + jnp.zeros(num_levels, dtype=jnp.int32), + ), + None, + length=max_episode_length, + ) + + return states, rewards, episode_lengths, infos + + +@hydra.main(version_base=None, config_path="../configs", config_name="sfl") +def main(config): + time_start = time.time() + config = OmegaConf.to_container(config) + config = normalise_config(config, "SFL" if config["ued"]["sampled_envs_ratio"] > 0 else "SFL-DR") + env_params, static_env_params = generate_params_from_config(config) + config["env_params"] = to_state_dict(env_params) + config["static_env_params"] = to_state_dict(static_env_params) + run = init_wandb(config, "SFL") + + rng = jax.random.PRNGKey(config["seed"]) + + config["num_envs_from_sampled"] = int(config["num_train_envs"] * config["sampled_envs_ratio"]) + config["num_envs_to_generate"] = int(config["num_train_envs"] * (1 - config["sampled_envs_ratio"])) + assert (config["num_envs_from_sampled"] + config["num_envs_to_generate"]) == config["num_train_envs"] + + def make_env(static_env_params): + env = make_kinetix_env_from_name(config["env_name"], static_env_params=static_env_params) + env = AutoReplayWrapper(env) + env = UnderspecifiedToGymnaxWrapper(env) + env = DenseRewardWrapper(env, dense_reward_scale=config["dense_reward_scale"]) + env = LogWrapper(env) + return env + + env = make_env(static_env_params) + + if config["train_level_mode"] == "list": + sample_random_level = make_reset_train_function_with_list_of_levels( + config, config["train_levels"], static_env_params, make_pcg_state=False, is_loading_train_levels=True + ) + elif config["train_level_mode"] == "random": + sample_random_level = make_reset_train_function_with_mutations( + env.physics_engine, env_params, static_env_params, config, make_pcg_state=False + ) + else: + raise ValueError(f"Unknown train_level_mode: {config['train_level_mode']}") + + sample_random_levels = make_vmapped_filtered_level_sampler( + sample_random_level, env_params, static_env_params, config, make_pcg_state=False, env=env + ) + _, eval_static_env_params = generate_params_from_config( + config["eval_env_size_true"] | {"frame_skip": config["frame_skip"]} + ) + eval_env = make_env(eval_static_env_params) + ued_params = generate_ued_params_from_config(config) + + def make_render_fn(static_env_params): + render_fn_inner = make_render_pixels(env_params, static_env_params) + render_fn = lambda x: render_fn_inner(x).transpose(1, 0, 2)[::-1] + return render_fn + + render_fn = make_render_fn(static_env_params) + render_fn_eval = make_render_fn(eval_static_env_params) + + NUM_EVAL_DR_LEVELS = 200 + key_to_sample_dr_eval_set = jax.random.PRNGKey(100) + DR_EVAL_LEVELS = sample_random_levels(key_to_sample_dr_eval_set, NUM_EVAL_DR_LEVELS) + + print("Hello here num steps is ", config["num_steps"]) + print("CONFIG is ", config) + + config["total_timesteps"] = config["num_updates"] * config["num_steps"] * config["num_train_envs"] + config["minibatch_size"] = config["num_train_envs"] * config["num_steps"] // config["num_minibatches"] + config["clip_eps"] = config["clip_eps"] + + config["env_name"] = config["env_name"] + network = make_network_from_config(env, env_params, config) + + def linear_schedule(count): + count = count // (config["num_minibatches"] * config["update_epochs"]) + frac = 1.0 - count / config["num_updates"] + return config["lr"] * frac + + # INIT NETWORK + rng, _rng = jax.random.split(rng) + train_envs = 32 # To not run out of memory, the initial sample size does not matter. + obs, _ = env.reset_to_level(rng, sample_random_level(rng), env_params) + obs = jax.tree.map( + lambda x: jnp.repeat(jnp.repeat(x[None, ...], train_envs, axis=0)[None, ...], 256, axis=0), + obs, + ) + init_x = (obs, jnp.zeros((256, train_envs))) + init_hstate = ScannedRNN.initialize_carry(train_envs) + network_params = network.init(_rng, init_hstate, init_x) + if config["anneal_lr"]: + tx = optax.chain( + optax.clip_by_global_norm(config["max_grad_norm"]), + optax.adam(learning_rate=linear_schedule, eps=1e-5), + ) + else: + tx = optax.chain( + optax.clip_by_global_norm(config["max_grad_norm"]), + optax.adam(config["lr"], eps=1e-5), + ) + train_state = TrainState.create( + apply_fn=network.apply, + params=network_params, + tx=tx, + ) + if config["load_from_checkpoint"] != None: + print("LOADING from", config["load_from_checkpoint"], "with only params =", config["load_only_params"]) + train_state = load_train_state_from_wandb_artifact_path( + train_state, + config["load_from_checkpoint"], + load_only_params=config["load_only_params"], + legacy=config["load_legacy_checkpoint"], + ) + + rng, _rng = jax.random.split(rng) + + # INIT ENV + rng, _rng, _rng2 = jax.random.split(rng, 3) + rng_reset = jax.random.split(_rng, config["num_train_envs"]) + + new_levels = sample_random_levels(_rng2, config["num_train_envs"]) + obsv, env_state = jax.vmap(env.reset_to_level, in_axes=(0, 0, None))(rng_reset, new_levels, env_params) + + start_state = env_state + init_hstate = ScannedRNN.initialize_carry(config["num_train_envs"]) + + @jax.jit + def log_buffer_learnability(rng, train_state, instances): + BATCH_SIZE = config["num_to_save"] + BATCH_ACTORS = BATCH_SIZE + + def _batch_step(unused, rng): + def _env_step(runner_state, unused): + env_state, start_state, last_obs, last_done, hstate, rng = runner_state + + # SELECT ACTION + rng, _rng = jax.random.split(rng) + obs_batch = last_obs + ac_in = ( + jax.tree.map(lambda x: x[np.newaxis, :], obs_batch), + last_done[np.newaxis, :], + ) + hstate, pi, value = network.apply(train_state.params, hstate, ac_in) + action = pi.sample(seed=_rng).squeeze() + log_prob = pi.log_prob(action) + env_act = action + + # STEP ENV + rng, _rng = jax.random.split(rng) + rng_step = jax.random.split(_rng, config["num_to_save"]) + obsv, env_state, reward, done, info = jax.vmap(env.step, in_axes=(0, 0, 0, None))( + rng_step, env_state, env_act, env_params + ) + done_batch = done + + transition = Transition( + done, + last_done, + action.squeeze(), + value.squeeze(), + reward, + log_prob.squeeze(), + obs_batch, + info, + ) + runner_state = (env_state, start_state, obsv, done_batch, hstate, rng) + return runner_state, transition + + @partial(jax.vmap, in_axes=(None, 1, 1, 1)) + @partial(jax.jit, static_argnums=(0,)) + def _calc_outcomes_by_agent(max_steps: int, dones, returns, info): + idxs = jnp.arange(max_steps) + + @partial(jax.vmap, in_axes=(0, 0)) + def __ep_outcomes(start_idx, end_idx): + mask = (idxs > start_idx) & (idxs <= end_idx) & (end_idx != max_steps) + r = jnp.sum(returns * mask) + goal_r = info["GoalR"] # (returns > 0) * 1.0 + success = jnp.sum(goal_r * mask) + l = end_idx - start_idx + return r, success, l + + done_idxs = jnp.argwhere(dones, size=50, fill_value=max_steps).squeeze() + mask_done = jnp.where(done_idxs == max_steps, 0, 1) + ep_return, success, length = __ep_outcomes( + jnp.concatenate([jnp.array([-1]), done_idxs[:-1]]), done_idxs + ) + + return { + "ep_return": ep_return.mean(where=mask_done), + "num_episodes": mask_done.sum(), + "success_rate": success.mean(where=mask_done), + "ep_len": length.mean(where=mask_done), + } + + # sample envs + rng, _rng, _rng2 = jax.random.split(rng, 3) + rng_reset = jax.random.split(_rng, config["num_to_save"]) + rng_levels = jax.random.split(_rng2, config["num_to_save"]) + # obsv, env_state = jax.vmap(sample_random_level, in_axes=(0,))(reset_rng) + # new_levels = jax.vmap(sample_random_level)(rng_levels) + obsv, env_state = jax.vmap(env.reset_to_level, in_axes=(0, 0, None))(rng_reset, instances, env_params) + # env_instances = new_levels + init_hstate = ScannedRNN.initialize_carry( + BATCH_ACTORS, + ) + + runner_state = (env_state, env_state, obsv, jnp.zeros((BATCH_ACTORS), dtype=bool), init_hstate, rng) + runner_state, traj_batch = jax.lax.scan(_env_step, runner_state, None, config["rollout_steps"]) + done_by_env = traj_batch.done.reshape((-1, config["num_to_save"])) + reward_by_env = traj_batch.reward.reshape((-1, config["num_to_save"])) + # info_by_actor = jax.tree.map(lambda x: x.swapaxes(2, 1).reshape((-1, BATCH_ACTORS)), traj_batch.info) + o = _calc_outcomes_by_agent(config["rollout_steps"], traj_batch.done, traj_batch.reward, traj_batch.info) + success_by_env = o["success_rate"].reshape((1, config["num_to_save"])) + learnability_by_env = (success_by_env * (1 - success_by_env)).sum(axis=0) + return None, (learnability_by_env, success_by_env.sum(axis=0)) + + rngs = jax.random.split(rng, 1) + _, (learnability, success_by_env) = jax.lax.scan(_batch_step, None, rngs, 1) + return learnability[0], success_by_env[0] + + num_eval_levels = len(config["eval_levels"]) + all_eval_levels = get_eval_levels(config["eval_levels"], eval_env.static_env_params) + + eval_group_indices = get_eval_level_groups(config["eval_levels"]) + print("group indices", eval_group_indices) + + @jax.jit + def get_learnability_set(rng, network_params): + + BATCH_ACTORS = config["batch_size"] + + def _batch_step(unused, rng): + def _env_step(runner_state, unused): + env_state, start_state, last_obs, last_done, hstate, rng = runner_state + + # SELECT ACTION + rng, _rng = jax.random.split(rng) + obs_batch = last_obs + ac_in = ( + jax.tree.map(lambda x: x[np.newaxis, :], obs_batch), + last_done[np.newaxis, :], + ) + hstate, pi, value = network.apply(network_params, hstate, ac_in) + action = pi.sample(seed=_rng).squeeze() + log_prob = pi.log_prob(action) + env_act = action + + # STEP ENV + rng, _rng = jax.random.split(rng) + rng_step = jax.random.split(_rng, config["batch_size"]) + obsv, env_state, reward, done, info = jax.vmap(env.step, in_axes=(0, 0, 0, None))( + rng_step, env_state, env_act, env_params + ) + done_batch = done + + transition = Transition( + done, + last_done, + action.squeeze(), + value.squeeze(), + reward, + log_prob.squeeze(), + obs_batch, + info, + ) + runner_state = (env_state, start_state, obsv, done_batch, hstate, rng) + return runner_state, transition + + @partial(jax.vmap, in_axes=(None, 1, 1, 1)) + @partial(jax.jit, static_argnums=(0,)) + def _calc_outcomes_by_agent(max_steps: int, dones, returns, info): + idxs = jnp.arange(max_steps) + + @partial(jax.vmap, in_axes=(0, 0)) + def __ep_outcomes(start_idx, end_idx): + mask = (idxs > start_idx) & (idxs <= end_idx) & (end_idx != max_steps) + r = jnp.sum(returns * mask) + goal_r = info["GoalR"] # (returns > 0) * 1.0 + success = jnp.sum(goal_r * mask) + l = end_idx - start_idx + return r, success, l + + done_idxs = jnp.argwhere(dones, size=50, fill_value=max_steps).squeeze() + mask_done = jnp.where(done_idxs == max_steps, 0, 1) + ep_return, success, length = __ep_outcomes( + jnp.concatenate([jnp.array([-1]), done_idxs[:-1]]), done_idxs + ) + + return { + "ep_return": ep_return.mean(where=mask_done), + "num_episodes": mask_done.sum(), + "success_rate": success.mean(where=mask_done), + "ep_len": length.mean(where=mask_done), + } + + # sample envs + rng, _rng, _rng2 = jax.random.split(rng, 3) + rng_reset = jax.random.split(_rng, config["batch_size"]) + new_levels = sample_random_levels(_rng2, config["batch_size"]) + obsv, env_state = jax.vmap(env.reset_to_level, in_axes=(0, 0, None))(rng_reset, new_levels, env_params) + env_instances = new_levels + init_hstate = ScannedRNN.initialize_carry( + BATCH_ACTORS, + ) + + runner_state = (env_state, env_state, obsv, jnp.zeros((BATCH_ACTORS), dtype=bool), init_hstate, rng) + runner_state, traj_batch = jax.lax.scan(_env_step, runner_state, None, config["rollout_steps"]) + done_by_env = traj_batch.done.reshape((-1, config["batch_size"])) + reward_by_env = traj_batch.reward.reshape((-1, config["batch_size"])) + # info_by_actor = jax.tree.map(lambda x: x.swapaxes(2, 1).reshape((-1, BATCH_ACTORS)), traj_batch.info) + o = _calc_outcomes_by_agent(config["rollout_steps"], traj_batch.done, traj_batch.reward, traj_batch.info) + success_by_env = o["success_rate"].reshape((1, config["batch_size"])) + learnability_by_env = (success_by_env * (1 - success_by_env)).sum(axis=0) + return None, (learnability_by_env, success_by_env.sum(axis=0), env_instances) + + if config["sampled_envs_ratio"] == 0.0: + print("Not doing any rollouts because sampled_envs_ratio is 0.0") + # Here we have zero envs, so we can literally just sample random ones because there is no point. + top_instances = sample_random_levels(_rng, config["num_to_save"]) + top_success = top_learn = learnability = success_rates = jnp.zeros(config["num_to_save"]) + else: + rngs = jax.random.split(rng, config["num_batches"]) + _, (learnability, success_rates, env_instances) = jax.lax.scan( + _batch_step, None, rngs, config["num_batches"] + ) + + flat_env_instances = jax.tree.map(lambda x: x.reshape((-1,) + x.shape[2:]), env_instances) + learnability = learnability.flatten() + success_rates.flatten() * 0.001 + top_1000 = jnp.argsort(learnability)[-config["num_to_save"] :] + + top_1000_instances = jax.tree.map(lambda x: x.at[top_1000].get(), flat_env_instances) + top_learn, top_instances = learnability.at[top_1000].get(), top_1000_instances + top_success = success_rates.at[top_1000].get() + + if config["put_eval_levels_in_buffer"]: + top_instances = jax.tree.map( + lambda all, new: jnp.concatenate([all[:-num_eval_levels], new], axis=0), + top_instances, + all_eval_levels.env_state, + ) + + log = { + "learnability/learnability_sampled_mean": learnability.mean(), + "learnability/learnability_sampled_median": jnp.median(learnability), + "learnability/learnability_sampled_min": learnability.min(), + "learnability/learnability_sampled_max": learnability.max(), + "learnability/learnability_selected_mean": top_learn.mean(), + "learnability/learnability_selected_median": jnp.median(top_learn), + "learnability/learnability_selected_min": top_learn.min(), + "learnability/learnability_selected_max": top_learn.max(), + "learnability/solve_rate_sampled_mean": top_success.mean(), + "learnability/solve_rate_sampled_median": jnp.median(top_success), + "learnability/solve_rate_sampled_min": top_success.min(), + "learnability/solve_rate_sampled_max": top_success.max(), + "learnability/solve_rate_selected_mean": success_rates.mean(), + "learnability/solve_rate_selected_median": jnp.median(success_rates), + "learnability/solve_rate_selected_min": success_rates.min(), + "learnability/solve_rate_selected_max": success_rates.max(), + } + + return top_learn, top_instances, log + + def eval(rng: chex.PRNGKey, train_state: TrainState, keep_states=True): + """ + This evaluates the current policy on the set of evaluation levels specified by config["eval_levels"]. + It returns (states, cum_rewards, episode_lengths), with shapes (num_steps, num_eval_levels, ...), (num_eval_levels,), (num_eval_levels,) + """ + num_levels = len(config["eval_levels"]) + # eval_levels = get_eval_levels(config["eval_levels"], eval_env.static_env_params) + return general_eval( + rng, + eval_env, + env_params, + train_state, + all_eval_levels, + env_params.max_timesteps, + num_levels, + keep_states=keep_states, + return_trajectories=True, + ) + + def eval_on_dr_levels(rng: chex.PRNGKey, train_state: TrainState, keep_states=False): + return general_eval( + rng, + env, + env_params, + train_state, + DR_EVAL_LEVELS, + env_params.max_timesteps, + NUM_EVAL_DR_LEVELS, + keep_states=keep_states, + ) + + def eval_on_top_learnable_levels(rng: chex.PRNGKey, train_state: TrainState, levels, keep_states=True): + N = 5 + return general_eval( + rng, + env, + env_params, + train_state, + jax.tree.map(lambda x: x[:N], levels), + env_params.max_timesteps, + N, + keep_states=keep_states, + ) + + # TRAIN LOOP + def train_step(runner_state_instances, unused): + # COLLECT TRAJECTORIES + runner_state, instances = runner_state_instances + num_env_instances = instances.polygon.position.shape[0] + + def _env_step(runner_state, unused): + train_state, env_state, start_state, last_obs, last_done, hstate, update_steps, rng = runner_state + + # SELECT ACTION + rng, _rng = jax.random.split(rng) + obs_batch = last_obs + ac_in = ( + jax.tree.map(lambda x: x[np.newaxis, :], obs_batch), + last_done[np.newaxis, :], + ) + hstate, pi, value = network.apply(train_state.params, hstate, ac_in) + action = pi.sample(seed=_rng).squeeze() + log_prob = pi.log_prob(action) + env_act = action + + # STEP ENV + rng, _rng = jax.random.split(rng) + rng_step = jax.random.split(_rng, config["num_train_envs"]) + obsv, env_state, reward, done, info = jax.vmap(env.step, in_axes=(0, 0, 0, None))( + rng_step, env_state, env_act, env_params + ) + done_batch = done + transition = Transition( + done, + last_done, + action.squeeze(), + value.squeeze(), + reward, + log_prob.squeeze(), + obs_batch, + info, + ) + runner_state = (train_state, env_state, start_state, obsv, done_batch, hstate, update_steps, rng) + return runner_state, (transition) + + initial_hstate = runner_state[-3] + runner_state, traj_batch = jax.lax.scan(_env_step, runner_state, None, config["num_steps"]) + + # CALCULATE ADVANTAGE + train_state, env_state, start_state, last_obs, last_done, hstate, update_steps, rng = runner_state + last_obs_batch = last_obs # batchify(last_obs, env.agents, config["num_train_envs"]) + ac_in = ( + jax.tree.map(lambda x: x[np.newaxis, :], last_obs_batch), + last_done[np.newaxis, :], + ) + _, _, last_val = network.apply(train_state.params, hstate, ac_in) + last_val = last_val.squeeze() + + def _calculate_gae(traj_batch, last_val): + def _get_advantages(gae_and_next_value, transition: Transition): + gae, next_value = gae_and_next_value + done, value, reward = ( + transition.global_done, + transition.value, + transition.reward, + ) + delta = reward + config["gamma"] * next_value * (1 - done) - value + gae = delta + config["gamma"] * config["gae_lambda"] * (1 - done) * gae + return (gae, value), gae + + _, advantages = jax.lax.scan( + _get_advantages, + (jnp.zeros_like(last_val), last_val), + traj_batch, + reverse=True, + unroll=16, + ) + return advantages, advantages + traj_batch.value + + advantages, targets = _calculate_gae(traj_batch, last_val) + + # UPDATE NETWORK + def _update_epoch(update_state, unused): + def _update_minbatch(train_state, batch_info): + init_hstate, traj_batch, advantages, targets = batch_info + + def _loss_fn_masked(params, init_hstate, traj_batch, gae, targets): + + # RERUN NETWORK + _, pi, value = network.apply( + params, + jax.tree.map(lambda x: x.transpose(), init_hstate), + (traj_batch.obs, traj_batch.done), + ) + log_prob = pi.log_prob(traj_batch.action) + + # CALCULATE VALUE LOSS + value_pred_clipped = traj_batch.value + (value - traj_batch.value).clip( + -config["clip_eps"], config["clip_eps"] + ) + value_losses = jnp.square(value - targets) + value_losses_clipped = jnp.square(value_pred_clipped - targets) + value_loss = 0.5 * jnp.maximum(value_losses, value_losses_clipped) + critic_loss = config["vf_coef"] * value_loss.mean() + + # CALCULATE ACTOR LOSS + logratio = log_prob - traj_batch.log_prob + ratio = jnp.exp(logratio) + # if env.do_sep_reward: gae = gae.sum(axis=-1) + gae = (gae - gae.mean()) / (gae.std() + 1e-8) + loss_actor1 = ratio * gae + loss_actor2 = ( + jnp.clip( + ratio, + 1.0 - config["clip_eps"], + 1.0 + config["clip_eps"], + ) + * gae + ) + loss_actor = -jnp.minimum(loss_actor1, loss_actor2) + loss_actor = loss_actor.mean() + entropy = pi.entropy().mean() + + approx_kl = jax.lax.stop_gradient(((ratio - 1) - logratio).mean()) + clipfrac = jax.lax.stop_gradient((jnp.abs(ratio - 1) > config["clip_eps"]).mean()) + + total_loss = loss_actor + critic_loss - config["ent_coef"] * entropy + return total_loss, (value_loss, loss_actor, entropy, ratio, approx_kl, clipfrac) + + grad_fn = jax.value_and_grad(_loss_fn_masked, has_aux=True) + total_loss, grads = grad_fn(train_state.params, init_hstate, traj_batch, advantages, targets) + train_state = train_state.apply_gradients(grads=grads) + return train_state, total_loss + + ( + train_state, + init_hstate, + traj_batch, + advantages, + targets, + rng, + ) = update_state + rng, _rng = jax.random.split(rng) + + init_hstate = jax.tree.map(lambda x: jnp.reshape(x, (256, config["num_train_envs"])), init_hstate) + batch = ( + init_hstate, + traj_batch, + advantages.squeeze(), + targets.squeeze(), + ) + permutation = jax.random.permutation(_rng, config["num_train_envs"]) + + shuffled_batch = jax.tree_util.tree_map(lambda x: jnp.take(x, permutation, axis=1), batch) + + minibatches = jax.tree_util.tree_map( + lambda x: jnp.swapaxes( + jnp.reshape( + x, + [x.shape[0], config["num_minibatches"], -1] + list(x.shape[2:]), + ), + 1, + 0, + ), + shuffled_batch, + ) + + train_state, total_loss = jax.lax.scan(_update_minbatch, train_state, minibatches) + # total_loss = jax.tree.map(lambda x: x.mean(), total_loss) + update_state = ( + train_state, + init_hstate, + traj_batch, + advantages, + targets, + rng, + ) + return update_state, total_loss + + # init_hstate = initial_hstate[None, :].squeeze().transpose() + init_hstate = jax.tree.map(lambda x: x[None, :].squeeze().transpose(), initial_hstate) + update_state = ( + train_state, + init_hstate, + traj_batch, + advantages, + targets, + rng, + ) + update_state, loss_info = jax.lax.scan(_update_epoch, update_state, None, config["update_epochs"]) + train_state = update_state[0] + metric = traj_batch.info + metric = jax.tree.map( + lambda x: x.reshape((config["num_steps"], config["num_train_envs"])), # , env.num_agents + traj_batch.info, + ) + rng = update_state[-1] + + def callback(metric): + dones = metric["dones"] + wandb.log( + { + "episode_return": (metric["returned_episode_returns"] * dones).sum() / jnp.maximum(1, dones.sum()), + "episode_solved": (metric["returned_episode_solved"] * dones).sum() / jnp.maximum(1, dones.sum()), + "episode_length": (metric["returned_episode_lengths"] * dones).sum() / jnp.maximum(1, dones.sum()), + "timing/num_env_steps": int( + int(metric["update_steps"]) * int(config["num_train_envs"]) * int(config["num_steps"]) + ), + "timing/num_updates": metric["update_steps"], + **metric["loss_info"], + } + ) + + loss_info = jax.tree.map(lambda x: x.mean(), loss_info) + metric["loss_info"] = { + "loss/total_loss": loss_info[0], + "loss/value_loss": loss_info[1][0], + "loss/policy_loss": loss_info[1][1], + "loss/entropy_loss": loss_info[1][2], + } + metric["dones"] = traj_batch.done + metric["update_steps"] = update_steps + jax.experimental.io_callback(callback, None, metric) + + # SAMPLE NEW ENVS + rng, _rng, _rng2 = jax.random.split(rng, 3) + rng_reset = jax.random.split(_rng, config["num_envs_to_generate"]) + + new_levels = sample_random_levels(_rng2, config["num_envs_to_generate"]) + obsv_gen, env_state_gen = jax.vmap(env.reset_to_level, in_axes=(0, 0, None))(rng_reset, new_levels, env_params) + + rng, _rng, _rng2 = jax.random.split(rng, 3) + sampled_env_instances_idxs = jax.random.randint(_rng, (config["num_envs_from_sampled"],), 0, num_env_instances) + sampled_env_instances = jax.tree.map(lambda x: x.at[sampled_env_instances_idxs].get(), instances) + myrng = jax.random.split(_rng2, config["num_envs_from_sampled"]) + obsv_sampled, env_state_sampled = jax.vmap(env.reset_to_level, in_axes=(0, 0))(myrng, sampled_env_instances) + + obsv = jax.tree.map(lambda x, y: jnp.concatenate([x, y], axis=0), obsv_gen, obsv_sampled) + env_state = jax.tree.map(lambda x, y: jnp.concatenate([x, y], axis=0), env_state_gen, env_state_sampled) + + start_state = env_state + hstate = ScannedRNN.initialize_carry(config["num_train_envs"]) + + update_steps = update_steps + 1 + runner_state = ( + train_state, + env_state, + start_state, + obsv, + jnp.zeros((config["num_train_envs"]), dtype=bool), + hstate, + update_steps, + rng, + ) + return (runner_state, instances), metric + + def log_buffer(learnability, levels, epoch): + num_samples = levels.polygon.position.shape[0] + states = levels + rows = 2 + fig, axes = plt.subplots(rows, int(num_samples / rows), figsize=(20, 10)) + axes = axes.flatten() + all_imgs = jax.vmap(render_fn)(states) + for i, ax in enumerate(axes): + # ax.imshow(train_state.plr_buffer.get_sample(i)) + score = learnability[i] + ax.imshow(all_imgs[i] / 255.0) + ax.set_xticks([]) + ax.set_yticks([]) + ax.set_title(f"learnability: {score:.3f}") + ax.set_aspect("equal", "box") + + plt.tight_layout() + fig.canvas.draw() + im = Image.frombytes("RGB", fig.canvas.get_width_height(), fig.canvas.tostring_rgb()) + plt.close() + return {"maps": wandb.Image(im)} + + @jax.jit + def train_and_eval_step(runner_state, eval_rng): + + learnability_rng, eval_singleton_rng, eval_sampled_rng, _rng = jax.random.split(eval_rng, 4) + # TRAIN + learnabilty_scores, instances, test_metrics = get_learnability_set(learnability_rng, runner_state[0].params) + + if config["log_learnability_before_after"]: + learn_scores_before, success_score_before = log_buffer_learnability( + learnability_rng, runner_state[0], instances + ) + + print("instance size", sum(x.size for x in jax.tree_util.tree_leaves(instances))) + + runner_state_instances = (runner_state, instances) + runner_state_instances, metrics = jax.lax.scan(train_step, runner_state_instances, None, config["eval_freq"]) + + if config["log_learnability_before_after"]: + learn_scores_after, success_score_after = log_buffer_learnability( + learnability_rng, runner_state_instances[0][0], instances + ) + + # EVAL + rng, rng_eval = jax.random.split(eval_singleton_rng) + (states, cum_rewards, _, episode_lengths, eval_infos), (eval_dones, eval_rewards) = jax.vmap(eval, (0, None))( + jax.random.split(rng_eval, config["eval_num_attempts"]), runner_state_instances[0][0] + ) + all_eval_eplens = episode_lengths + + # Collect Metrics + eval_returns = cum_rewards.mean(axis=0) # (num_eval_levels,) + eval_solves = (eval_infos["returned_episode_solved"] * eval_dones).sum(axis=1) / jnp.maximum( + 1, eval_dones.sum(axis=1) + ) + eval_solves = eval_solves.mean(axis=0) + # just grab the first run + states, episode_lengths = jax.tree_util.tree_map( + lambda x: x[0], (states, episode_lengths) + ) # (num_steps, num_eval_levels, ...), (num_eval_levels,) + # And one attempt + states = jax.tree_util.tree_map(lambda x: x[:, :], states) + episode_lengths = episode_lengths[:] + images = jax.vmap(jax.vmap(render_fn_eval))( + states.env_state.env_state.env_state + ) # (num_steps, num_eval_levels, ...) + frames = images.transpose( + 0, 1, 4, 2, 3 + ) # WandB expects color channel before image dimensions when dealing with animations for some reason + + test_metrics["update_count"] = runner_state[-2] + test_metrics["eval_returns"] = eval_returns + test_metrics["eval_ep_lengths"] = episode_lengths + test_metrics["eval_animation"] = (frames, episode_lengths) + + # Eval on sampled + dr_states, dr_cum_rewards, _, dr_episode_lengths, dr_infos = jax.vmap(eval_on_dr_levels, (0, None))( + jax.random.split(rng_eval, config["eval_num_attempts"]), runner_state_instances[0][0] + ) + + eval_dr_returns = dr_cum_rewards.mean(axis=0).mean() + eval_dr_eplen = dr_episode_lengths.mean(axis=0).mean() + + test_metrics["eval/mean_eval_return_sampled"] = eval_dr_returns + my_eval_dones = dr_infos["returned_episode"] + eval_dr_solves = (dr_infos["returned_episode_solved"] * my_eval_dones).sum(axis=1) / jnp.maximum( + 1, my_eval_dones.sum(axis=1) + ) + + test_metrics["eval/mean_eval_solve_rate_sampled"] = eval_dr_solves + test_metrics["eval/mean_eval_eplen_sampled"] = eval_dr_eplen + + # Collect Metrics + eval_returns = cum_rewards.mean(axis=0) # (num_eval_levels,) + + log_dict = {} + + log_dict["to_remove"] = { + "eval_return": eval_returns, + "eval_solve_rate": eval_solves, + "eval_eplen": all_eval_eplens, + } + + for i, name in enumerate(config["eval_levels"]): + log_dict[f"eval_avg_return/{name}"] = eval_returns[i] + log_dict[f"eval_avg_solve_rate/{name}"] = eval_solves[i] + + log_dict.update({"eval/mean_eval_return": eval_returns.mean()}) + log_dict.update({"eval/mean_eval_solve_rate": eval_solves.mean()}) + log_dict.update({"eval/mean_eval_eplen": all_eval_eplens.mean()}) + + test_metrics.update(log_dict) + + runner_state, _ = runner_state_instances + test_metrics["update_count"] = runner_state[-2] + + top_instances = jax.tree.map(lambda x: x.at[-5:].get(), instances) + + # Eval on top learnable levels + tl_states, tl_cum_rewards, _, tl_episode_lengths, tl_infos = jax.vmap( + eval_on_top_learnable_levels, (0, None, None) + )(jax.random.split(rng_eval, config["eval_num_attempts"]), runner_state_instances[0][0], top_instances) + + # just grab the first run + states, episode_lengths = jax.tree_util.tree_map( + lambda x: x[0], (tl_states, tl_episode_lengths) + ) # (num_steps, num_eval_levels, ...), (num_eval_levels,) + # And one attempt + states = jax.tree_util.tree_map(lambda x: x[:, :], states) + episode_lengths = episode_lengths[:] + images = jax.vmap(jax.vmap(render_fn))( + states.env_state.env_state.env_state + ) # (num_steps, num_eval_levels, ...) + frames = images.transpose( + 0, 1, 4, 2, 3 + ) # WandB expects color channel before image dimensions when dealing with animations for some reason + + test_metrics["top_learnable_animation"] = (frames, episode_lengths, tl_cum_rewards) + + if config["log_learnability_before_after"]: + + def single(x, name): + return { + f"{name}_mean": x.mean(), + f"{name}_std": x.std(), + f"{name}_min": x.min(), + f"{name}_max": x.max(), + f"{name}_median": jnp.median(x), + } + + test_metrics["learnability_log_v2/"] = { + **single(learn_scores_before, "learnability_before"), + **single(learn_scores_after, "learnability_after"), + **single(success_score_before, "success_score_before"), + **single(success_score_after, "success_score_after"), + } + + return runner_state, (learnabilty_scores.at[-20:].get(), top_instances), test_metrics + + rng, _rng = jax.random.split(rng) + runner_state = ( + train_state, + env_state, + start_state, + obsv, + jnp.zeros((config["num_train_envs"]), dtype=bool), + init_hstate, + 0, + _rng, + ) + + def log_eval(stats): + log_dict = {} + + to_remove = stats["to_remove"] + del stats["to_remove"] + + def _aggregate_per_size(values, name): + to_return = {} + for group_name, indices in eval_group_indices.items(): + to_return[f"{name}_{group_name}"] = values[indices].mean() + return to_return + + env_steps = stats["update_count"] * config["num_train_envs"] * config["num_steps"] + env_steps_delta = config["eval_freq"] * config["num_train_envs"] * config["num_steps"] + time_now = time.time() + log_dict = { + "timing/num_updates": stats["update_count"], + "timing/num_env_steps": env_steps, + "timing/sps": env_steps_delta / stats["time_delta"], + "timing/sps_agg": env_steps / (time_now - time_start), + } + log_dict.update(_aggregate_per_size(to_remove["eval_return"], "eval_aggregate/return")) + log_dict.update(_aggregate_per_size(to_remove["eval_solve_rate"], "eval_aggregate/solve_rate")) + + for i in range((len(config["eval_levels"]))): + frames, episode_length = stats["eval_animation"][0][:, i], stats["eval_animation"][1][i] + frames = np.array(frames[:episode_length]) + log_dict.update( + { + f"media/eval_video_{config['eval_levels'][i]}": wandb.Video( + frames.astype(np.uint8), fps=15, caption=f"(len {episode_length})" + ) + } + ) + + for j in range(5): + frames, episode_length, cum_rewards = ( + stats["top_learnable_animation"][0][:, j], + stats["top_learnable_animation"][1][j], + stats["top_learnable_animation"][2][:, j], + ) # num attempts + rr = "|".join([f"{r:<.2f}" for r in cum_rewards]) + frames = np.array(frames[:episode_length]) + log_dict.update( + { + f"media/tl_animation_{j}": wandb.Video( + frames.astype(np.uint8), fps=15, caption=f"(len {episode_length})\n{rr}" + ) + } + ) + + stats.update(log_dict) + wandb.log(stats, step=stats["update_count"]) + + checkpoint_steps = config["checkpoint_save_freq"] + assert config["num_updates"] % config["eval_freq"] == 0, "num_updates must be divisible by eval_freq" + + for eval_step in range(int(config["num_updates"] // config["eval_freq"])): + start_time = time.time() + rng, eval_rng = jax.random.split(rng) + runner_state, instances, metrics = train_and_eval_step(runner_state, eval_rng) + curr_time = time.time() + metrics.update(log_buffer(*instances, metrics["update_count"])) + metrics["time_delta"] = curr_time - start_time + metrics["steps_per_section"] = (config["eval_freq"] * config["num_steps"] * config["num_train_envs"]) / metrics[ + "time_delta" + ] + log_eval(metrics) + if ((eval_step + 1) * config["eval_freq"]) % checkpoint_steps == 0: + if config["save_path"] is not None: + steps = int(metrics["update_count"]) * int(config["num_train_envs"]) * int(config["num_steps"]) + # save_params_to_wandb(runner_state[0].params, steps, config) + save_model_to_wandb(runner_state[0], steps, config) + + if config["save_path"] is not None: + # save_params_to_wandb(runner_state[0].params, config["total_timesteps"], config) + save_model_to_wandb(runner_state[0], config["total_timesteps"], config) + + +if __name__ == "__main__": + # with jax.disable_jit(): + # main() + main() diff --git a/Kinetix/images/bb.gif b/Kinetix/images/bb.gif new file mode 100644 index 0000000000000000000000000000000000000000..5e08a6800a8f422d0c6d72885cfcd185b2964f42 Binary files /dev/null and b/Kinetix/images/bb.gif differ diff --git a/Kinetix/images/cartpole.gif b/Kinetix/images/cartpole.gif new file mode 100644 index 0000000000000000000000000000000000000000..c3e431d30b3982c9d09a0dac5b489de49425380b Binary files /dev/null and b/Kinetix/images/cartpole.gif differ diff --git a/Kinetix/images/docs/edit-1.png b/Kinetix/images/docs/edit-1.png new file mode 100644 index 0000000000000000000000000000000000000000..642779306683c2b5448e25fcf0b70c5063a7782e Binary files /dev/null and b/Kinetix/images/docs/edit-1.png differ diff --git a/Kinetix/images/docs/edit-2.png b/Kinetix/images/docs/edit-2.png new file mode 100644 index 0000000000000000000000000000000000000000..1c35b40fe72c75f32df3fa35c797c8528a5825b8 Binary files /dev/null and b/Kinetix/images/docs/edit-2.png differ diff --git a/Kinetix/images/docs/wandb.gif b/Kinetix/images/docs/wandb.gif new file mode 100644 index 0000000000000000000000000000000000000000..a226638729ea387d00b4de7d3d163d9a3fd739b1 Binary files /dev/null and b/Kinetix/images/docs/wandb.gif differ diff --git a/Kinetix/images/general_1.gif b/Kinetix/images/general_1.gif new file mode 100644 index 0000000000000000000000000000000000000000..b6d22af238759689830cea3e4d0ee5e333e834f2 Binary files /dev/null and b/Kinetix/images/general_1.gif differ diff --git a/Kinetix/images/general_2.gif b/Kinetix/images/general_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..9c266c9a36aaac74a862f96034ea0a868a7d8e31 --- /dev/null +++ b/Kinetix/images/general_2.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3fb2253184f9752bef0c04e2a1eae2d4e44e059f75335e192d89cbd0635f295 +size 1335813 diff --git a/Kinetix/images/general_3.gif b/Kinetix/images/general_3.gif new file mode 100644 index 0000000000000000000000000000000000000000..b02e456339291f96e08512d2df5805ad3f1b3246 Binary files /dev/null and b/Kinetix/images/general_3.gif differ diff --git a/Kinetix/images/general_4.gif b/Kinetix/images/general_4.gif new file mode 100644 index 0000000000000000000000000000000000000000..654fa6081e1b403a687a85de7b06a18e159cffc3 Binary files /dev/null and b/Kinetix/images/general_4.gif differ diff --git a/Kinetix/images/general_5.gif b/Kinetix/images/general_5.gif new file mode 100644 index 0000000000000000000000000000000000000000..90b059e17b60eaee8169253948a00369208c16e0 Binary files /dev/null and b/Kinetix/images/general_5.gif differ diff --git a/Kinetix/images/general_6.gif b/Kinetix/images/general_6.gif new file mode 100644 index 0000000000000000000000000000000000000000..71b2f9c7ee4495e45ee92d18aa86402a1fbad5fc Binary files /dev/null and b/Kinetix/images/general_6.gif differ diff --git a/Kinetix/images/grasper.gif b/Kinetix/images/grasper.gif new file mode 100644 index 0000000000000000000000000000000000000000..f2e2ddb4c6baa58d30360e23726166f46c283a9d Binary files /dev/null and b/Kinetix/images/grasper.gif differ diff --git a/Kinetix/images/hc.gif b/Kinetix/images/hc.gif new file mode 100644 index 0000000000000000000000000000000000000000..6638e6d42baf82304c7b37b370d3c991c5fce6db Binary files /dev/null and b/Kinetix/images/hc.gif differ diff --git a/Kinetix/images/hopper.gif b/Kinetix/images/hopper.gif new file mode 100644 index 0000000000000000000000000000000000000000..95d32cd1575c83b45ed52b74681093505811a115 Binary files /dev/null and b/Kinetix/images/hopper.gif differ diff --git a/Kinetix/images/kinetix_logo.gif b/Kinetix/images/kinetix_logo.gif new file mode 100644 index 0000000000000000000000000000000000000000..fefcfed60162ec41887fa8aebb362e4550dda4c7 --- /dev/null +++ b/Kinetix/images/kinetix_logo.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:457a6af90aa224c60b6912a2089839e94ee759086e1b649d1e953272f3506ece +size 2531850 diff --git a/Kinetix/images/ll.gif b/Kinetix/images/ll.gif new file mode 100644 index 0000000000000000000000000000000000000000..554cb324088f9cfc44b20b3cd742cd1cd9211c07 Binary files /dev/null and b/Kinetix/images/ll.gif differ diff --git a/Kinetix/images/random_1.gif b/Kinetix/images/random_1.gif new file mode 100644 index 0000000000000000000000000000000000000000..bdc4b92d6348b4adf66102487e1a642a9fafdce5 --- /dev/null +++ b/Kinetix/images/random_1.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5979e57f6fc1aec600e44f544665510c37428db676e27756bb2ae46fda8bae8 +size 1621042 diff --git a/Kinetix/images/random_3.gif b/Kinetix/images/random_3.gif new file mode 100644 index 0000000000000000000000000000000000000000..158e9d31ab8ef048c9c39593680713eded981095 --- /dev/null +++ b/Kinetix/images/random_3.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ed794af4c4a3cfe078fcbd9a1e0391858176136ca20cc93512fb5f425f0fcfb +size 1140249 diff --git a/Kinetix/images/random_4.gif b/Kinetix/images/random_4.gif new file mode 100644 index 0000000000000000000000000000000000000000..4bf8dc3297e51d461217b54af0b2581b9bebceb0 --- /dev/null +++ b/Kinetix/images/random_4.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb4a39a9b2441e19ee7e6e7a20b168d2946af10c133b9875771040cc56dce3ce +size 1847078 diff --git a/Kinetix/images/random_5.gif b/Kinetix/images/random_5.gif new file mode 100644 index 0000000000000000000000000000000000000000..058d2a4316fc2fc026ae1c085be2f492b54c44b5 --- /dev/null +++ b/Kinetix/images/random_5.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c7e4b2fc38b5a3d5e6693dd3a758390ab77307cf00f0b8422dce2e01019cb79 +size 1855684 diff --git a/Kinetix/images/random_6.gif b/Kinetix/images/random_6.gif new file mode 100644 index 0000000000000000000000000000000000000000..e11bcba58899923c7e0fbe1969364ef395fe0789 --- /dev/null +++ b/Kinetix/images/random_6.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:191b74554cb3bff8f84f1b1f69569868f3f11afbed149862ddbef155ab855790 +size 1532884 diff --git a/Kinetix/images/random_7.gif b/Kinetix/images/random_7.gif new file mode 100644 index 0000000000000000000000000000000000000000..8c65cc7f238dad918cc51ad9a8138a5a79215866 --- /dev/null +++ b/Kinetix/images/random_7.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1a4b51ae975f75715e60299fff43a6fa0768c07db5ad18d11387474be6fb92c6 +size 1593216 diff --git a/Kinetix/kinetix/__init__.py b/Kinetix/kinetix/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Kinetix/kinetix/assets/circle.png b/Kinetix/kinetix/assets/circle.png new file mode 100644 index 0000000000000000000000000000000000000000..8add99128e9c9dbb899e1ac96427a2053ff32792 Binary files /dev/null and b/Kinetix/kinetix/assets/circle.png differ diff --git a/Kinetix/kinetix/assets/edit.png b/Kinetix/kinetix/assets/edit.png new file mode 100644 index 0000000000000000000000000000000000000000..2c32f45805c467d635116665eccdb8db588b2c5f Binary files /dev/null and b/Kinetix/kinetix/assets/edit.png differ diff --git a/Kinetix/kinetix/assets/fjoint.png b/Kinetix/kinetix/assets/fjoint.png new file mode 100644 index 0000000000000000000000000000000000000000..1a429db088260879ecd67e2a4cbff00b464fb937 Binary files /dev/null and b/Kinetix/kinetix/assets/fjoint.png differ diff --git a/Kinetix/kinetix/assets/fjoint2.png b/Kinetix/kinetix/assets/fjoint2.png new file mode 100644 index 0000000000000000000000000000000000000000..45fd41ef052888352dd8ed10e021e1acde28d2b1 Binary files /dev/null and b/Kinetix/kinetix/assets/fjoint2.png differ diff --git a/Kinetix/kinetix/assets/hand.png b/Kinetix/kinetix/assets/hand.png new file mode 100644 index 0000000000000000000000000000000000000000..4c284de2a4230a056bf2b503cc0af59d91f50398 Binary files /dev/null and b/Kinetix/kinetix/assets/hand.png differ diff --git a/Kinetix/kinetix/assets/joint.png b/Kinetix/kinetix/assets/joint.png new file mode 100644 index 0000000000000000000000000000000000000000..39021a6e59ccd2c7d6a07ee4591951db7fad270f Binary files /dev/null and b/Kinetix/kinetix/assets/joint.png differ diff --git a/Kinetix/kinetix/assets/play.png b/Kinetix/kinetix/assets/play.png new file mode 100644 index 0000000000000000000000000000000000000000..95887321d51571dee6add4a5d7ed160387ff36f4 Binary files /dev/null and b/Kinetix/kinetix/assets/play.png differ diff --git a/Kinetix/kinetix/assets/rjoint.png b/Kinetix/kinetix/assets/rjoint.png new file mode 100644 index 0000000000000000000000000000000000000000..f93808008bd23ade93fc3e3c0fc5b682043b9f17 Binary files /dev/null and b/Kinetix/kinetix/assets/rjoint.png differ diff --git a/Kinetix/kinetix/assets/rjoint2.png b/Kinetix/kinetix/assets/rjoint2.png new file mode 100644 index 0000000000000000000000000000000000000000..5ccfed37dc34968ce92a38a8ad24204b774d2747 Binary files /dev/null and b/Kinetix/kinetix/assets/rjoint2.png differ diff --git a/Kinetix/kinetix/assets/rotate.png b/Kinetix/kinetix/assets/rotate.png new file mode 100644 index 0000000000000000000000000000000000000000..70e05be4ab9b112122884f63fac04ba2fba3d304 Binary files /dev/null and b/Kinetix/kinetix/assets/rotate.png differ diff --git a/Kinetix/kinetix/assets/square.png b/Kinetix/kinetix/assets/square.png new file mode 100644 index 0000000000000000000000000000000000000000..151c1828682e495b8fa2ed6991f2097f9698ebed Binary files /dev/null and b/Kinetix/kinetix/assets/square.png differ diff --git a/Kinetix/kinetix/assets/thruster.png b/Kinetix/kinetix/assets/thruster.png new file mode 100644 index 0000000000000000000000000000000000000000..65fe2773913f27e33b46cf376e288ffbfdd102b8 Binary files /dev/null and b/Kinetix/kinetix/assets/thruster.png differ diff --git a/Kinetix/kinetix/assets/thruster6.png b/Kinetix/kinetix/assets/thruster6.png new file mode 100644 index 0000000000000000000000000000000000000000..c73c04fcee7f4ea3bd992f4e6c5b584f38a02130 Binary files /dev/null and b/Kinetix/kinetix/assets/thruster6.png differ diff --git a/Kinetix/kinetix/assets/triangle.png b/Kinetix/kinetix/assets/triangle.png new file mode 100644 index 0000000000000000000000000000000000000000..7f455a85091aeeb160ba62554cb7e66a781d4f7a Binary files /dev/null and b/Kinetix/kinetix/assets/triangle.png differ diff --git a/Kinetix/kinetix/editor.py b/Kinetix/kinetix/editor.py new file mode 100644 index 0000000000000000000000000000000000000000..fef599048d7bbe2519d8dbec4eed00b884918a5e --- /dev/null +++ b/Kinetix/kinetix/editor.py @@ -0,0 +1,2671 @@ +import itertools +import time +from timeit import default_timer as tmr + +import optax +from PIL import Image +from flax.serialization import to_state_dict +from flax.training.train_state import TrainState + +from matplotlib import pyplot as plt + +from kinetix.environment.ued.distributions import sample_kinetix_level +from kinetix.models import make_network_from_config +from kinetix.models.actor_critic import ScannedRNN +from kinetix.render.renderer_symbolic_entity import make_render_entities + +ss = tmr() + +import jax + +jax.config.update("jax_compilation_cache_dir", ".cache-location") + +import hydra +from omegaconf import OmegaConf + +from kinetix.environment.ued.mutators import ( + make_mutate_change_shape_rotation, + mutate_add_connected_shape, + mutate_add_shape, + make_mutate_change_shape_size, + mutate_change_shape_location, + mutate_swap_role, + mutate_remove_shape, + mutate_remove_joint, + mutate_toggle_fixture, + mutate_add_thruster, + mutate_remove_thruster, +) +from kinetix.environment.ued.ued import make_mutate_env, ALL_MUTATION_FNS +from kinetix.environment.ued.ued_state import UEDParams +from kinetix.environment.ued.util import rectangle_vertices +from kinetix.util.config import generate_params_from_config, normalise_config + + +import argparse +import os +import sys + +sys.path.append("editor") +import tkinter +import tkinter.filedialog +from enum import Enum +from timeit import default_timer as tmr + +import jax.numpy as jnp +import numpy as np +import pygame +import pygame_widgets +from pygame_widgets.slider import Slider +from pygame_widgets.textbox import TextBox +from pygame_widgets.toggle import Toggle + +from jax2d.engine import ( + calc_inverse_inertia_circle, + calc_inverse_inertia_polygon, + calc_inverse_mass_circle, + calc_inverse_mass_polygon, + calculate_collision_matrix, + recalculate_mass_and_inertia, + recompute_global_joint_positions, + select_shape, +) +from jax2d.maths import rmat +from jax2d.sim_state import RigidBody +from kinetix.environment.env import ( + create_empty_env, + make_kinetix_env_from_name, +) +from kinetix.environment.env_state import EnvParams, EnvState, StaticEnvParams +from kinetix.environment.utils import permute_pcg_state +from kinetix.environment.wrappers import AutoResetWrapper +from kinetix.pcg.pcg import env_state_to_pcg_state, sample_pcg_state +from kinetix.pcg.pcg_state import PCGState +from kinetix.render.renderer_pixels import make_render_pixels +from kinetix.render.textures import ( + CIRCLE_TEXTURE_RGBA, + EDIT_TEXTURE_RGBA, + PLAY_TEXTURE_RGBA, + RECT_TEXTURE_RGBA, + RJOINT_TEXTURE_RGBA, + SELECT_TEXTURE_RGBA, + THRUSTER_TEXTURE_RGBA, + TRIANGLE_TEXTURE_RGBA, +) +from kinetix.util.saving import ( + expand_pcg_state, + export_env_state_to_json, + get_pcg_state_from_json, + load_from_json_file, + load_pcg_state_pickle, + load_world_state_pickle, + save_pickle, + load_params_from_wandb_artifact_path, + load_train_state_from_wandb_artifact_path, +) +from kinetix.util.timing import time_function +from tkinter import Tk + +root = Tk() +root.destroy() + +ee = tmr() +print(f"Imported in {ee - ss} seconds") + +editor = None +outer_timer = tmr() +EMPTY_ENV = False + + +class ObjectType(Enum): + POLYGON = 0 + CIRCLE = 1 + JOINT = 2 + THRUSTER = 3 + + +class EditMode(Enum): + ADD_CIRCLE = 0 + ADD_RECTANGLE = 1 + ADD_JOINT = 2 + SELECT = 3 + ADD_TRIANGLE = 4 + ADD_THRUSTER = 5 + + +TOTAL_DUMMY_STEPS_TO_SNAP = 0 +SNAPPING_DIST = 0.1 + + +def select_object(state: EnvState, type: int, index: int): + if type is None: + type = ObjectType.POLYGON + li = {0: state.polygon, 1: state.circle, 2: state.joint, 3: state.thruster}[type.value] + return jax.tree.map(lambda x: x[index], li) + + +def snap_to_center(shape: RigidBody, position: jnp.ndarray): + if jnp.linalg.norm(shape.position - position) < SNAPPING_DIST: + return shape.position + return position + + +def snap_to_polygon_center_line(polygon: RigidBody, position: jnp.ndarray): + # Snap to the center line + r = rmat(polygon.rotation) + x = jnp.matmul(r, position - polygon.position) + if jnp.abs(x[0]) < SNAPPING_DIST: + x = x.at[0].set(0.0) + if jnp.abs(x[1]) < SNAPPING_DIST: + x = x.at[1].set(0.0) + x = jnp.matmul(r.transpose(), x) + return x + polygon.position + + +def snap_to_circle_center_line(circle: RigidBody, position: jnp.ndarray): + # Snap to the center line, i.e. on the edge of the circle, if the position is close enough to directly below the circle, etc., snap the position to that + x = position - circle.position + if jnp.linalg.norm(x) < SNAPPING_DIST: + return circle.position + angle = (jnp.arctan2(x[1], x[0]) + 2 * jnp.pi) % (2 * jnp.pi) + + for i in range(0, 8): + if jnp.abs(angle - i * jnp.pi / 4) < jnp.radians(25): # 25 degrees + angle = i * jnp.pi / 4 + break + x = jnp.array([jnp.cos(angle), jnp.sin(angle)]) * circle.radius + return x + circle.position + + +def prompt_file(save=False): + dir = os.path.join(os.path.dirname(os.path.dirname(__file__)), "worlds") + """Create a Tk file dialog and cleanup when finished""" + top = tkinter.Tk() + top.withdraw() # hide window + if save: + file_name = tkinter.filedialog.asksaveasfilename(parent=top, initialdir=dir) + else: + file_name = tkinter.filedialog.askopenfilename(parent=top, initialdir=dir) + top.destroy() + return file_name + + +def get_numeric_key_pressed(pygame_events, is_mod=False): + for event in pygame_events: + if not is_mod: + if event.type == pygame.KEYDOWN and event.unicode.isdigit(): + return int(event.unicode) + else: + if event.type == pygame.KEYDOWN: + pass + if event.type == pygame.KEYDOWN and event.key in [pygame.K_0 + i for i in range(10)]: + return int(event.key - pygame.K_0) + return None + + +def new_env(static_env_params): + return create_empty_env(static_env_params) + + +myrng = jax.random.PRNGKey(0) + + +def make_reset_function(static_env_params): + def reset(rng): + return env_state_to_pcg_state(create_empty_env(static_env_params)) + + return reset + + +def new_pcg_env(static_env_params): + global myrng + if EMPTY_ENV: + env_state = create_empty_env(static_env_params) + else: + return get_pcg_state_from_json("worlds/l/h0_angrybirds.json") + return env_state_to_pcg_state(env_state) + + +class Editor: + def __init__(self, env, env_params, config, upscale=1): + self.env = env + self.upscale = upscale + self.env_params = env_params + self.static_env_params = env.static_env_params + self.ued_params = UEDParams() + + self.side_panel_width = env.static_env_params.screen_dim[0] // 3 + + self.rng = jax.random.PRNGKey(0) + self.config = config + self.pcg_state = new_pcg_env(self.static_env_params) + + self.rng, _rng = jax.random.split(self.rng) + self.play_state = sample_pcg_state(_rng, self.pcg_state, self.env_params, self.static_env_params) + self.last_played_level = None + + self.pygame_events = [] + + self.mutate_world = make_mutate_env(env.static_env_params, env_params, self.ued_params) + + self.num_triangle_clicks = 0 + self.triangle_order = jnp.array([0, 1, 2]) + + # Init rendering + pygame.init() + pygame.key.set_repeat(250, 75) + + self.screen_surface = pygame.display.set_mode( + tuple( + (t + extra) * self.upscale + for t, extra in zip(self.static_env_params.screen_dim, (self.side_panel_width, 0)) + ), + display=0, + ) + self.all_widgets = {} + self._setup_side_panel() + self.has_done_action = False + + self._setup_rendering(self.static_env_params, env_params) + + self._render_edit_overlay_fn = jax.jit(self._render_edit_overlay) + self._step_fn = jax.jit(env.step) + + # Agent + if self.config["agent_taking_actions"]: + self._entity_renderer = jax.jit(make_render_entities(env_params, self.env.static_env_params)) + self.network = make_network_from_config(env, env_params, config) + + rng = jax.random.PRNGKey(0) + dones = jnp.zeros((config["num_train_envs"]), dtype=jnp.bool_) + rng, _rng = jax.random.split(rng) + init_hstate = ScannedRNN.initialize_carry(config["num_train_envs"]) + obsv = self._entity_renderer(self.play_state) + obsv = jax.tree.map(lambda x: jnp.repeat(x[None, ...], repeats=config["num_train_envs"], axis=0), obsv) + init_x = jax.tree.map(lambda x: x[None, ...], (obsv, dones)) + network_params = self.network.init(_rng, init_hstate, init_x) + + tx = optax.chain( + optax.clip_by_global_norm(config["max_grad_norm"]), + optax.adam(config["lr"], eps=1e-5), + ) + self.train_state = TrainState.create( + apply_fn=self.network.apply, + params=network_params, + tx=tx, + ) + + self.train_state = load_train_state_from_wandb_artifact_path(self.train_state, config["agent_wandb_path"]) + + self.apply_fn = jax.jit(self.network.apply) + + # JIT Compile + def _jit_step(): + rng = jax.random.PRNGKey(0) + ans = self._step_fn( + rng, + self.env.reset_env_to_level(rng, self.play_state, self.env_params)[1], + jnp.zeros( + env.static_env_params.num_motor_bindings + env.static_env_params.num_thruster_bindings, dtype=int + ), + self.env_params, + ) + + def _jit_render(): + self._render_fn(self.play_state) + self._render_fn_edit(self.play_state) + + time_function(_jit_step, "_jit_step") + time_function(_jit_render, "_jit_render") + + # self._step_fn(rng, self.play_state, 0, self.env_params) + + # Editing + self.is_editing = True + + self.edit_shape_mode = EditMode.ADD_CIRCLE + self.creating_shape = False + self.create_shape_position = jnp.array([0.0, 0.0]) + self.creating_shape_index = 0 + self.selected_shape_index = -1 + self.selected_shape_type = ObjectType.POLYGON + + self.all_selected_shapes = [] + + self.rng = jax.random.PRNGKey(0) + time_function(self._jit, "self._jit") + self._put_state_values_into_gui(self.pcg_state) + + self.mutate_change_shape_size = make_mutate_change_shape_size(self.env_params, self.static_env_params) + self.mutate_change_shape_rotation = make_mutate_change_shape_rotation(self.env_params, self.static_env_params) + + def _setup_rendering(self, static_env_params: StaticEnvParams, env_params: EnvParams): + def _make_render(should_do_edit_additions=False): + def _render(env_state): + side_panel = self._render_side_panel() + render_pixels = make_render_pixels(params=env_params, static_params=static_env_params) + pixels = render_pixels( + env_state, + ) + pixels = jnp.concatenate([side_panel, pixels], axis=0) + + pixels = jnp.repeat(pixels, repeats=static_env_params.downscale * self.upscale, axis=0) + pixels = jnp.repeat(pixels, repeats=static_env_params.downscale * self.upscale, axis=1) + + return pixels[:, ::-1, :] + + return _render + + def _make_screenshot_render(): + def _render(env_state): + px_upscale = 4 + + static_params = static_env_params.replace(screen_dim=(500 * px_upscale, 500 * px_upscale)) + ss_env_params = env_params.replace( + pixels_per_unit=100 * px_upscale, + ) + + render_pixels = make_render_pixels( + params=ss_env_params, + static_params=static_params, + render_rjoint_sectors=False, + pixel_upscale=2 * px_upscale, + ) + pixels = render_pixels( + env_state, + ) + + return pixels[:, ::-1, :] + + return _render + + self._render_fn_edit = jax.jit(_make_render(True)) + self._render_fn = jax.jit(_make_render(False)) + self._render_fn_screenshot = jax.jit(_make_screenshot_render()) + + def _jit(self): + self._get_circles_on_mouse(self.pcg_state.env_state) + self._get_polygons_on_mouse(self.pcg_state.env_state) + self._get_revolute_joints_on_mouse(self.pcg_state.env_state) + self._get_thrusters_on_mouse(self.pcg_state.env_state) + self.pygame_events = list(pygame.event.get()) + self._handle_events(do_dummy=True) + + state = self.play_state + for mutation_fn in ALL_MUTATION_FNS: + mutation_fn(jax.random.PRNGKey(0), state, self.env_params, self.static_env_params, self.ued_params) + + def update(self, rng): + # Update pygame events + self.pygame_events = list(pygame.event.get()) + + for event in self.pygame_events: + if event.type == pygame.KEYDOWN: + if event.key == pygame.K_SPACE: + self.has_done_action = False + self.is_editing = not self.is_editing + if not self.is_editing: + self.pcg_state = self._discard_shape_being_created(self.pcg_state) + self.pcg_state = self._reset_select_shape(self.pcg_state) + self.pcg_state = self.pcg_state.replace( + env_state=self.pcg_state.env_state.replace( + collision_matrix=calculate_collision_matrix( + self.static_env_params, self.pcg_state.env_state.joint + ), + ), + env_state_pcg_mask=self.pcg_state.env_state_pcg_mask.replace( + collision_matrix=jnp.zeros_like(self.pcg_state.env_state_pcg_mask.collision_matrix) + ), + ) + self.rng, _rng = jax.random.split(self.rng) + self.play_state = sample_pcg_state( + _rng, self.pcg_state, self.env_params, self.static_env_params + ) + self.last_played_level = self.play_state + elif event.key == pygame.K_s and not self.is_editing: + self.take_screenshot() + + if self.is_editing: + self.pcg_state = self.edit() + else: + rng, _rng = jax.random.split(rng) + # action = [] + action = jnp.zeros( + self.env.static_env_params.num_motor_bindings + self.env.static_env_params.num_thruster_bindings, + dtype=jnp.int32, + ) + + keys = pygame.key.get_pressed() + if keys[pygame.K_LEFT]: + action = action.at[0].set(1) + if keys[pygame.K_RIGHT]: + action = action.at[0].set(2) + if keys[pygame.K_UP]: + action = action.at[1].set(1) + if keys[pygame.K_DOWN]: + action = action.at[1].set(2) + + if keys[pygame.K_1]: + action = action.at[0 + self.env.static_env_params.num_motor_bindings].set(1) + if keys[pygame.K_2]: + action = action.at[1 + self.env.static_env_params.num_motor_bindings].set(1) + if keys[pygame.K_3]: + action = action.at[2 + self.env.static_env_params.num_motor_bindings].set(1) + if keys[pygame.K_4]: + action = action.at[3 + self.env.static_env_params.num_motor_bindings].set(1) + # if self.has_done_action: action = action * 0 + self.has_done_action = self.has_done_action | (action != 0).any() + + if self.config["agent_taking_actions"]: + obs = self._entity_renderer(self.play_state) + obs = jax.tree.map(lambda x: x[None, ...], obs) + + last_done = jnp.zeros((1, 1), dtype=bool) + ac_in = (jax.tree.map(lambda x: x[np.newaxis, :], obs), last_done[np.newaxis, :]) + hstate = ScannedRNN.initialize_carry(1) + hstate, pi, value = self.apply_fn(self.train_state.params, hstate, ac_in) + rng, _rng = jax.random.split(rng) + action = pi.sample(seed=_rng) + action = action[0, 0] + + _rng, __rng = jax.random.split(_rng) + obs, self.play_state, reward, done, info = self._step_fn( + _rng, self.env.reset_to_level(__rng, self.play_state, self.env_params)[1], action, self.env_params + ) + if done: + self.rng, _rng = jax.random.split(self.rng) + self.play_state = sample_pcg_state(_rng, self.pcg_state, self.env_params, self.static_env_params) + state_to_render = self.pcg_state.env_state if self.is_editing else self.play_state + + self.render(state_to_render) + self._handle_events() + + # Update screen + pygame.display.flip() + + def take_screenshot(self): + print("screenshot!") + + pixels = self._render_fn_screenshot(self.play_state) + mtime = round(time.time() * 1000) + + pixels = pixels.transpose((1, 0, 2)) + + # Black border + border_thickness = 5 + pixels = pixels.at[:, :border_thickness].set(0.0) + pixels = pixels.at[:, -border_thickness:].set(0.0) + pixels = pixels.at[:border_thickness, :].set(0.0) + pixels = pixels.at[-border_thickness:, :].set(0.0) + + im = Image.fromarray(np.array(pixels.astype(jnp.uint8))) + im.save(f"results/screenshot_{str(mtime)}.png") + + def _get_selected_shape_global_indices(self): + def _idx(idx, type): + if type == ObjectType.CIRCLE: + return idx + self.static_env_params.num_polygons + return idx + + indices_to_use = jnp.array([_idx(idx, type) for idx, type in self.all_selected_shapes]) + return indices_to_use + + # flag1 + def _handle_events(self, do_dummy=False): + pygame_widgets.update(self.pygame_events) + if do_dummy or self.selected_shape_index < 0: + gravity_main = self.all_widgets[None]["sldGravity"].getValue() + gravity_max = self.all_widgets[None]["sldMaxGravity"].getValue() + gravity_main, gravity_max = min(gravity_main, gravity_max), max(gravity_main, gravity_max) + gravity_pcg_mask = self.all_widgets[None]["pcgTglGravity"].getValue() + + def _set_single_global(state, gravity): + return state.replace( + gravity=state.gravity.at[1].set(gravity), + ) + + env_state = _set_single_global(self.pcg_state.env_state, gravity_main) + env_state_max = _set_single_global(self.pcg_state.env_state_max, gravity_max) + env_state_pcg_mask = _set_single_global(self.pcg_state.env_state_pcg_mask, gravity_pcg_mask) + if not do_dummy: + self.pcg_state = self.pcg_state.replace( + env_state=env_state, + env_state_max=env_state_max, + env_state_pcg_mask=env_state_pcg_mask, + ) + + if self.edit_shape_mode == EditMode.SELECT or do_dummy: # is on the hand. + if do_dummy or len(self.all_selected_shapes) > 1: + # this processes the tying together. + indices_to_use = self._get_selected_shape_global_indices() + if len(indices_to_use) > 1: + toggle_val = self.all_widgets["TIE_TOGETHER"]["tglTieTogether"].getValue() + idxs = itertools.product(indices_to_use, indices_to_use) + idxs_a = [] + idxs_b = [] + for i, j in idxs: + idxs_a.append(i) + idxs_b.append(j) + idxs = jnp.array(idxs_a), jnp.array(idxs_b) + if toggle_val: + self.pcg_state = self.pcg_state.replace( + tied_together=self.pcg_state.tied_together.at[idxs[0], idxs[1]].set(True) + ) + else: + self.pcg_state = self.pcg_state.replace( + tied_together=self.pcg_state.tied_together.at[idxs[0], idxs[1]].set(False) + ) + if self.selected_shape_index < 0 and not do_dummy: + return + if do_dummy or self.selected_shape_type in [ObjectType.POLYGON, ObjectType.CIRCLE]: # rigidbody + shape_main = select_object( + self.pcg_state.env_state, self.selected_shape_type, self.selected_shape_index + ) + shape_max = select_object( + self.pcg_state.env_state_max, self.selected_shape_type, self.selected_shape_index + ) + + parent_container_main = ( + self.pcg_state.env_state.circle + if self.selected_shape_type == ObjectType.CIRCLE + else self.pcg_state.env_state.polygon + ) + parent_container_max = ( + self.pcg_state.env_state_max.circle + if self.selected_shape_type == ObjectType.CIRCLE + else self.pcg_state.env_state_max.polygon + ) + parent_container_pcg_mask = ( + self.pcg_state.env_state_pcg_mask.circle + if self.selected_shape_type == ObjectType.CIRCLE + else self.pcg_state.env_state_pcg_mask.polygon + ) + + new_density_main = self.all_widgets[self.selected_shape_type]["sldDensity"].getValue() + new_density_max = self.all_widgets[self.selected_shape_type]["sldMaxDensity"].getValue() + density_pcg_mask = self.all_widgets[self.selected_shape_type]["pcgTglDensity"].getValue() + if density_pcg_mask: + new_density_main, new_density_max = min(new_density_main, new_density_max), max( + new_density_main, new_density_max + ) + fixated = self.all_widgets[self.selected_shape_type]["tglFixate"].getValue() + + fix_val = 0.0 if fixated else 1.0 + + def _density_calcs(base, new_density): + inv_mass = jax.lax.select( + self.selected_shape_type == ObjectType.CIRCLE, + calc_inverse_mass_circle(base.radius, new_density), + calc_inverse_mass_polygon(base.vertices, base.n_vertices, self.static_env_params, new_density)[ + 0 + ], + ) + inv_inertia = jax.lax.select( + self.selected_shape_type == ObjectType.CIRCLE, + calc_inverse_inertia_circle(base.radius, new_density), + calc_inverse_inertia_polygon( + base.vertices, base.n_vertices, self.static_env_params, new_density + ), + ) + + return inv_mass, inv_inertia + + inv_mass_main, inv_inertia_main = _density_calcs(shape_main, new_density_main) + inv_mass_max, inv_inertia_max = _density_calcs(shape_max, new_density_max) + + friction_main = self.all_widgets[self.selected_shape_type]["sldFriction"].getValue() + friction_max = self.all_widgets[self.selected_shape_type]["sldMaxFriction"].getValue() + friction_pcg_mask = self.all_widgets[self.selected_shape_type]["pcgTglFriction"].getValue() + if friction_pcg_mask: + friction_main, friction_max = min(friction_main, friction_max), max(friction_main, friction_max) + + restitution = self.all_widgets[self.selected_shape_type]["sldRestitution"].getValue() + + position_main = jnp.array( + [ + self.all_widgets[self.selected_shape_type]["sldPosition_X"].getValue(), + self.all_widgets[self.selected_shape_type]["sldPosition_Y"].getValue(), + ] + ) + + position_max = jnp.array( + [ + self.all_widgets[self.selected_shape_type]["sldMaxPosition_X"].getValue(), + self.all_widgets[self.selected_shape_type]["sldMaxPosition_Y"].getValue(), + ] + ) + position_pcg_mask = self.all_widgets[self.selected_shape_type]["pcgTglPosition_X"].getValue() + if position_pcg_mask: + position_main, position_max = jnp.minimum(position_main, position_max), jnp.maximum( + position_main, position_max + ) + + rotation_main = self.all_widgets[self.selected_shape_type]["sldRotation"].getValue() + rotation_max = self.all_widgets[self.selected_shape_type]["sldMaxRotation"].getValue() + rotation_pcg_mask = self.all_widgets[self.selected_shape_type]["pcgTglRotation"].getValue() + if rotation_pcg_mask: + rotation_main, rotation_max = min(rotation_main, rotation_max), max(rotation_main, rotation_max) + + velocity_main = jnp.array( + [ + self.all_widgets[self.selected_shape_type]["sldVelocity_X"].getValue(), + self.all_widgets[self.selected_shape_type]["sldVelocity_Y"].getValue(), + ] + ) + + velocity_max = jnp.array( + [ + self.all_widgets[self.selected_shape_type]["sldMaxVelocity_X"].getValue(), + self.all_widgets[self.selected_shape_type]["sldMaxVelocity_Y"].getValue(), + ] + ) + velocity_main, velocity_max = jnp.minimum(velocity_main, velocity_max), jnp.maximum( + velocity_main, velocity_max + ) + velocity_pcg_mask = self.all_widgets[self.selected_shape_type]["pcgTglVelocity_X"].getValue() + + angular_velocity_main = self.all_widgets[self.selected_shape_type]["sldAngular_Velocity"].getValue() + angular_velocity_max = self.all_widgets[self.selected_shape_type]["sldMaxAngular_Velocity"].getValue() + angular_velocity_pcg_mask = self.all_widgets[self.selected_shape_type][ + "pcgTglAngular_Velocity" + ].getValue() + if angular_velocity_pcg_mask: + angular_velocity_main, angular_velocity_max = min(angular_velocity_main, angular_velocity_max), max( + angular_velocity_main, angular_velocity_max + ) + + # Circle stuff + radius_main, radius_max, radius_pcg_mask = None, None, None + if self.selected_shape_type == ObjectType.CIRCLE: + radius_main = self.all_widgets[self.selected_shape_type]["sldRadius"].getValue() + radius_max = self.all_widgets[self.selected_shape_type]["sldMaxRadius"].getValue() + radius_pcg_mask = self.all_widgets[self.selected_shape_type]["pcgTglRadius"].getValue() + + # Poly stuff + vertices_main, vertices_max, vertices_pcg_mask = None, None, None + if self.selected_shape_type == ObjectType.POLYGON: + # Triangle + new_size_main = self.all_widgets[self.selected_shape_type]["sldSize"].getValue() + new_size_max = self.all_widgets[self.selected_shape_type]["sldMaxSize"].getValue() + + current_size = jnp.abs(self.pcg_state.env_state.polygon.vertices[self.selected_shape_index]).max() + scale_main = new_size_main / current_size + scale_max = new_size_max / current_size + + vertices_main = self.pcg_state.env_state.polygon.vertices[self.selected_shape_index] * scale_main + vertices_max = self.pcg_state.env_state.polygon.vertices[self.selected_shape_index] * scale_max + vertices_pcg_mask = ( + jnp.ones_like(vertices_main, dtype=bool) + * self.all_widgets[self.selected_shape_type]["pcgTglSize"].getValue() + ) + + def _set_single_state_rbody( + state, + parent_container, + density, + inv_mass, + inv_inertia, + friction, + position, + radius, + rotation, + velocity, + angular_velocity, + vertices, + ): + new = { + "friction": parent_container.friction.at[self.selected_shape_index].set(friction), + "collision_mode": parent_container.collision_mode.at[self.selected_shape_index].set( + int(self.all_widgets[self.selected_shape_type]["sldCollidability"].getValue()) + ), + "inverse_mass": parent_container.inverse_mass.at[self.selected_shape_index].set( + inv_mass * fix_val + ), + "inverse_inertia": parent_container.inverse_inertia.at[self.selected_shape_index].set( + inv_inertia * fix_val + ), + "position": parent_container.position.at[self.selected_shape_index].set(position), + "rotation": parent_container.rotation.at[self.selected_shape_index].set(rotation), + "velocity": parent_container.velocity.at[self.selected_shape_index].set(velocity), + "angular_velocity": parent_container.angular_velocity.at[self.selected_shape_index].set( + angular_velocity + ), + "restitution": parent_container.restitution.at[self.selected_shape_index].set(restitution), + } + + if self.selected_shape_type == ObjectType.CIRCLE: + state = state.replace( + circle=state.circle.replace( + **new, + radius=parent_container.radius.at[self.selected_shape_index].set(radius), + ), + circle_shape_roles=state.circle_shape_roles.at[self.selected_shape_index].set( + int(self.all_widgets[self.selected_shape_type]["sldRole"].getValue()) + ), + circle_densities=state.circle_densities.at[self.selected_shape_index].set(density), + ) + else: + state = state.replace( + polygon=state.polygon.replace( + **new, + vertices=parent_container.vertices.at[self.selected_shape_index].set(vertices), + ), + polygon_shape_roles=state.polygon_shape_roles.at[self.selected_shape_index].set( + int(self.all_widgets[self.selected_shape_type]["sldRole"].getValue()) + ), + polygon_densities=state.polygon_densities.at[self.selected_shape_index].set(density), + ) + + return state + + position_delta = position_main - shape_main.position + env_state = _set_single_state_rbody( + self.pcg_state.env_state, + parent_container_main, + new_density_main, + inv_mass_main, + inv_inertia_main, + friction_main, + position_main, + radius_main, + rotation_main, + velocity_main, + angular_velocity_main, + vertices_main, + ) + env_state_max = _set_single_state_rbody( + self.pcg_state.env_state_max, + parent_container_max, + new_density_max, + inv_mass_max, + inv_inertia_max, + friction_max, + position_max, + radius_max, + rotation_max, + velocity_max, + angular_velocity_max, + vertices_max, + ) + env_state_pcg_mask = _set_single_state_rbody( + self.pcg_state.env_state_pcg_mask, + parent_container_pcg_mask, + density_pcg_mask, + density_pcg_mask, + density_pcg_mask, + friction_pcg_mask, + position_pcg_mask, + radius_pcg_mask, + rotation_pcg_mask, + velocity_pcg_mask, + angular_velocity_pcg_mask, + vertices_pcg_mask, + ) + + # Now, we must also set all of the tied shape's positions + + correct_index = self.selected_shape_index + ( + self.static_env_params.num_polygons if self.selected_shape_type == ObjectType.CIRCLE else 0 + ) + + nonzero_indices = set( + jnp.nonzero(self.pcg_state.tied_together[correct_index].at[correct_index].set(False))[0].tolist() + ) + for idx in nonzero_indices: + if idx < self.static_env_params.num_polygons: + env_state = env_state.replace( + polygon=env_state.polygon.replace( + position=env_state.polygon.position.at[idx].set( + env_state.polygon.position[idx] + position_delta + ) + ) + ) + else: + idx = idx - self.static_env_params.num_polygons + env_state = env_state.replace( + circle=env_state.circle.replace( + position=env_state.circle.position.at[idx].set( + env_state.circle.position[idx] + position_delta + ) + ) + ) + + if not do_dummy: + self.pcg_state = PCGState( + env_state=env_state, + env_state_max=env_state_max, + env_state_pcg_mask=env_state_pcg_mask, + tied_together=self.pcg_state.tied_together, + ) + + if do_dummy or self.selected_shape_type == ObjectType.JOINT: # rjoint + speed_main = self.all_widgets[ObjectType.JOINT]["sldSpeed"].getValue() + speed_max = self.all_widgets[ObjectType.JOINT]["sldMaxSpeed"].getValue() + speed_pcg_mask = self.all_widgets[ObjectType.JOINT]["pcgTglSpeed"].getValue() + if speed_pcg_mask: + speed_main, speed_max = min(speed_main, speed_max), max(speed_main, speed_max) + + power_main = self.all_widgets[ObjectType.JOINT]["sldPower"].getValue() + power_max = self.all_widgets[ObjectType.JOINT]["sldMaxPower"].getValue() + power_pcg_mask = self.all_widgets[ObjectType.JOINT]["pcgTglPower"].getValue() + if power_pcg_mask: + power_main, power_max = min(power_main, power_max), max(power_main, power_max) + + motor_binding_val_min = int(self.all_widgets[ObjectType.JOINT]["sldColour"].getValue()) + motor_binding_val_max = int(self.all_widgets[ObjectType.JOINT]["sldMaxColour"].getValue()) + colour_pcg_mask = self.all_widgets[ObjectType.JOINT]["pcgTglColour"].getValue() + if colour_pcg_mask: + motor_binding_val_min, motor_binding_val_max = min( + motor_binding_val_min, motor_binding_val_max + ), max(motor_binding_val_min, motor_binding_val_max) + + auto_motor_val = self.all_widgets[ObjectType.JOINT]["tglAutoMotor"].getValue() + joint_limits_val = self.all_widgets[ObjectType.JOINT]["tglJointLimits"].getValue() + is_fixed_val = self.all_widgets[ObjectType.JOINT]["tglIsFixedJoint"].getValue() + is_motor_on = self.all_widgets[ObjectType.JOINT]["tglIsMotorOn"].getValue() + + min_rot_val = jnp.deg2rad(self.all_widgets[ObjectType.JOINT]["sldMin_Rotation"].getValue()) + max_rot_val = jnp.deg2rad(self.all_widgets[ObjectType.JOINT]["sldMax_Rotation"].getValue()) + # ensure the min is less than the max + min_rot_val, max_rot_val = min(min_rot_val, max_rot_val), max(min_rot_val, max_rot_val) + + def _set_single_state_joint(state, speed, power, colour): + state = state.replace( + joint=state.joint.replace( + motor_speed=state.joint.motor_speed.at[self.selected_shape_index].set(speed), + motor_power=state.joint.motor_power.at[self.selected_shape_index].set(power), + motor_has_joint_limits=state.joint.motor_has_joint_limits.at[self.selected_shape_index].set( + joint_limits_val + ), + min_rotation=state.joint.min_rotation.at[self.selected_shape_index].set(min_rot_val), + max_rotation=state.joint.max_rotation.at[self.selected_shape_index].set(max_rot_val), + is_fixed_joint=state.joint.is_fixed_joint.at[self.selected_shape_index].set(is_fixed_val), + motor_on=state.joint.motor_on.at[self.selected_shape_index].set(is_motor_on), + ), + motor_bindings=state.motor_bindings.at[self.selected_shape_index].set(colour), + motor_auto=state.motor_auto.at[self.selected_shape_index].set(auto_motor_val), + ) + return state + + env_state = _set_single_state_joint( + self.pcg_state.env_state, + speed_main, + power_main, + motor_binding_val_min, + ) + + env_state_max = _set_single_state_joint( + self.pcg_state.env_state_max, + speed_max, + power_max, + motor_binding_val_max, + ) + + env_state_pcg_mask = _set_single_state_joint( + self.pcg_state.env_state_pcg_mask, speed_pcg_mask, power_pcg_mask, colour_pcg_mask + ) + if not do_dummy: + self.pcg_state = self.pcg_state.replace( + env_state=env_state, + env_state_max=env_state_max, + env_state_pcg_mask=env_state_pcg_mask, + ) + + if do_dummy or self.selected_shape_type == ObjectType.THRUSTER: # thruster + power_main = self.all_widgets[ObjectType.THRUSTER]["sldPower"].getValue() + power_max = self.all_widgets[ObjectType.THRUSTER]["sldMaxPower"].getValue() + power_pcg_mask = self.all_widgets[ObjectType.THRUSTER]["pcgTglPower"].getValue() + if power_pcg_mask: + power_main, power_max = min(power_main, power_max), max(power_main, power_max) + + def _set_single_state_thruster(state, power): + return state.replace( + thruster=state.thruster.replace( + power=state.thruster.power.at[self.selected_shape_index].set(power), + ), + thruster_bindings=state.thruster_bindings.at[self.selected_shape_index].set( + int(self.all_widgets[ObjectType.THRUSTER]["sldColour"].getValue()) + ), + ) + + env_state = _set_single_state_thruster(self.pcg_state.env_state, power_main) + env_state_max = _set_single_state_thruster(self.pcg_state.env_state_max, power_max) + env_state_pcg_mask = _set_single_state_thruster(self.pcg_state.env_state_pcg_mask, power_pcg_mask) + if not do_dummy: + self.pcg_state = self.pcg_state.replace( + env_state=env_state, + env_state_max=env_state_max, + env_state_pcg_mask=env_state_pcg_mask, + ) + + # flag2 + def _put_state_values_into_gui(self, pcg_state=None): + def _set_toggle_val(toggle, val): + if toggle.getValue() != val: + toggle.toggle() + + def _enable_slider(slider): + slider.enable() + slider.colour = (200, 200, 200) + slider.handleColour = (0, 0, 0) + + def _disable_slider(slider): + slider.disable() + slider.colour = (255, 0, 0) + slider.handleColour = (255, 0, 0) + + if pcg_state is None: + # state = self.edit_state + raise ValueError + + def pcg_text(main_val, max_val, pcg_mask): + if pcg_mask: + return f"{main_val:.2f} - {max_val:.2f}" + else: + return f"{main_val:.2f}" + + # global ones + gravity_pcg_mask = pcg_state.env_state_pcg_mask.gravity[1] + self.all_widgets[None]["lblGravity"].setText( + f"Gravity: {pcg_text(pcg_state.env_state.gravity[1], pcg_state.env_state_max.gravity[1], pcg_state.env_state_pcg_mask.gravity[1])}" + ) + self.all_widgets[None]["sldGravity"].setValue(pcg_state.env_state.gravity[1]) + self.all_widgets[None]["sldMaxGravity"].setValue(pcg_state.env_state_max.gravity[1]) + if not gravity_pcg_mask: + _disable_slider(self.all_widgets[None]["sldMaxGravity"]) + else: + _enable_slider(self.all_widgets[None]["sldMaxGravity"]) + + if self.edit_shape_mode != EditMode.SELECT or self.selected_shape_index < 0: + return + + obj_main = select_object(pcg_state.env_state, self.selected_shape_type, self.selected_shape_index) + obj_max = select_object(pcg_state.env_state_max, self.selected_shape_type, self.selected_shape_index) + obj_pcg_mask = select_object(pcg_state.env_state_pcg_mask, self.selected_shape_type, self.selected_shape_index) + + if len(self.all_selected_shapes) > 1: + indices_to_use = self._get_selected_shape_global_indices() + are_all_tied = pcg_state.tied_together[indices_to_use.min(), indices_to_use].all() + _set_toggle_val(self.all_widgets["TIE_TOGETHER"]["tglTieTogether"], are_all_tied) + + if self.selected_shape_type == ObjectType.JOINT: + self.all_widgets[ObjectType.JOINT]["lblSpeed"].setText( + f"Speed: {pcg_text(obj_main.motor_speed, obj_max.motor_speed, obj_pcg_mask.motor_speed)}" + ) + self.all_widgets[ObjectType.JOINT]["sldSpeed"].setValue(obj_main.motor_speed) + self.all_widgets[ObjectType.JOINT]["sldMaxSpeed"].setValue(obj_max.motor_speed) + _set_toggle_val(self.all_widgets[ObjectType.JOINT]["pcgTglSpeed"], obj_pcg_mask.motor_speed) + if obj_pcg_mask.motor_speed: + _enable_slider(self.all_widgets[ObjectType.JOINT]["sldMaxSpeed"]) + else: + _disable_slider(self.all_widgets[ObjectType.JOINT]["sldMaxSpeed"]) + + self.all_widgets[ObjectType.JOINT]["lblPower"].setText( + f"Power: {pcg_text(obj_main.motor_power, obj_max.motor_power, obj_pcg_mask.motor_power)}" + ) + self.all_widgets[ObjectType.JOINT]["sldPower"].setValue(obj_main.motor_power) + self.all_widgets[ObjectType.JOINT]["sldMaxPower"].setValue(obj_max.motor_power) + _set_toggle_val(self.all_widgets[ObjectType.JOINT]["pcgTglPower"], obj_pcg_mask.motor_power) + if obj_pcg_mask.motor_power: + _enable_slider(self.all_widgets[ObjectType.JOINT]["sldMaxPower"]) + else: + _disable_slider(self.all_widgets[ObjectType.JOINT]["sldMaxPower"]) + + self.all_widgets[ObjectType.JOINT]["lblColour"].setText( + f"Colour: {pcg_state.env_state.motor_bindings[self.selected_shape_index]}" + ) + self.all_widgets[ObjectType.JOINT]["sldColour"].setValue( + pcg_state.env_state.motor_bindings[self.selected_shape_index] + ) + + self.all_widgets[ObjectType.JOINT]["sldMaxColour"].setValue( + pcg_state.env_state_max.motor_bindings[self.selected_shape_index] + ) + + colour_pcg_mask = pcg_state.env_state_pcg_mask.motor_bindings[self.selected_shape_index] + if not colour_pcg_mask: + _disable_slider(self.all_widgets[ObjectType.JOINT]["sldMaxColour"]) + else: + _enable_slider(self.all_widgets[ObjectType.JOINT]["sldMaxColour"]) + + self.all_widgets[ObjectType.JOINT]["lblJointLimits"].setText( + f"Joint Limits: {obj_main.motor_has_joint_limits}" + ) + widget_motor_has_joint_limits = self.all_widgets[ObjectType.JOINT]["tglJointLimits"].getValue() + if obj_main.motor_has_joint_limits != widget_motor_has_joint_limits: # Update the toggle + self.all_widgets[ObjectType.JOINT]["tglJointLimits"].toggle() + + mini, maxi = jnp.rad2deg(obj_main.min_rotation), jnp.rad2deg(obj_main.max_rotation) + self.all_widgets[ObjectType.JOINT]["lblMin_Rotation"].setText(f"Min Rot: {int(mini)}") + self.all_widgets[ObjectType.JOINT]["sldMin_Rotation"].setValue(mini) + self.all_widgets[ObjectType.JOINT]["lblMax_Rotation"].setText(f"Max Rot: {int(maxi)}") + self.all_widgets[ObjectType.JOINT]["sldMax_Rotation"].setValue(maxi) + + if not obj_main.motor_has_joint_limits: + for k in ["min_rotation", "max_rotation"]: + self.all_widgets[self.selected_shape_type][f"sld{k.title()}"].disable() + self.all_widgets[self.selected_shape_type][f"sld{k.title()}"].colour = (255, 0, 0) + self.all_widgets[self.selected_shape_type][f"sld{k.title()}"].handleColour = (255, 0, 0) + else: + for k in ["min_rotation", "max_rotation"]: + self.all_widgets[self.selected_shape_type][f"sld{k.title()}"].enable() + self.all_widgets[self.selected_shape_type][f"sld{k.title()}"].colour = (200, 200, 200) + self.all_widgets[self.selected_shape_type][f"sld{k.title()}"].handleColour = (0, 0, 0) + + self.all_widgets[ObjectType.JOINT]["lblAutoMotor"].setText( + f"Auto: {pcg_state.env_state.motor_auto[self.selected_shape_index]}" + ) + widget_is_auto_motor = self.all_widgets[ObjectType.JOINT]["tglAutoMotor"].getValue() + if pcg_state.env_state.motor_auto[self.selected_shape_index] != widget_is_auto_motor: # Update the toggle + self.all_widgets[ObjectType.JOINT]["tglAutoMotor"].toggle() + + self.all_widgets[ObjectType.JOINT]["lblIsFixedJoint"].setText(f"Fixed: {obj_main.is_fixed_joint}") + widget_is_motor_on = self.all_widgets[ObjectType.JOINT]["tglIsFixedJoint"].getValue() + if obj_main.is_fixed_joint != widget_is_motor_on: # Update the toggle + self.all_widgets[ObjectType.JOINT]["tglIsFixedJoint"].toggle() + + self.all_widgets[ObjectType.JOINT]["lblIsMotorOn"].setText(f"Motor On: {obj_main.motor_on}") + widget_is_motor_on = self.all_widgets[ObjectType.JOINT]["tglIsMotorOn"].getValue() + if obj_main.motor_on != widget_is_motor_on: # Update the toggle + self.all_widgets[ObjectType.JOINT]["tglIsMotorOn"].toggle() + + elif self.selected_shape_type == ObjectType.THRUSTER: + # thruster + self.all_widgets[ObjectType.THRUSTER]["lblPower"].setText( + f"Power: {pcg_text(obj_main.power, obj_max.power, obj_pcg_mask.power)}" + ) + self.all_widgets[ObjectType.THRUSTER]["sldPower"].setValue(obj_main.power) + self.all_widgets[ObjectType.THRUSTER]["sldMaxPower"].setValue(obj_max.power) + _set_toggle_val(self.all_widgets[ObjectType.THRUSTER]["pcgTglPower"], obj_pcg_mask.power) + if obj_pcg_mask.power: + _enable_slider(self.all_widgets[ObjectType.THRUSTER]["sldMaxPower"]) + else: + _disable_slider(self.all_widgets[ObjectType.THRUSTER]["sldMaxPower"]) + self.all_widgets[ObjectType.THRUSTER]["sldColour"].setValue( + pcg_state.env_state.thruster_bindings[self.selected_shape_index] + ) + self.all_widgets[ObjectType.THRUSTER]["lblColour"].setText( + f"Colour: {pcg_state.env_state.thruster_bindings[self.selected_shape_index]}" + ) + + elif self.selected_shape_type in [ObjectType.POLYGON, ObjectType.CIRCLE]: + # rigidbody + + # Position + # We use the mask for position_x for the entire position vector + self.all_widgets[self.selected_shape_type]["lblPosition_X"].setText( + f"Position X: {pcg_text(obj_main.position[0], obj_max.position[0], obj_pcg_mask.position[0])}" + ) + self.all_widgets[self.selected_shape_type]["sldPosition_X"].setValue(obj_main.position[0]) + self.all_widgets[self.selected_shape_type]["sldMaxPosition_X"].setValue(obj_max.position[0]) + _set_toggle_val(self.all_widgets[self.selected_shape_type]["pcgTglPosition_X"], obj_pcg_mask.position[0]) + + self.all_widgets[self.selected_shape_type]["lblPosition_Y"].setText( + f"Position Y: {pcg_text(obj_main.position[1], obj_max.position[1], obj_pcg_mask.position[0])}" + ) + self.all_widgets[self.selected_shape_type]["sldPosition_Y"].setValue(obj_main.position[1]) + self.all_widgets[self.selected_shape_type]["sldMaxPosition_Y"].setValue(obj_max.position[1]) + + if obj_pcg_mask.position[0]: + _enable_slider(self.all_widgets[self.selected_shape_type]["sldMaxPosition_X"]) + _enable_slider(self.all_widgets[self.selected_shape_type]["sldMaxPosition_Y"]) + else: + _disable_slider(self.all_widgets[self.selected_shape_type]["sldMaxPosition_X"]) + _disable_slider(self.all_widgets[self.selected_shape_type]["sldMaxPosition_Y"]) + + # Velocity + # We use the mask for velocity_x for the entire velocity vector + self.all_widgets[self.selected_shape_type]["lblVelocity_X"].setText( + f"Velocity X: {pcg_text(obj_main.velocity[0], obj_max.velocity[0], obj_pcg_mask.velocity[0])}" + ) + self.all_widgets[self.selected_shape_type]["sldVelocity_X"].setValue(obj_main.velocity[0]) + self.all_widgets[self.selected_shape_type]["sldMaxVelocity_X"].setValue(obj_max.velocity[0]) + _set_toggle_val(self.all_widgets[self.selected_shape_type]["pcgTglVelocity_X"], obj_pcg_mask.velocity[0]) + + self.all_widgets[self.selected_shape_type]["lblVelocity_Y"].setText( + f"Velocity Y: {pcg_text(obj_main.velocity[1], obj_max.velocity[1], obj_pcg_mask.velocity[0])}" + ) + self.all_widgets[self.selected_shape_type]["sldVelocity_Y"].setValue(obj_main.velocity[1]) + self.all_widgets[self.selected_shape_type]["sldMaxVelocity_Y"].setValue(obj_max.velocity[1]) + + if obj_pcg_mask.velocity[0]: + _enable_slider(self.all_widgets[self.selected_shape_type]["sldMaxVelocity_X"]) + _enable_slider(self.all_widgets[self.selected_shape_type]["sldMaxVelocity_Y"]) + else: + _disable_slider(self.all_widgets[self.selected_shape_type]["sldMaxVelocity_X"]) + _disable_slider(self.all_widgets[self.selected_shape_type]["sldMaxVelocity_Y"]) + + # Density + is_fixated = obj_main.inverse_mass == 0 + + def _calc_density(state): + if self.selected_shape_type == ObjectType.POLYGON: + return state.polygon_densities[self.selected_shape_index] + elif self.selected_shape_type == ObjectType.CIRCLE: + return state.circle_densities[self.selected_shape_index] + else: + raise ValueError + + density_main = _calc_density(pcg_state.env_state) + density_max = _calc_density(pcg_state.env_state_max) + density_pcg_mask = obj_pcg_mask.inverse_mass + + self.all_widgets[self.selected_shape_type]["lblDensity"].setText( + f"Density: {pcg_text(density_main, density_max, density_pcg_mask)}" + ) + self.all_widgets[self.selected_shape_type]["sldDensity"].setValue(density_main) + self.all_widgets[self.selected_shape_type]["sldMaxDensity"].setValue(density_max) + _set_toggle_val(self.all_widgets[self.selected_shape_type]["pcgTglDensity"], density_pcg_mask) + if is_fixated: + _disable_slider(self.all_widgets[self.selected_shape_type]["sldDensity"]) + else: + _enable_slider(self.all_widgets[self.selected_shape_type]["sldDensity"]) + + if is_fixated or (not density_pcg_mask): + _disable_slider(self.all_widgets[self.selected_shape_type]["sldMaxDensity"]) + else: + _enable_slider(self.all_widgets[self.selected_shape_type]["sldMaxDensity"]) + + # Friction + self.all_widgets[self.selected_shape_type]["lblFriction"].setText( + f"Friction: {pcg_text(obj_main.friction, obj_max.friction, obj_pcg_mask.friction)}" + ) + self.all_widgets[self.selected_shape_type]["sldFriction"].setValue(obj_main.friction) + self.all_widgets[self.selected_shape_type]["sldMaxFriction"].setValue(obj_max.friction) + _set_toggle_val(self.all_widgets[self.selected_shape_type]["pcgTglFriction"], obj_pcg_mask.friction) + + if not obj_pcg_mask.friction: + _disable_slider(self.all_widgets[self.selected_shape_type]["sldMaxFriction"]) + else: + _enable_slider(self.all_widgets[self.selected_shape_type]["sldMaxFriction"]) + + # Restitution + self.all_widgets[self.selected_shape_type]["lblRestitution"].setText( + f"Restitution: {obj_main.restitution:.2f}" + ) + self.all_widgets[self.selected_shape_type]["sldRestitution"].setValue(obj_main.restitution) + + # Rotation + self.all_widgets[self.selected_shape_type]["lblRotation"].setText( + f"Rotation: {pcg_text(obj_main.rotation, obj_max.rotation, obj_pcg_mask.rotation)}" + ) + self.all_widgets[self.selected_shape_type]["sldRotation"].setValue(obj_main.rotation) + self.all_widgets[self.selected_shape_type]["sldMaxRotation"].setValue(obj_max.rotation) + _set_toggle_val(self.all_widgets[self.selected_shape_type]["pcgTglRotation"], obj_pcg_mask.rotation) + + if not obj_pcg_mask.rotation: + _disable_slider(self.all_widgets[self.selected_shape_type]["sldMaxRotation"]) + else: + _enable_slider(self.all_widgets[self.selected_shape_type]["sldMaxRotation"]) + + # Angular_Velocity + self.all_widgets[self.selected_shape_type]["lblAngular_Velocity"].setText( + f"Angular_Velocity: {pcg_text(obj_main.angular_velocity, obj_max.angular_velocity, obj_pcg_mask.angular_velocity)}" + ) + self.all_widgets[self.selected_shape_type]["sldAngular_Velocity"].setValue(obj_main.angular_velocity) + self.all_widgets[self.selected_shape_type]["sldMaxAngular_Velocity"].setValue(obj_max.angular_velocity) + _set_toggle_val( + self.all_widgets[self.selected_shape_type]["pcgTglAngular_Velocity"], obj_pcg_mask.angular_velocity + ) + + if not obj_pcg_mask.angular_velocity: + _disable_slider(self.all_widgets[self.selected_shape_type]["sldMaxAngular_Velocity"]) + else: + _enable_slider(self.all_widgets[self.selected_shape_type]["sldMaxAngular_Velocity"]) + + # Collision mode + self.all_widgets[self.selected_shape_type]["lblCollidability"].setText( + f"Collidability: {obj_main.collision_mode}" + ) + self.all_widgets[self.selected_shape_type]["sldCollidability"].setValue(obj_main.collision_mode) + + # Shape role + if self.selected_shape_type == ObjectType.POLYGON: + shape_role = pcg_state.env_state.polygon_shape_roles[self.selected_shape_index] + else: + shape_role = pcg_state.env_state.circle_shape_roles[self.selected_shape_index] + + self.all_widgets[self.selected_shape_type]["sldRole"].setValue(shape_role) + self.all_widgets[self.selected_shape_type]["lblRole"].setText(f"Role: {shape_role}") + + # Fixate + self.all_widgets[self.selected_shape_type]["lblFixate"].setText(f"Fixate: {is_fixated}") + widget_is_fixed = self.all_widgets[self.selected_shape_type]["tglFixate"].getValue() + if is_fixated != widget_is_fixed: # Update the toggle + self.all_widgets[self.selected_shape_type]["tglFixate"].toggle() + + # Radius + if self.selected_shape_type == ObjectType.CIRCLE: + self.all_widgets[self.selected_shape_type]["lblRadius"].setText( + f"Radius: {pcg_text(obj_main.radius, obj_max.radius, obj_pcg_mask.radius)}" + ) + self.all_widgets[self.selected_shape_type]["sldRadius"].setValue(obj_main.radius) + self.all_widgets[self.selected_shape_type]["sldMaxRadius"].setValue(obj_max.radius) + _set_toggle_val(self.all_widgets[self.selected_shape_type]["pcgTglRadius"], obj_pcg_mask.radius) + + if not obj_pcg_mask.radius: + _disable_slider(self.all_widgets[self.selected_shape_type]["sldMaxRadius"]) + else: + _enable_slider(self.all_widgets[self.selected_shape_type]["sldMaxRadius"]) + + elif self.selected_shape_type == ObjectType.POLYGON: + size_main = jnp.abs(obj_main.vertices).max() + size_max = jnp.abs(obj_max.vertices).max() + size_pcg_mask = obj_pcg_mask.vertices.any() + + self.all_widgets[self.selected_shape_type]["lblSize"].setText( + f"Size: {pcg_text(size_main, size_max, size_pcg_mask)}" + ) + self.all_widgets[self.selected_shape_type]["sldSize"].setValue(size_main) + self.all_widgets[self.selected_shape_type]["sldMaxSize"].setValue(size_max) + _set_toggle_val(self.all_widgets[self.selected_shape_type]["pcgTglSize"], size_pcg_mask) + + if not size_pcg_mask: + _disable_slider(self.all_widgets[self.selected_shape_type]["sldMaxSize"]) + else: + _enable_slider(self.all_widgets[self.selected_shape_type]["sldMaxSize"]) + + def _render_side_panel(self): + arr = jnp.ones((self.side_panel_width, self.static_env_params.screen_dim[1], 3)) * ( + jnp.array([135.0, 206.0, 235.0])[None, None] + 20 + ) + return arr + + def make_label_and_slider( + self, + start_y, + label_text, + slider_min=0.0, + slider_max=1.0, + slider_step=0.05, + font_size=18, + is_toggle=False, + is_pcg=False, + add_pcg_toggle=True, + ): + Wl = round(self.W * 0.7) + pcg_lbl = None + pcg_toggle = None + widget_max = None + + label = TextBox( + self.screen_surface, + self.MARGIN, + start_y, + Wl, + 20, + fontSize=font_size, + margin=0, + placeholderText=label_text, + font=pygame.font.SysFont("sans-serif", font_size), + ) + label.disable() # Act as label instead of textbox + if is_toggle: + widget = Toggle(self.screen_surface, self.W // 2 - 20, start_y + 23, 20, 13) + else: + widget = Slider( + self.screen_surface, + self.MARGIN, + start_y + 23, + Wl, + 13, + min=slider_min, + max=slider_max, + step=slider_step, + ) + + if is_pcg: + widget_max = Slider( + self.screen_surface, + self.MARGIN, + start_y + 50, + Wl, + 13, + min=slider_min, + max=slider_max, + step=slider_step, + ) + + pcg_lbl = TextBox( + self.screen_surface, + self.MARGIN + Wl + 30, + start_y, + 60, + 20, + fontSize=font_size, + margin=0, + placeholderText="PCG", + font=pygame.font.SysFont("sans-serif", font_size), + ) + if add_pcg_toggle: + pcg_toggle = Toggle(self.screen_surface, Wl + 80, start_y + 23, 20, 13) + + return label, widget, (pcg_toggle, pcg_lbl, widget_max) + + def _setup_side_panel(self): + + W = self.W = int(self.side_panel_width * self.upscale * 0.8) + MARGIN = self.MARGIN = (self.side_panel_width * self.upscale - W) // 2 + + # global values + G = {} + gravity_label, gravity_slider, (pcg_toggle, pcg_lbl, slider_max) = self.make_label_and_slider( + 150, "Gravity", -20.0, 0.0, 0.2, is_pcg=True + ) + G["lblGravity"] = gravity_label + G["sldGravity"] = gravity_slider + G["sldMaxGravity"] = slider_max + G["pcgLblGravity"] = pcg_lbl + G["pcgTglGravity"] = pcg_toggle + + # thruster values + T = {} + thruster_power_label, thruster_power_slider, (pcg_toggle, pcg_lbl, slider_max) = self.make_label_and_slider( + 150, "Power", slider_max=3.0, is_pcg=True + ) + T["lblPower"] = thruster_power_label + T["sldPower"] = thruster_power_slider + T["sldMaxPower"] = slider_max + T["pcgLblPower"] = pcg_lbl + T["pcgTglPower"] = pcg_toggle + thruster_colour_label, thruster_colour_slider, _ = self.make_label_and_slider( + 250, "Colour", 0, self.static_env_params.num_thruster_bindings - 1, 1 + ) + T["lblColour"] = thruster_colour_label + T["sldColour"] = thruster_colour_slider + + # joints + D = {} + for i, (name, (mini, maxi, step), is_pcg) in enumerate( + zip( + ["speed", "power", "colour", "min_rotation", "max_rotation"], + [ + (-3, 3, 0.05), + (0, 3, 0.05), + (0, self.static_env_params.num_motor_bindings - 1, 1), + (-180, 180, 5), + (-180, 180, 5), + ], + [True, True, True, False, False], + ) + ): + label, slider, (pcg_toggle, pcg_lbl, slider_max) = self.make_label_and_slider( + 150 + 80 * i, + f"Motor {name.title()}", + slider_min=mini, + slider_max=maxi, + slider_step=step, + is_pcg=is_pcg, + ) + D["lbl" + name.title()] = label + D["sld" + name.title()] = slider + if is_pcg: + D["sldMax" + name.title()] = slider_max + D["pcgLbl" + name.title()] = pcg_lbl + D["pcgTgl" + name.title()] = pcg_toggle + + label, toggle, _ = self.make_label_and_slider(150 + 80 * 5, "Joint Limits", is_toggle=True) + D["lblJointLimits"] = label + D["tglJointLimits"] = toggle + + label, toggle, _ = self.make_label_and_slider(150 + 80 * 6, "Auto", is_toggle=True) + D["lblAutoMotor"] = label + D["tglAutoMotor"] = toggle + + label, toggle, _ = self.make_label_and_slider(150 + 80 * 7, "Fixed", is_toggle=True) + D["lblIsFixedJoint"] = label + D["tglIsFixedJoint"] = toggle + + label, toggle, _ = self.make_label_and_slider(150 + 80 * 8, "Motor On", is_toggle=True) + D["lblIsMotorOn"] = label + D["tglIsMotorOn"] = toggle + + def _create_rigid_body_base_gui(): + D_rigid = {} + # rigidbodies + total_toggles = 0 + total_non_toggles = 0 + for i, (name, bounds, is_pcg, add_pcg_toggle) in enumerate( + zip( + [ + "position_x", + "position_y", + "rotation", + "velocity_x", + "velocity_y", + "angular_velocity", + "density", + "friction", + "restitution", + "collidability", + "role", + ], + [ + (0, 5.0, 0.01), + (0, 5.0, 0.01), + (-2 * jnp.pi, 2 * jnp.pi, 0.01), + (-10.0, 10.0, 0.1), + (-10.0, 10.0, 0.1), + (-6, 6.0, 0.01), + (0.1, 5.0, 0.1), + (0.02, 1.0, 0.02), + (0.0, 0.8, 0.02), + (0, 2, 1), + (0, 3, 1), + ], + [True, True, True, True, True, True, True, True, False, False, False], + [True, False, True, True, False, True, True, True, False, False, False], + ) + ): + location = 50 + 80 * total_toggles + 40 * total_non_toggles + label, slider, (pcg_toggle, pcg_lbl, slider_max) = self.make_label_and_slider( + location, name.title(), *bounds, is_pcg=is_pcg, add_pcg_toggle=add_pcg_toggle + ) + total_toggles += is_pcg + total_non_toggles += not is_pcg + D_rigid["lbl" + name.title()] = label + D_rigid["sld" + name.title()] = slider + + if is_pcg: + D_rigid["sldMax" + name.title()] = slider_max + if add_pcg_toggle: + D_rigid["pcgLbl" + name.title()] = pcg_lbl + D_rigid["pcgTgl" + name.title()] = pcg_toggle + + location = 50 + 80 * total_toggles + 40 * total_non_toggles + # toggles: + label, toggle, _ = self.make_label_and_slider(location, "Fixate", is_toggle=True) + D_rigid["lblFixate"] = label + D_rigid["tglFixate"] = toggle + + return D_rigid, location + + # Circle extras + D_circle, location = _create_rigid_body_base_gui() + label, slider, (pcg_toggle, pcg_lbl, slider_max) = self.make_label_and_slider( + location + 40, "Radius", slider_min=0.1, slider_max=1.0, slider_step=0.02, is_pcg=True, add_pcg_toggle=True + ) + D_circle["lblRadius"] = label + D_circle["sldRadius"] = slider + D_circle["sldMaxRadius"] = slider_max + D_circle["pcgLblRadius"] = pcg_lbl + D_circle["pcgTglRadius"] = pcg_toggle + + # Polygon extras + D_poly, location = _create_rigid_body_base_gui() + label, slider, (pcg_toggle, pcg_lbl, slider_max) = self.make_label_and_slider( + location + 40, "Size", slider_min=0.1, slider_max=2.0, slider_step=0.02, is_pcg=True, add_pcg_toggle=True + ) + D_poly["lblSize"] = label + D_poly["sldSize"] = slider + D_poly["sldMaxSize"] = slider_max + D_poly["pcgLblSize"] = pcg_lbl + D_poly["pcgTglSize"] = pcg_toggle + + label, toggle, _ = self.make_label_and_slider(150 + 80 * 5, "Tie Positions Together", is_toggle=True) + TIE_TOGETHER = { + "lblTieTogether": label, + "tglTieTogether": toggle, + } + + self.all_widgets = { + ObjectType.THRUSTER: T, + ObjectType.JOINT: D, + "GENERAL": { + "lblGeneral": TextBox( + self.screen_surface, + MARGIN, + 10, + W, + 30, + fontSize=20, + margin=0, + placeholderText="General", + font=pygame.font.SysFont("sans-serif", 35), + ), + }, + ObjectType.POLYGON: D_poly, + ObjectType.CIRCLE: D_circle, + None: G, + "TIE_TOGETHER": TIE_TOGETHER, + } + + self._hide_all_widgets() + + def _render_edit_overlay(self, pixels, is_editing, edit_shape_mode): + is_editing_texture = jax.lax.select(is_editing, EDIT_TEXTURE_RGBA, PLAY_TEXTURE_RGBA) + is_editing_texture = jnp.repeat(jnp.repeat(is_editing_texture, self.upscale, axis=0), self.upscale, axis=1) + + offset = self.side_panel_width * self.upscale + w = 64 * self.upscale + offset2 = int(w * 1.25) + offset_y = 16 * self.upscale + + play_tex_with_background = (1 - is_editing_texture[:, :, 3:]) * pixels[ + offset + 0 : offset + w, 0:w + ] + is_editing_texture[:, :, 3:] * is_editing_texture[:, :, :3] + pixels = pixels.at[offset : offset + w, 0:w].set(play_tex_with_background) + + edit_shape_texture = jax.lax.switch( + edit_shape_mode, + [ + lambda: CIRCLE_TEXTURE_RGBA, + lambda: RECT_TEXTURE_RGBA, + lambda: RJOINT_TEXTURE_RGBA, + lambda: SELECT_TEXTURE_RGBA, + lambda: TRIANGLE_TEXTURE_RGBA, + lambda: THRUSTER_TEXTURE_RGBA, + ], + ) + + edit_shape_texture = jnp.repeat(jnp.repeat(edit_shape_texture, self.upscale, axis=0), self.upscale, axis=1) + + edit_shape_texture_alpha = edit_shape_texture[:, :, 3:] * is_editing + + w = 32 * self.upscale + edit_shape_texture_with_background = (1 - edit_shape_texture_alpha) * pixels[ + offset + offset2 : offset + offset2 + w, offset_y : offset_y + w + ] + edit_shape_texture_alpha * edit_shape_texture[:, :, :3] + pixels = pixels.at[offset + offset2 : offset + offset2 + w, offset_y : offset_y + w].set( + edit_shape_texture_with_background + ) + + return pixels + + def edit(self): + self.rng, _rng = jax.random.split(self.rng) + pcg_state = self.pcg_state + + left_click = False + right_click = False + + keys = [] + keys_up_this_frame = set() + for event in self.pygame_events: + if event.type == pygame.KEYDOWN: + if ( + event.key == pygame.K_s + and (pygame.key.get_mods() & pygame.KMOD_CTRL) + and (pygame.key.get_mods() & pygame.KMOD_SHIFT) + ): + filename = prompt_file(save=True) + if filename: + filename += ".level.pkl" + save_pickle(filename, self.last_played_level) + print(f"Saved last sampled level to {filename}") + elif event.key == pygame.K_s and (pygame.key.get_mods() & pygame.KMOD_CTRL): + pcg_state = self._reset_select_shape(pcg_state) + filename = prompt_file(save=True) + if filename: + if filename.endswith(".json"): + export_env_state_to_json( + filename, pcg_state.env_state, self.static_env_params, self.env_params + ) + elif not filename.endswith(".pcg.pkl"): + filename += ".pcg.pkl" + save_pickle(filename, pcg_state) + print(f"Saved PCG state to {filename}") + elif event.key == pygame.K_o and (pygame.key.get_mods() & pygame.KMOD_CTRL): + filename = prompt_file(save=False) + if filename: + self._reset_select_shape(pcg_state) + if filename.endswith(".pcg.pkl"): + pcg_state = load_pcg_state_pickle(filename) + pcg_state = expand_pcg_state(pcg_state, self.static_env_params) + print(f"Loaded PCG state from {filename}") + elif filename.endswith(".level.pkl"): + env_state = load_world_state_pickle(filename) + pcg_state = env_state_to_pcg_state(env_state) + print(f"Converted level state to PCG state from {filename}") + elif filename.endswith(".json"): + env_state, new_static_env_params, new_env_params = load_from_json_file(filename) + self._update_params(new_static_env_params, new_env_params) + pcg_state = env_state_to_pcg_state(env_state) + self._reset_triangles() + elif event.key == pygame.K_n and (pygame.key.get_mods() & pygame.KMOD_CTRL): + self._reset_select_shape(pcg_state) + pcg_state = new_pcg_env(self.static_env_params) + self._reset_triangles() + else: + keys.append(event.key) + elif event.type == pygame.KEYUP: + keys_up_this_frame.add(event.key) + if event.type == pygame.MOUSEBUTTONDOWN and self._get_mouse_position_world_space()[0] >= 0: + if event.button == 1: + left_click = True + if event.button == 3: + right_click = True + + if event.type == pygame.MOUSEWHEEL: + pcg_state = self._handle_scroll_wheel(pcg_state, event.y) + + if self.selected_shape_index == -1: + num = get_numeric_key_pressed(self.pygame_events) + if num is not None: + self.edit_shape_mode = EditMode(num % len(EditMode)) + + # We have to do these checks outside the loop, otherwise they get triggered multiple times per key press. + if pygame.key.get_mods() & pygame.KMOD_SHIFT: + state = pcg_state.env_state + if pygame.K_m in keys_up_this_frame: + state = self.mutate_world(_rng, state, 1) + if pygame.K_c in keys_up_this_frame: + state, _ = mutate_add_connected_shape( + _rng, state, self.env_params, self.static_env_params, self.ued_params + ) + elif pygame.K_s in keys_up_this_frame: + state = mutate_add_shape(_rng, state, self.env_params, self.static_env_params, self.ued_params) + elif pygame.K_p in keys_up_this_frame: + state = mutate_swap_role(_rng, state, self.env_params, self.static_env_params, self.ued_params) + elif pygame.K_r in keys_up_this_frame: + state = mutate_remove_shape(_rng, state, self.env_params, self.static_env_params, self.ued_params) + elif pygame.K_j in keys_up_this_frame: + state = mutate_remove_joint(_rng, state, self.env_params, self.static_env_params, self.ued_params) + elif pygame.K_t in keys_up_this_frame: + state = mutate_toggle_fixture(_rng, state, self.env_params, self.static_env_params, self.ued_params) + elif pygame.K_g in keys_up_this_frame: + state = mutate_add_thruster(_rng, state, self.env_params, self.static_env_params, self.ued_params) + elif pygame.K_l in keys_up_this_frame: + state = mutate_remove_thruster(_rng, state, self.env_params, self.static_env_params, self.ued_params) + elif pygame.K_b in keys_up_this_frame: + state = self.mutate_change_shape_size( + _rng, state, self.env_params, self.static_env_params, self.ued_params + ) + elif pygame.K_x in keys_up_this_frame: + state = mutate_change_shape_location( + _rng, state, self.env_params, self.static_env_params, self.ued_params + ) + elif pygame.K_k in keys_up_this_frame: + state = self.mutate_change_shape_rotation( + _rng, state, self.env_params, self.static_env_params, self.ued_params + ) + pcg_state = pcg_state.replace(env_state=state) + + if pygame.K_p in keys_up_this_frame: + global myrng + myrng, _rng = jax.random.split(myrng) + # use the same rng + pcg_state = permute_pcg_state(_rng, pcg_state, self.static_env_params) + if self.edit_shape_mode == EditMode.SELECT: # select a shape + pcg_state = self._edit_select_shape(pcg_state, left_click, right_click, keys) + self._put_state_values_into_gui(pcg_state) + pcg_state = self._select_shape_keyboard_shortcuts(pcg_state, left_click, keys) + else: + pcg_state = self._reset_select_shape(pcg_state) # don't highlight + self._put_state_values_into_gui(pcg_state) + self._show_correct_widgets(None) + + if self.edit_shape_mode != EditMode.ADD_TRIANGLE or not self.creating_shape: + self.num_triangle_clicks = 0 + + if self.edit_shape_mode == EditMode.ADD_CIRCLE: + pcg_state = self._edit_circle(pcg_state, left_click, right_click) + elif self.edit_shape_mode == EditMode.ADD_RECTANGLE: + pcg_state = self._edit_rect(pcg_state, left_click, right_click) + elif self.edit_shape_mode == EditMode.ADD_JOINT: + pcg_state = self._edit_joint(pcg_state, left_click, right_click) + elif self.edit_shape_mode == EditMode.ADD_TRIANGLE: + pcg_state = self._edit_triangle(pcg_state, left_click, right_click) + elif self.edit_shape_mode == EditMode.ADD_THRUSTER: + pcg_state = self._edit_thruster(pcg_state, left_click, right_click) + + pcg_state = pcg_state.replace( + env_state=recompute_global_joint_positions( + pcg_state.env_state.replace( + collision_matrix=calculate_collision_matrix(self.static_env_params, pcg_state.env_state.joint), + ), + self.static_env_params, + ), + env_state_pcg_mask=pcg_state.env_state_pcg_mask.replace( + collision_matrix=jnp.zeros_like(pcg_state.env_state_pcg_mask.collision_matrix) + ), + ) + return pcg_state + + def _update_params(self, new_static_env_params: StaticEnvParams, new_env_params: EnvParams): + self.static_env_params = new_static_env_params.replace( + frame_skip=self.config["frame_skip"], downscale=self.config["downscale"] + ) + self.env_params = new_env_params + env = make_kinetix_env_from_name("Kinetix-Entity-MultiDiscrete-v1", static_env_params=self.static_env_params) + self.env = AutoResetWrapper(env, make_reset_function(self.static_env_params)) + self._setup_rendering(self.static_env_params, self.env_params) + + def _discard_shape_being_created(self, pcg_state): + env_state = pcg_state.env_state + if self.creating_shape: + if self.edit_shape_mode == EditMode.ADD_CIRCLE: + env_state = env_state.replace( + circle=env_state.circle.replace( + active=env_state.circle.active.at[self.creating_shape_index].set(False) + ) + ) + + elif self.edit_shape_mode == EditMode.ADD_RECTANGLE: + env_state = env_state.replace( + polygon=env_state.polygon.replace( + active=env_state.polygon.active.at[self.creating_shape_index].set(False) + ) + ) + + self.creating_shape = False + + return pcg_state.replace(env_state=env_state) + + def _handle_scroll_wheel(self, pcg_state, y): + if y == 0: + return pcg_state + + state = self._discard_shape_being_created(pcg_state) + + self.edit_shape_mode = EditMode((self.edit_shape_mode.value + y) % len(EditMode)) + + return state + + def _get_mouse_position_world_space(self): + mouse_pos = pygame.mouse.get_pos() + return ( + jnp.array( + [ + mouse_pos[0] / self.upscale - self.side_panel_width, + self.static_env_params.screen_dim[1] - mouse_pos[1] / self.upscale, + ] + ) + / self.env_params.pixels_per_unit + ) + + def _get_circles_on_mouse(self, state): + mouse_pos = self._get_mouse_position_world_space() + + cis = [] + + for ci in jnp.arange(self.static_env_params.num_circles)[::-1]: + circle = jax.tree.map(lambda x: x[ci], state.circle) + + if not circle.active: + continue + + dist = jnp.linalg.norm(mouse_pos - circle.position) + if dist <= circle.radius: + cis.append(ci) + + return cis + + def _get_revolute_joints_on_mouse(self, state: EnvState): + mouse_pos = self._get_mouse_position_world_space() + + ris = [] + + for ri in jnp.arange(self.static_env_params.num_joints)[::-1]: + joint = jax.tree.map(lambda x: x[ri], state.joint) + + if not joint.active: + continue + + dist = jnp.linalg.norm(mouse_pos - joint.global_position) + if dist <= 10 / 100: # arbitrary + ris.append(ri) + + return ris + + def _get_thrusters_on_mouse(self, state: EnvState): + mouse_pos = self._get_mouse_position_world_space() + + ris = [] + + for ri in jnp.arange(self.static_env_params.num_thrusters)[::-1]: + thruster = jax.tree.map(lambda x: x[ri], state.thruster) + + if not thruster.active: + continue + + dist = jnp.linalg.norm(mouse_pos - thruster.global_position) + if dist <= 16 / 100: # arbitrary + ris.append(ri) + + return ris + + def _get_joints_attached_to_shape(self, state, shape_index): + r_a = jnp.arange(self.static_env_params.num_joints)[state.joint.a_index == shape_index] + r_b = jnp.arange(self.static_env_params.num_joints)[state.joint.b_index == shape_index] + + t = jnp.arange(self.static_env_params.num_thrusters)[state.thruster.object_index == shape_index] + return jnp.concatenate([r_a, r_b], axis=0), t + + def _edit_thruster(self, pcg_state: PCGState, left_click: bool, right_click: bool): + if not self.creating_shape and (1 - pcg_state.env_state.thruster.active.astype(int)).sum() == 0: + if not right_click: + return pcg_state + + thruster_pos = self._get_mouse_position_world_space() + idx = -1 + for ri in self._get_polygons_on_mouse(pcg_state.env_state): + r = jax.tree.map(lambda x: x[ri], pcg_state.env_state.polygon) + thruster_pos = snap_to_polygon_center_line(r, thruster_pos) + relative_pos = jnp.matmul(rmat(r.rotation).transpose((1, 0)), thruster_pos - r.position) + idx = ri + break + if idx == -1: + for ci in self._get_circles_on_mouse(pcg_state.env_state): + c = jax.tree.map(lambda x: x[ci], pcg_state.env_state.circle) + thruster_pos = snap_to_center(c, thruster_pos) + thruster_pos = snap_to_circle_center_line(c, thruster_pos) + relative_pos = thruster_pos - c.position + idx = ci + self.static_env_params.num_polygons + break + if left_click: + if self.creating_shape: + self.creating_shape = False + else: + if idx >= 0: + self.creating_shape = True + self.creating_shape_position = thruster_pos + self.creating_shape_index = jnp.argmin(pcg_state.env_state.thruster.active) + shape = select_shape(pcg_state.env_state, idx, self.static_env_params) + + def _add_thruster_to_state(state): + state = state.replace( + thruster=state.thruster.replace( + object_index=state.thruster.object_index.at[self.creating_shape_index].set(idx), + relative_position=state.thruster.relative_position.at[self.creating_shape_index].set( + relative_pos + ), + power=state.thruster.power.at[self.creating_shape_index].set( + 1.0 / jax.lax.select(shape.inverse_mass == 0, 1.0, shape.inverse_mass) + ), + active=state.thruster.active.at[self.creating_shape_index].set(True), + global_position=state.thruster.global_position.at[self.creating_shape_index].set( + thruster_pos + ), + rotation=state.thruster.rotation.at[self.creating_shape_index].set(0.0), + ), + thruster_bindings=state.thruster_bindings.at[self.creating_shape_index].set(0), + ) + return state + + pcg_state = pcg_state.replace( + env_state=_add_thruster_to_state(pcg_state.env_state), + env_state_max=_add_thruster_to_state(pcg_state.env_state_max), + ) + elif right_click: + for ti in self._get_thrusters_on_mouse(pcg_state.env_state): + + def _remove_thruster_from_state(state): + return state.replace( + thruster=state.thruster.replace(active=state.thruster.active.at[ti].set(False)) + ) + + return pcg_state.replace( + env_state=_remove_thruster_from_state(pcg_state.env_state), + env_state_max=_remove_thruster_from_state(pcg_state.env_state_max), + ) + else: + if self.creating_shape: + curr_pos = self._get_mouse_position_world_space() + + normal = pcg_state.env_state.thruster.relative_position[self.creating_shape_index] + angle = jnp.arctan2(normal[1], normal[0]) + + relative_pos = curr_pos - self.creating_shape_position + # rotation = jnp.arctan2(relative_pos[1], relative_pos[0]) + rotation = jnp.pi + jnp.arctan2(relative_pos[1], relative_pos[0]) + angle + angle_round = jnp.round(rotation / (jnp.pi / 2)) + angle_norm = rotation / (jnp.pi / 2) + if jnp.abs(angle_round - angle_norm) < 0.3: + rotation = angle_round * (jnp.pi / 2) + + def _update_thruster_rotation(state): + return state.replace( + thruster=state.thruster.replace( + rotation=state.thruster.rotation.at[self.creating_shape_index].set(rotation - angle), + ) + ) + + pcg_state = pcg_state.replace( + env_state=_update_thruster_rotation(pcg_state.env_state), + env_state_max=_update_thruster_rotation(pcg_state.env_state_max), + ) + else: + pass + + return pcg_state + + def _edit_circle(self, pcg_state: PCGState, left_click: bool, right_click: bool): + if right_click: + for ci in self._get_circles_on_mouse(pcg_state.env_state): + attached_j, attached_t = self._get_joints_attached_to_shape( + pcg_state.env_state, ci + self.static_env_params.num_polygons + ) + + def _remove_circle_from_state(state): + return state.replace( + circle=state.circle.replace(active=state.circle.active.at[ci].set(False)), + joint=state.joint.replace(active=state.joint.active.at[attached_j].set(False)), + thruster=state.thruster.replace(active=state.thruster.active.at[attached_t].set(False)), + ) + + env_state = _remove_circle_from_state(pcg_state.env_state) + env_state_pcg_mask = _remove_circle_from_state(pcg_state.env_state_pcg_mask) + env_state_max = _remove_circle_from_state(pcg_state.env_state_max) + + env_state = env_state.replace( + collision_matrix=calculate_collision_matrix(self.static_env_params, env_state.joint) + ) + + return PCGState( + env_state=env_state, + env_state_pcg_mask=env_state_pcg_mask, + env_state_max=env_state_max, + tied_together=pcg_state.tied_together, + ) + + if not self.creating_shape and (1 - pcg_state.env_state.circle.active.astype(int)).sum() == 0: + return pcg_state + + radius = jnp.linalg.norm(self._get_mouse_position_world_space() - self.create_shape_position) + radius = jnp.clip(radius, 5.0 / self.env_params.pixels_per_unit, self.static_env_params.max_shape_size / 2) + + def _add_circle(state, highlight): + state = state.replace( + circle=state.circle.replace( + position=state.circle.position.at[self.creating_shape_index].set(self.create_shape_position), + velocity=state.circle.velocity.at[self.creating_shape_index].set(jnp.array([0.0, 0.0])), + radius=state.circle.radius.at[self.creating_shape_index].set(radius), + inverse_mass=state.circle.inverse_mass.at[self.creating_shape_index].set(1.0), + inverse_inertia=state.circle.inverse_inertia.at[self.creating_shape_index].set(1.0), + active=state.circle.active.at[self.creating_shape_index].set(True), + collision_mode=state.circle.collision_mode.at[self.creating_shape_index].set(1), + ), + circle_shape_roles=state.circle_shape_roles.at[self.creating_shape_index].set(0), + circle_highlighted=state.circle_highlighted.at[self.creating_shape_index].set(highlight), + circle_densities=state.circle_densities.at[self.creating_shape_index].set(1.0), + ) + return state + + if left_click: + if self.creating_shape: + env_state = _add_circle(pcg_state.env_state, False) + env_state_max = _add_circle(pcg_state.env_state_max, False) + + env_state = recalculate_mass_and_inertia( + env_state, + self.static_env_params, + env_state.polygon_densities, + env_state.circle_densities, + ) + env_state_max = recalculate_mass_and_inertia( + env_state_max, + self.static_env_params, + env_state.polygon_densities, + env_state.circle_densities, + ) + + pcg_state = pcg_state.replace(env_state=env_state, env_state_max=env_state_max) + + self.creating_shape = False + else: + self.creating_shape_index = jnp.argmin(pcg_state.env_state.circle.active) + self.create_shape_position = self._get_mouse_position_world_space() + self.creating_shape = True + + else: + if self.creating_shape: + env_state = _add_circle(pcg_state.env_state, True) + env_state_max = _add_circle(pcg_state.env_state_max, True) + + pcg_state = pcg_state.replace(env_state=env_state, env_state_max=env_state_max) + else: + pass + + return pcg_state + + def _get_polygons_on_mouse(self, state, n_vertices=None): + # n_vertices=None selects both triangles and quads + ris = [] + + mouse_pos = self._get_mouse_position_world_space() + + for ri in jnp.arange(self.static_env_params.num_polygons)[::-1]: + polygon = jax.tree.map(lambda x: x[ri], state.polygon) + + if (not polygon.active) or ((n_vertices is not None) and polygon.n_vertices != n_vertices): + continue + + mpos = rmat(-polygon.rotation) @ (mouse_pos - polygon.position) + + def _signed_line_distance(a, b, c): + return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]) + + inside = True + for fi in range(polygon.n_vertices): + v1 = polygon.vertices[fi] + v2 = polygon.vertices[(fi + 1) % polygon.n_vertices] + if _signed_line_distance(mpos, v1, v2) > 0: + inside = False + + if inside: + ris.append(ri) + + return ris + + def _edit_rect(self, pcg_state: PCGState, left_click: bool, right_click: bool): + if right_click: + for ri in self._get_polygons_on_mouse(pcg_state.env_state, n_vertices=4): + attached_j, attached_t = self._get_joints_attached_to_shape(pcg_state.env_state, ri) + + def _remove_rect_from_state(state): + state = state.replace( + polygon=state.polygon.replace( + active=state.polygon.active.at[ri].set(False), + rotation=state.polygon.rotation.at[ri].set(0.0), + ), + joint=state.joint.replace(active=state.joint.active.at[attached_j].set(False)), + thruster=state.thruster.replace(active=state.thruster.active.at[attached_t].set(False)), + ) + + return state + + env_state = _remove_rect_from_state(pcg_state.env_state) + env_state_max = _remove_rect_from_state(pcg_state.env_state_max) + env_state_pcg_mask = _remove_rect_from_state(pcg_state.env_state_pcg_mask) + + env_state = env_state.replace( + collision_matrix=calculate_collision_matrix(self.static_env_params, env_state.joint) + ) + + return PCGState( + env_state=env_state, + env_state_max=env_state_max, + env_state_pcg_mask=env_state_pcg_mask, + tied_together=pcg_state.tied_together, + ) + + if not self.creating_shape and (1 - pcg_state.env_state.polygon.active.astype(int)).sum() == 0: + return pcg_state + + diff = (self._get_mouse_position_world_space() - self.create_shape_position) / 2 + diff = jnp.clip( + diff, + -(self.static_env_params.max_shape_size / 2) / jnp.sqrt(2), + (self.static_env_params.max_shape_size / 2) / jnp.sqrt(2), + ) + half_dim = jnp.abs(diff) + half_dim = jnp.clip(half_dim, a_min=5.0 / self.env_params.pixels_per_unit) + vertices = rectangle_vertices(half_dim) + + def _add_rect_to_state(state, highlight): + state = state.replace( + polygon=state.polygon.replace( + position=state.polygon.position.at[self.creating_shape_index].set( + self.create_shape_position + diff + ), + velocity=state.polygon.velocity.at[self.creating_shape_index].set(jnp.array([0.0, 0.0])), + vertices=state.polygon.vertices.at[self.creating_shape_index].set(vertices), + inverse_mass=state.polygon.inverse_mass.at[self.creating_shape_index].set(1.0), + inverse_inertia=state.polygon.inverse_inertia.at[self.creating_shape_index].set(1.0), + active=state.polygon.active.at[self.creating_shape_index].set(True), + collision_mode=state.polygon.collision_mode.at[self.creating_shape_index].set(1), + n_vertices=state.polygon.n_vertices.at[self.creating_shape_index].set(4), + ), + polygon_shape_roles=state.polygon_shape_roles.at[self.creating_shape_index].set(0), + polygon_highlighted=state.polygon_highlighted.at[self.creating_shape_index].set(highlight), + polygon_densities=state.polygon_densities.at[self.creating_shape_index].set(1.0), + ) + + return state + + if left_click: + if self.creating_shape: + env_state = _add_rect_to_state(pcg_state.env_state, False) + env_state_max = _add_rect_to_state(pcg_state.env_state_max, False) + + env_state = recalculate_mass_and_inertia( + env_state, + self.static_env_params, + env_state.polygon_densities, + env_state.circle_densities, + ) + env_state_max = recalculate_mass_and_inertia( + env_state_max, + self.static_env_params, + env_state.polygon_densities, + env_state.circle_densities, + ) + + pcg_state = pcg_state.replace(env_state=env_state, env_state_max=env_state_max) + + self.creating_shape = False + else: + self.creating_shape_index = jnp.argmin(pcg_state.env_state.polygon.active) + self.create_shape_position = self._get_mouse_position_world_space() + self.creating_shape = True + else: + if self.creating_shape: + env_state = _add_rect_to_state(pcg_state.env_state, True) + env_state_max = _add_rect_to_state(pcg_state.env_state_max, True) + + pcg_state = pcg_state.replace(env_state=env_state, env_state_max=env_state_max) + else: + pass + + return pcg_state + + def _reset_triangles(self): + self.triangle_order = jnp.array([0, 1, 2]) + self.num_triangle_clicks = 0 + self.creating_shape = False + + def _edit_triangle(self, pcg_state: PCGState, left_click: bool, right_click: bool): + if right_click: + self.num_triangle_clicks = 0 + for ri in self._get_polygons_on_mouse(pcg_state.env_state, n_vertices=3): + attached_r, attached_f = self._get_joints_attached_to_shape(pcg_state.env_state, ri) + + def _remove_triangle_from_state(state): + state = state.replace( + polygon=state.polygon.replace( + active=state.polygon.active.at[ri].set(False), + rotation=state.polygon.rotation.at[ri].set(0.0), + ), + joint=state.joint.replace(active=state.joint.active.at[attached_r].set(False)), + ) + + return state + + env_state = _remove_triangle_from_state(pcg_state.env_state) + env_state_max = _remove_triangle_from_state(pcg_state.env_state_max) + env_state_pcg_mask = _remove_triangle_from_state(pcg_state.env_state_pcg_mask) + + env_state = env_state.replace( + collision_matrix=calculate_collision_matrix(self.static_env_params, env_state.joint) + ) + + pcg_state = PCGState( + env_state=env_state, + env_state_max=env_state_max, + env_state_pcg_mask=env_state_pcg_mask, + tied_together=pcg_state.tied_together, + ) + + return pcg_state + + if not self.creating_shape and (1 - pcg_state.env_state.polygon.active.astype(int)).sum() == 0: + return pcg_state + + def get_correct_center_two_verts(verts): + return (jnp.max(verts, axis=0) + jnp.min(verts, axis=0)) / 2 + + def order_clockwise(verts, loose_ordering=False): + # verts has shape (3, 2), order them clockwise. + # https://stackoverflow.com/questions/51074984/sort-vertices-in-clockwise-order + # Calculate centroid + centroid = jnp.mean(verts, axis=0) + # Calculate angles + angles = jnp.round(jnp.arctan2(verts[:, 1] - centroid[1], verts[:, 0] - centroid[0]), 2) + # Order vertices + order = jnp.argsort(-angles, stable=True) + if loose_ordering: + order = jnp.arange(len(order)) + ans = verts[order] + # order is of shape (2, ) or (3, ). I want it to always be of shape 3 + if len(order) < 3: + order = jnp.concatenate([order, jnp.array([2])]) + return ans, order + + def do_triangle_n_click(pcg_state, how_many_clicks, is_on_a_click=False): + n = how_many_clicks + # if we must keep them clockwise all the time, then the one we edit / move around may have varying indices. + current_index_to_change = self.triangle_order[n] + sign = 1 + idxs = jnp.arange(n + 1) + idxs_to_allow = idxs[~(idxs == current_index_to_change)] + + # Get the new vertex and clip its position + new_tentative_vert = ( + self._get_mouse_position_world_space() - pcg_state.env_state.polygon.position[self.creating_shape_index] + ) + new_tentative_vert = jnp.clip( + new_tentative_vert, + jnp.max(pcg_state.env_state.polygon.vertices[self.creating_shape_index, idxs_to_allow], axis=0) + - self.static_env_params.max_shape_size * 0.8, + jnp.min(pcg_state.env_state.polygon.vertices[self.creating_shape_index, idxs_to_allow], axis=0) + + self.static_env_params.max_shape_size * 0.8, + ) + new_verts = pcg_state.env_state.polygon.vertices.at[self.creating_shape_index, current_index_to_change].set( + new_tentative_vert + ) + new_center_two = get_correct_center_two_verts(new_verts[self.creating_shape_index, : n + 1]) + + _, new_center_three = calc_inverse_mass_polygon( + new_verts[self.creating_shape_index], + 3, + self.static_env_params, + 1.0, + ) + new_center = jax.lax.select(n == 1, new_center_two, new_center_three) + + new_verts = new_verts.at[self.creating_shape_index].add(-sign * new_center) + vvs = new_verts[self.creating_shape_index, : n + 1] + + ordered_vertices, new_permutation = order_clockwise(vvs, loose_ordering=not is_on_a_click) + self.triangle_order = self.triangle_order[new_permutation] + new_verts = new_verts.at[self.creating_shape_index, : n + 1].set(ordered_vertices) + + env_state = pcg_state.env_state.replace( + polygon=pcg_state.env_state.polygon.replace( + vertices=new_verts, + position=pcg_state.env_state.polygon.position.at[self.creating_shape_index].add(sign * new_center), + n_vertices=pcg_state.env_state.polygon.n_vertices.at[self.creating_shape_index].set(n + 1), + ), + ) + env_state_max = pcg_state.env_state_max.replace( + polygon=pcg_state.env_state_max.polygon.replace( + vertices=new_verts, + position=pcg_state.env_state_max.polygon.position.at[self.creating_shape_index].add( + sign * new_center + ), + n_vertices=pcg_state.env_state_max.polygon.n_vertices.at[self.creating_shape_index].set(n + 1), + ), + ) + + pcg_state = pcg_state.replace(env_state=env_state, env_state_max=env_state_max) + + return pcg_state + + if left_click: + if self.creating_shape: + assert 3 > self.num_triangle_clicks > 0 + if self.num_triangle_clicks == 1: + pcg_state = do_triangle_n_click(pcg_state, 1, is_on_a_click=True) + self.num_triangle_clicks += 1 + else: # this finishes it + pcg_state = do_triangle_n_click(pcg_state, 2, is_on_a_click=True) + self.creating_shape = False + self.num_triangle_clicks = 0 + pcg_state = pcg_state.replace( + env_state=recalculate_mass_and_inertia( + pcg_state.env_state, + self.static_env_params, + pcg_state.env_state.polygon_densities, + pcg_state.env_state.circle_densities, + ) + ) + + else: + self.triangle_order = jnp.array([0, 1, 2]) + self.creating_shape_index = jnp.argmin(pcg_state.env_state.polygon.active) + self.create_shape_position = self._get_mouse_position_world_space() + self.creating_shape = True + self.num_triangle_clicks = 1 + vertices = jnp.zeros((self.static_env_params.max_polygon_vertices, 2), dtype=jnp.float32) + + def _add_triangle_to_state(state): + state = state.replace( + polygon=state.polygon.replace( + position=state.polygon.position.at[self.creating_shape_index].set( + self.create_shape_position + ), + velocity=state.polygon.velocity.at[self.creating_shape_index].set(jnp.array([0.0, 0.0])), + vertices=state.polygon.vertices.at[self.creating_shape_index].set(vertices), + inverse_mass=state.polygon.inverse_mass.at[self.creating_shape_index].set(1.0), + inverse_inertia=state.polygon.inverse_inertia.at[self.creating_shape_index].set(1.0), + active=state.polygon.active.at[self.creating_shape_index].set(True), + n_vertices=state.polygon.n_vertices.at[self.creating_shape_index].set(1), + ), + polygon_shape_roles=state.polygon_shape_roles.at[self.creating_shape_index].set(0), + polygon_highlighted=state.polygon_highlighted.at[self.creating_shape_index].set(False), + polygon_densities=state.polygon_densities.at[self.creating_shape_index].set(1.0), + ) + + return state + + pcg_state = pcg_state.replace( + env_state=_add_triangle_to_state(pcg_state.env_state), + env_state_max=_add_triangle_to_state(pcg_state.env_state_max), + ) + + elif self.creating_shape: + assert 1 <= self.num_triangle_clicks <= 2 + pcg_state = do_triangle_n_click( + pcg_state, self.num_triangle_clicks, is_on_a_click=self.num_triangle_clicks == 1 + ) + + return pcg_state + + def _edit_joint(self, pcg_state: PCGState, left_click: bool, right_click: bool): + if left_click and pcg_state.env_state.joint.active.all(): + return pcg_state + + if left_click: + joint_index = jnp.argmin(pcg_state.env_state.joint.active) + joint_position = self._get_mouse_position_world_space() + # reverse them so that the joint order and rendering order remains the same. + # We want the first shape to have a lower index than the second shape, with circles always having higher indices compared to rectangles. + circles = self._get_circles_on_mouse(pcg_state.env_state)[::-1] + rects = self._get_polygons_on_mouse(pcg_state.env_state)[::-1] + + if len(rects) + len(circles) >= 2: + r1 = len(rects) >= 1 + r2 = len(rects) >= 2 + + a_index = rects[0] if r1 else circles[0] # + self.static_env_params.num_polygons + b_index = rects[r1 * 1] if r2 else circles[1 - 1 * r1] # + self.static_env_params.num_polygons + + a_shape = pcg_state.env_state.polygon if r1 else pcg_state.env_state.circle + b_shape = pcg_state.env_state.polygon if r2 else pcg_state.env_state.circle + + a = jax.tree.map(lambda x: x[a_index], a_shape) + b = jax.tree.map(lambda x: x[b_index], b_shape) + + a_index += (not r1) * self.static_env_params.num_polygons + b_index += (not r2) * self.static_env_params.num_polygons + + joint_position = snap_to_center(a, joint_position) + joint_position = snap_to_center(b, joint_position) + + a_relative_pos = jnp.matmul(rmat(a.rotation).transpose((1, 0)), joint_position - a.position) + b_relative_pos = jnp.matmul(rmat(b.rotation).transpose((1, 0)), joint_position - b.position) + + def _add_joint_to_state(state): + state = state.replace( + joint=state.joint.replace( + a_index=state.joint.a_index.at[joint_index].set(a_index), + b_index=state.joint.b_index.at[joint_index].set(b_index), + a_relative_pos=state.joint.a_relative_pos.at[joint_index].set(a_relative_pos), + b_relative_pos=state.joint.b_relative_pos.at[joint_index].set(b_relative_pos), + active=state.joint.active.at[joint_index].set(True), + global_position=state.joint.global_position.at[joint_index].set(joint_position), + motor_on=state.joint.motor_on.at[joint_index].set(True), + motor_speed=state.joint.motor_speed.at[joint_index].set(1.0), + motor_power=state.joint.motor_power.at[joint_index].set(1.0), + rotation=state.joint.rotation.at[joint_index].set(b.rotation - a.rotation), + ) + ) + + return state + + env_state = _add_joint_to_state(pcg_state.env_state) + env_state_max = _add_joint_to_state(pcg_state.env_state_max) + + env_state = env_state.replace( + collision_matrix=calculate_collision_matrix(self.static_env_params, env_state.joint) + ) + + pcg_state = pcg_state.replace(env_state=env_state, env_state_max=env_state_max) + + return pcg_state + + def _reset_select_shape(self, pcg_state): + pcg_state = pcg_state.replace( + env_state=pcg_state.env_state.replace( + polygon_highlighted=jnp.zeros_like(pcg_state.env_state.polygon_highlighted), + circle_highlighted=jnp.zeros_like(pcg_state.env_state.circle_highlighted), + ) + ) + self.selected_shape_index = -1 + self.selected_shape_type = ObjectType.POLYGON + self._hide_all_widgets() + return pcg_state + + def _hide_all_widgets(self): + for widget in self.all_widgets.values(): + for w in widget.values(): + w.hide() + + def _show_correct_widgets(self, type: ObjectType | None, do_tie_ui: bool = False): + for widget in self.all_widgets["GENERAL"].values(): + widget.show() + if do_tie_ui: + for widget in self.all_widgets["TIE_TOGETHER"].values(): + widget.show() + + n = len(self.all_selected_shapes) + # {[int(i) for (i, t) in self.all_selected_shapes]} + self.all_widgets["GENERAL"]["lblGeneral"].setText(f"Selected {n} Objects") + return + + for widget in self.all_widgets[type].values(): + widget.show() + if type is None: + self.all_widgets["GENERAL"]["lblGeneral"].setText(f"Global") + else: + self.all_widgets["GENERAL"]["lblGeneral"].setText(f"{type.name} (idx {self.selected_shape_index})") + + def _select_shape_keyboard_shortcuts(self, pcg_state: PCGState, left_click: bool, keys: list[int]): + if left_click: + return pcg_state + if len(keys) != 0 and self.selected_shape_index != -1: + s = 1.0 + ang_s = 0.1 + vel = jnp.array([0.0, 0.0]) + angular_vel = 0.0 + should_toggle_fixed = False + should_toggle_collidable = False + change_angle = 0 + + def add_step(widget_name, direction, speed=10, overwrite_amount=None): + widget = self.all_widgets[self.selected_shape_type][widget_name] + val = widget.getValue() + step = widget.step + amount_to_add = overwrite_amount or step * direction * speed + widget.setValue(jnp.clip(val + amount_to_add, widget.min, widget.max)) + + if pygame.K_w in keys: + add_step("sldPosition_Y", 1) + if pygame.K_s in keys: + add_step("sldPosition_Y", -1) + if pygame.K_a in keys: + add_step("sldPosition_X", -1) + if pygame.K_d in keys: + add_step("sldPosition_X", 1) + + if pygame.K_q in keys: + add_step("sldRotation", 1) + if pygame.K_e in keys: + add_step("sldRotation", -1) + + if pygame.K_f in keys: + self.all_widgets[self.selected_shape_type]["tglFixate"].toggle() + + if pygame.K_c in keys and not (pygame.key.get_mods() & pygame.KMOD_CTRL): + widget = self.all_widgets[self.selected_shape_type]["sldCollidability"] + curr_val = int(widget.getValue()) + widget.setValue((curr_val + 1) % (widget.max + 1)) + + if pygame.K_r in keys and not (pygame.key.get_mods() & pygame.KMOD_CTRL): + widget = self.all_widgets[self.selected_shape_type]["sldRole"] + curr_val = int(widget.getValue()) + widget.setValue((curr_val + 1) % (widget.max + 1)) + + if pygame.K_LEFTBRACKET in keys: + add_step("sldRotation", 1, 10, jnp.pi / 4) + + if pygame.K_RIGHTBRACKET in keys: + add_step("sldRotation", -1, 10, -jnp.pi / 4) + + if pygame.K_c in keys and (pygame.key.get_mods() & pygame.KMOD_CTRL): + # copy + if self.selected_shape_type == ObjectType.POLYGON: # rect + if not self.pcg_state.env_state.polygon.active.all(): + where_to_add = jnp.argmin(pcg_state.env_state.polygon.active) + if where_to_add < self.static_env_params.num_polygons: + + def _copy_polygon(state, shift): + state = state.replace( + polygon=jax.tree.map( + lambda x: x.at[where_to_add].set(x[self.selected_shape_index]), state.polygon + ) + ) + if shift: + state = state.replace( + polygon=state.polygon.replace( + position=state.polygon.position.at[where_to_add].add(0.1), + ), + polygon_highlighted=state.polygon_highlighted.at[where_to_add].set(False), + ) + return state + + pcg_state = pcg_state.replace( + env_state=_copy_polygon(pcg_state.env_state, shift=True), + env_state_max=_copy_polygon(pcg_state.env_state_max, shift=True), + env_state_pcg_mask=_copy_polygon(pcg_state.env_state_pcg_mask, shift=False), + ) + + elif self.selected_shape_type == ObjectType.CIRCLE: # circle + if not self.pcg_state.env_state.circle.active.all(): + where_to_add = jnp.argmin(pcg_state.env_state.circle.active) + if where_to_add < self.static_env_params.num_circles: + + def _copy_circle(state, shift=True): + state = state.replace( + circle=jax.tree.map( + lambda x: x.at[where_to_add].set(x[self.selected_shape_index]), state.circle + ) + ) + if shift: + state = state.replace( + circle=state.circle.replace( + position=state.circle.position.at[where_to_add].add(0.1), + ), + circle_highlighted=state.circle_highlighted.at[where_to_add].set(False), + ) + return state + + pcg_state = pcg_state.replace( + env_state=_copy_circle(pcg_state.env_state), + env_state_max=_copy_circle(pcg_state.env_state_max), + env_state_pcg_mask=_copy_circle(pcg_state.env_state_pcg_mask, shift=False), + ) + + if self.selected_shape_index >= 0: + num = get_numeric_key_pressed(self.pygame_events) + if num is not None: + if self.selected_shape_type in [ObjectType.CIRCLE, ObjectType.POLYGON]: + self.all_widgets[self.selected_shape_type]["sldRole"].setValue(num % 4) + elif self.selected_shape_type == ObjectType.JOINT: + self.all_widgets[self.selected_shape_type]["sldColour"].setValue( + num % self.static_env_params.num_motor_bindings + ) + elif self.selected_shape_type == ObjectType.THRUSTER: + self.all_widgets[self.selected_shape_type]["sldColour"].setValue( + num % self.static_env_params.num_thruster_bindings + ) + + return pcg_state + + def _edit_select_shape(self, pcg_state: PCGState, left_click: bool, right_click: bool, keys: list[int]): + def _find_shape(pcg_state): + found_shape = False + selected_shape_index, selected_shape_type = -1, ObjectType.POLYGON + for ri in self._get_revolute_joints_on_mouse(pcg_state.env_state): + selected_shape_index = ri + selected_shape_type = ObjectType.JOINT + found_shape = True + break + if not found_shape: + for ti in self._get_thrusters_on_mouse(pcg_state.env_state): + selected_shape_index = ti + selected_shape_type = ObjectType.THRUSTER + found_shape = True + break + if not found_shape: + for ri in self._get_polygons_on_mouse(pcg_state.env_state): + pcg_state = pcg_state.replace( + env_state=pcg_state.env_state.replace( + polygon_highlighted=pcg_state.env_state.polygon_highlighted.at[ri].set(True), + ) + ) + selected_shape_index = ri + selected_shape_type = ObjectType.POLYGON + found_shape = True + break + if not found_shape: + for ci in self._get_circles_on_mouse(pcg_state.env_state): + pcg_state = pcg_state.replace( + env_state=pcg_state.env_state.replace( + circle_highlighted=pcg_state.env_state.circle_highlighted.at[ci].set(True), + ) + ) + selected_shape_index = ci + selected_shape_type = ObjectType.CIRCLE + found_shape = True + break + return selected_shape_index, selected_shape_type, found_shape, pcg_state + if found_shape and self.selected_shape_type in self.all_widgets: + self._show_correct_widgets(self.selected_shape_type) + + # if left and shift + if left_click and (pygame.key.get_mods() & pygame.KMOD_SHIFT): + # This is trying to select multiple things. + idx, type, found, pcg_state = _find_shape(pcg_state) + if found: + t = (idx, type) + if t in self.all_selected_shapes: + self.all_selected_shapes.remove(t) + else: + self.all_selected_shapes.append(t) + + self._hide_all_widgets() + self._show_correct_widgets(None, do_tie_ui=True) + elif left_click: + self.all_selected_shapes = [] + self._hide_all_widgets() + pcg_state = self._reset_select_shape(pcg_state) + self.selected_shape_index, self.selected_shape_type, found_shape, pcg_state = _find_shape(pcg_state) + if found_shape: + self.all_selected_shapes = [(self.selected_shape_index, self.selected_shape_type)] + if self.selected_shape_type in self.all_widgets: + self._show_correct_widgets(self.selected_shape_type) + if self.selected_shape_index < 0: + self._show_correct_widgets(None) + + return pcg_state + + def render(self, env_state): + # Clear + self.screen_surface.fill((0, 0, 0)) + + if self.is_editing: + pixels = self._render_fn_edit(env_state) + else: + pixels = self._render_fn(env_state) + pixels = self._render_edit_overlay_fn(pixels, self.is_editing, self.edit_shape_mode.value) + + surface = pygame.surfarray.make_surface(np.array(pixels)) + self.screen_surface.blit(surface, (0, 0)) + + def is_quit_requested(self): + for event in self.pygame_events: + if event.type == pygame.QUIT: + return True + return False + + +@hydra.main(version_base=None, config_path="../configs", config_name="editor") +def main(config): + config = normalise_config(OmegaConf.to_container(config), "EDITOR", editor_config=True) + env_params, static_env_params = generate_params_from_config(config) + static_env_params = static_env_params.replace(frame_skip=config["frame_skip"], downscale=config["downscale"]) + config["env_params"] = to_state_dict(env_params) + config["static_env_params"] = to_state_dict(static_env_params) + + env = make_kinetix_env_from_name("Kinetix-Entity-MultiDiscrete-v1", static_env_params=static_env_params) + env = AutoResetWrapper(env, make_reset_function(static_env_params)) + + seed = config["seed"] + print("seed", seed) + rng = jax.random.PRNGKey(seed) + outer_timer = tmr() + editor = Editor(env, env_params, config, upscale=config["upscale"]) + time_e = tmr() + print("Took {:2f}s to create editor".format(time_e - outer_timer)) + + clock = pygame.time.Clock() + while not editor.is_quit_requested(): + rng, _rng = jax.random.split(rng) + editor.update(_rng) + clock.tick(config["fps"]) + + +if __name__ == "__main__": + main() diff --git a/Kinetix/kinetix/environment/__init__.py b/Kinetix/kinetix/environment/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Kinetix/kinetix/environment/env.py b/Kinetix/kinetix/environment/env.py new file mode 100644 index 0000000000000000000000000000000000000000..7e2689975694fdbb917a16a01003fed8a44d60a1 --- /dev/null +++ b/Kinetix/kinetix/environment/env.py @@ -0,0 +1,829 @@ +import functools +from functools import partial +from typing import Any, Dict, Optional, Tuple, Union + +import chex +import jax +import jax.numpy as jnp +import numpy as np +from chex._src.pytypes import PRNGKey +from gymnax.environments import environment, spaces +from gymnax.environments.environment import TEnvParams, TEnvState +from gymnax.environments.spaces import Space +from jax import lax + +from jax2d.engine import PhysicsEngine, create_empty_sim, recalculate_mass_and_inertia +from jax2d.sim_state import CollisionManifold, SimState +from kinetix.environment.env_state import EnvParams, EnvState, StaticEnvParams +from kinetix.environment.wrappers import ( + AutoReplayWrapper, + AutoResetWrapper, + UnderspecifiedToGymnaxWrapper, + DenseRewardWrapper, + LogWrapper, +) + +from kinetix.pcg.pcg import env_state_to_pcg_state, sample_pcg_state +from kinetix.pcg.pcg_state import PCGState +from kinetix.render.renderer_symbolic_entity import make_render_entities +from kinetix.render.renderer_pixels import make_render_pixels, make_render_pixels_rl +from kinetix.render.renderer_symbolic_flat import make_render_symbolic + +from kinetix.util.saving import load_pcg_state_pickle +from jaxued.environments import UnderspecifiedEnv + + +def create_empty_env(static_env_params): + sim_state = create_empty_sim(static_env_params) + return EnvState( + timestep=0, + thruster_bindings=jnp.zeros(static_env_params.num_thrusters, dtype=jnp.int32), + motor_bindings=jnp.zeros(static_env_params.num_joints, dtype=jnp.int32), + motor_auto=jnp.zeros(static_env_params.num_joints, dtype=bool), + polygon_shape_roles=jnp.zeros(static_env_params.num_polygons, dtype=jnp.int32), + circle_shape_roles=jnp.zeros(static_env_params.num_circles, dtype=jnp.int32), + polygon_highlighted=jnp.zeros(static_env_params.num_polygons, dtype=bool), + circle_highlighted=jnp.zeros(static_env_params.num_circles, dtype=bool), + polygon_densities=jnp.ones(static_env_params.num_polygons, dtype=jnp.float32), + circle_densities=jnp.ones(static_env_params.num_circles, dtype=jnp.float32), + **sim_state.__dict__, + ) + + +def index_motor_actions( + action: jnp.ndarray, + state: EnvState, + clip_min=None, + clip_max=None, +): + # Expand the motor actions to all joints with the same colour + return jnp.clip(action[state.motor_bindings], clip_min, clip_max) + + +def index_thruster_actions( + action: jnp.ndarray, + state: EnvState, + clip_min=None, + clip_max=None, +): + # Expand the thruster actions to all joints with the same colour + return jnp.clip(action[state.thruster_bindings], clip_min, clip_max) + + +def convert_continuous_actions( + action: jnp.ndarray, state: SimState, static_env_params: StaticEnvParams, params: EnvParams +): + action_motor = action[: static_env_params.num_motor_bindings] + action_thruster = action[static_env_params.num_motor_bindings :] + action_motor = index_motor_actions(action_motor, state, -1, 1) + action_thruster = index_thruster_actions(action_thruster, state, 0, 1) + + action_motor = jnp.where(state.motor_auto, jnp.ones_like(action_motor), action_motor) + + action_to_perform = jnp.concatenate([action_motor, action_thruster], axis=0) + return action_to_perform + + +def convert_discrete_actions(action: int, state: SimState, static_env_params: StaticEnvParams, params: EnvParams): + # so, we have + # 0 to NJC * 2 - 1: Joint Actions + # NJC * 2: No-op + # NJC * 2 + 1 to NJC * 2 + 1 + NTC - 1: Thruster Actions + # action here is a categorical action + which_idx = action // 2 + which_dir = action % 2 + actions = ( + jnp.zeros(static_env_params.num_motor_bindings + static_env_params.num_thruster_bindings) + .at[which_idx] + .set(which_dir * 2 - 1) + ) + actions = actions * ( + 1 - (action >= static_env_params.num_motor_bindings * 2) + ) # if action is the last one, set it to zero, i.e., a no-op. Alternatively, if the action is larger than NJC * 2, then it is a thruster action and we shouldn't control the joints. + + actions = jax.lax.select( + action > static_env_params.num_motor_bindings * 2, + actions.at[action - static_env_params.num_motor_bindings * 2 - 1 + static_env_params.num_motor_bindings].set(1), + actions, + ) + + action_motor = index_motor_actions(actions[: static_env_params.num_motor_bindings], state, -1, 1) + action_motor = jnp.where(state.motor_auto, jnp.ones_like(action_motor), action_motor) + action_thruster = index_thruster_actions(actions[static_env_params.num_motor_bindings :], state, 0, 1) + action_to_perform = jnp.concatenate([action_motor, action_thruster], axis=0) + return action_to_perform + + +def convert_multi_discrete_actions( + action: jnp.ndarray, state: SimState, static_env_params: StaticEnvParams, params: EnvParams +): + # Comes in with each action being in {0,1,2} for joints and {0,1} for thrusters + # Convert to [-1., 1.] for joints and [0., 1.] for thrusters + + def _single_motor_action(act): + return jax.lax.switch( + act, + [lambda: 0.0, lambda: 1.0, lambda: -1.0], + ) + + def _single_thruster_act(act): + return jax.lax.select( + act == 0, + 0.0, + 1.0, + ) + + action_motor = jax.vmap(_single_motor_action)(action[: static_env_params.num_motor_bindings]) + action_thruster = jax.vmap(_single_thruster_act)(action[static_env_params.num_motor_bindings :]) + + action_motor = index_motor_actions(action_motor, state, -1, 1) + action_thruster = index_thruster_actions(action_thruster, state, 0, 1) + + action_motor = jnp.where(state.motor_auto, jnp.ones_like(action_motor), action_motor) + + action_to_perform = jnp.concatenate([action_motor, action_thruster], axis=0) + return action_to_perform + + +def make_kinetix_env_from_args( + obs_type, action_type, reset_type, static_env_params=None, auto_reset_fn=None, dense_reward_scale=1.0 +): + if obs_type == "entity": + if action_type == "multidiscrete": + env = KinetixEntityMultiDiscreteActions(should_do_pcg_reset=True, static_env_params=static_env_params) + elif action_type == "discrete": + env = KinetixEntityDiscreteActions(should_do_pcg_reset=True, static_env_params=static_env_params) + elif action_type == "continuous": + env = KinetixEntityContinuousActions(should_do_pcg_reset=True, static_env_params=static_env_params) + else: + raise ValueError(f"Unknown action type: {action_type}") + + elif obs_type == "symbolic": + if action_type == "multidiscrete": + env = KinetixSymbolicMultiDiscreteActions(should_do_pcg_reset=True, static_env_params=static_env_params) + elif action_type == "discrete": + env = KinetixSymbolicDiscreteActions(should_do_pcg_reset=True, static_env_params=static_env_params) + elif action_type == "continuous": + env = KinetixSymbolicContinuousActions(should_do_pcg_reset=True, static_env_params=static_env_params) + else: + raise ValueError(f"Unknown action type: {action_type}") + + elif obs_type == "pixels": + if action_type == "multidiscrete": + env = KinetixPixelsMultiDiscreteActions(should_do_pcg_reset=True, static_env_params=static_env_params) + elif action_type == "discrete": + env = KinetixPixelsDiscreteActions(should_do_pcg_reset=True, static_env_params=static_env_params) + elif action_type == "continuous": + env = KinetixPixelsContinuousActions(should_do_pcg_reset=True, static_env_params=static_env_params) + else: + raise ValueError(f"Unknown action type: {action_type}") + + elif obs_type == "blind": + if action_type == "discrete": + env = KinetixBlindDiscreteActions(should_do_pcg_reset=True, static_env_params=static_env_params) + elif action_type == "continuous": + env = KinetixBlindContinuousActions(should_do_pcg_reset=True, static_env_params=static_env_params) + else: + raise ValueError(f"Unknown action type: {action_type}") + + else: + raise ValueError(f"Unknown observation type: {obs_type}") + + # Wrap + if reset_type == "replay": + env = AutoReplayWrapper(env) + elif reset_type == "reset": + env = AutoResetWrapper(env, sample_level=auto_reset_fn) + else: + raise ValueError(f"Unknown reset type {reset_type}") + + env = UnderspecifiedToGymnaxWrapper(env) + env = DenseRewardWrapper(env, dense_reward_scale=dense_reward_scale) + env = LogWrapper(env) + + return env + + +def make_kinetix_env_from_name(name, static_env_params=None): + kwargs = dict(filename_to_use_for_reset=None, should_do_pcg_reset=True, static_env_params=static_env_params) + values = { + "Kinetix-Pixels-MultiDiscrete-v1": KinetixPixelsMultiDiscreteActions, + "Kinetix-Pixels-Discrete-v1": KinetixPixelsDiscreteActions, + "Kinetix-Pixels-Continuous-v1": KinetixPixelsContinuousActions, + "Kinetix-Symbolic-MultiDiscrete-v1": KinetixSymbolicMultiDiscreteActions, + "Kinetix-Symbolic-Discrete-v1": KinetixSymbolicDiscreteActions, + "Kinetix-Symbolic-Continuous-v1": KinetixSymbolicContinuousActions, + "Kinetix-Blind-Discrete-v1": KinetixBlindDiscreteActions, + "Kinetix-Blind-Continuous-v1": KinetixBlindContinuousActions, + "Kinetix-Entity-Discrete-v1": KinetixEntityDiscreteActions, + "Kinetix-Entity-Continuous-v1": KinetixEntityContinuousActions, + "Kinetix-Entity-MultiDiscrete-v1": KinetixEntityMultiDiscreteActions, + } + + return values[name](**kwargs) + + +class ObservationSpace: + def __init__(self, params: EnvParams, static_env_params: StaticEnvParams): + pass + + def get_obs(self, state: EnvState): + raise NotImplementedError() + + def observation_space(self, params: EnvParams): + raise NotImplementedError() + + +class PixelObservations(ObservationSpace): + def __init__(self, params: EnvParams, static_env_params: StaticEnvParams): + self.render_function = make_render_pixels_rl(params, static_env_params) + self.static_env_params = static_env_params + + def get_obs(self, state: EnvState): + return self.render_function(state) + + def observation_space(self, params: EnvParams) -> spaces.Box: + return spaces.Box( + 0.0, + 1.0, + tuple(a // self.static_env_params.downscale for a in self.static_env_params.screen_dim) + (3,), + dtype=jnp.float32, + ) + + +class SymbolicObservations(ObservationSpace): + def __init__(self, params: EnvParams, static_env_params: StaticEnvParams): + self.render_function = make_render_symbolic(params, static_env_params) + + def get_obs(self, state: EnvState): + return self.render_function(state) + + +class EntityObservations(ObservationSpace): + def __init__(self, params: EnvParams, static_env_params: StaticEnvParams): + self.render_function = make_render_entities(params, static_env_params) + + def get_obs(self, state: EnvState): + return self.render_function(state) + + +class BlindObservations(ObservationSpace): + def __init__(self, params: EnvParams, static_env_params: StaticEnvParams): + self.params = params + + def get_obs(self, state: EnvState): + return jax.nn.one_hot(state.timestep, self.params.max_timesteps + 1) + + +def get_observation_space_from_name(name: str, params, static_env_params): + if "Pixels" in name: + return PixelObservations(params, static_env_params) + elif "Symbolic" in name: + return SymbolicObservations(params, static_env_params) + elif "Entity" in name: + return EntityObservations(params, static_env_params) + if "Blind" in name: + return BlindObservations(params, static_env_params) + else: + raise ValueError(f"Unknown name {name}") + + +class ActionType: + def __init__(self, params: EnvParams, static_env_params: StaticEnvParams): + # This is the processed, unified action space size that is shared with all action types + # 1 dim per motor and thruster + self.unified_action_space_size = static_env_params.num_motor_bindings + static_env_params.num_thruster_bindings + + def action_space(self, params: Optional[EnvParams] = None) -> Union[spaces.Discrete, spaces.Box]: + raise NotImplementedError() + + def process_action(self, action: jnp.ndarray, state: EnvState, static_env_params: StaticEnvParams) -> jnp.ndarray: + raise NotImplementedError() + + def noop_action(self) -> jnp.ndarray: + raise NotImplementedError() + + def random_action(self, rng: chex.PRNGKey): + raise NotImplementedError() + + +class ActionTypeContinuous(ActionType): + def __init__(self, params: EnvParams, static_env_params: StaticEnvParams): + super().__init__(params, static_env_params) + + self.params = params + self.static_env_params = static_env_params + + def action_space(self, params: EnvParams | None = None) -> spaces.Discrete | spaces.Box: + return spaces.Box( + low=jnp.ones(self.unified_action_space_size) * -1.0, + high=jnp.ones(self.unified_action_space_size) * 1.0, + shape=(self.unified_action_space_size,), + ) + + def process_action(self, action: PRNGKey, state: EnvState, static_env_params: StaticEnvParams) -> PRNGKey: + return convert_continuous_actions(action, state, static_env_params, self.params) + + def noop_action(self) -> jnp.ndarray: + return jnp.zeros(self.unified_action_space_size, dtype=jnp.float32) + + def random_action(self, rng: chex.PRNGKey) -> jnp.ndarray: + actions = jax.random.uniform(rng, shape=(self.unified_action_space_size,), minval=-1.0, maxval=1.0) + # Motors between -1 and 1, thrusters between 0 and 1 + actions = actions.at[self.static_env_params.num_motor_bindings :].set( + jnp.abs(actions[self.static_env_params.num_motor_bindings :]) + ) + + return actions + + +class ActionTypeDiscrete(ActionType): + def __init__(self, params: EnvParams, static_env_params: StaticEnvParams): + super().__init__(params, static_env_params) + + self.params = params + self.static_env_params = static_env_params + + self._n_actions = ( + self.static_env_params.num_motor_bindings * 2 + 1 + self.static_env_params.num_thruster_bindings + ) + + def action_space(self, params: Optional[EnvParams] = None) -> spaces.Discrete: + return spaces.Discrete(self._n_actions) + + def process_action(self, action: jnp.ndarray, state: EnvState, static_env_params: StaticEnvParams) -> jnp.ndarray: + return convert_discrete_actions(action, state, static_env_params, self.params) + + def noop_action(self) -> int: + return self.static_env_params.num_motor_bindings * 2 + + def random_action(self, rng: chex.PRNGKey): + return jax.random.randint(rng, shape=(), minval=0, maxval=self._n_actions) + + +class MultiDiscrete(Space): + def __init__(self, n, number_of_dims_per_distribution): + self.number_of_dims_per_distribution = number_of_dims_per_distribution + self.n = n + self.shape = (number_of_dims_per_distribution.shape[0],) + self.dtype = jnp.int_ + + def sample(self, rng: chex.PRNGKey) -> chex.Array: + """Sample random action uniformly from set of categorical choices.""" + uniform_sample = jax.random.uniform(rng, shape=self.shape) * self.number_of_dims_per_distribution + md_dist = jnp.floor(uniform_sample) + return md_dist.astype(self.dtype) + + def contains(self, x) -> jnp.ndarray: + """Check whether specific object is within space.""" + range_cond = jnp.logical_and(x >= 0, (x < self.number_of_dims_per_distribution).all()) + return range_cond + + +class ActionTypeMultiDiscrete(ActionType): + def __init__(self, params: EnvParams, static_env_params: StaticEnvParams): + super().__init__(params, static_env_params) + + self.params = params + self.static_env_params = static_env_params + # This is the action space that will be used internally by an agent + # 3 dims per motor (foward, backward, off) and 2 per thruster (on, off) + self.n_hot_action_space_size = ( + self.static_env_params.num_motor_bindings * 3 + self.static_env_params.num_thruster_bindings * 2 + ) + + def _make_sample_random(): + minval = jnp.zeros(self.unified_action_space_size, dtype=jnp.int32) + maxval = jnp.ones(self.unified_action_space_size, dtype=jnp.int32) * 3 + maxval = maxval.at[self.static_env_params.num_motor_bindings :].set(2) + + def random(rng): + return jax.random.randint(rng, shape=(self.unified_action_space_size,), minval=minval, maxval=maxval) + + return random + + self._random = _make_sample_random + + self.number_of_dims_per_distribution = jnp.concatenate( + [ + np.ones(self.static_env_params.num_motor_bindings) * 3, + np.ones(self.static_env_params.num_thruster_bindings) * 2, + ] + ).astype(np.int32) + + def action_space(self, params: Optional[EnvParams] = None) -> MultiDiscrete: + return MultiDiscrete(self.n_hot_action_space_size, self.number_of_dims_per_distribution) + + def process_action(self, action: jnp.ndarray, state: EnvState, static_env_params: StaticEnvParams) -> jnp.ndarray: + return convert_multi_discrete_actions(action, state, static_env_params, self.params) + + def noop_action(self): + return jnp.zeros(self.unified_action_space_size, dtype=jnp.int32) + + def random_action(self, rng: chex.PRNGKey): + return self._random()(rng) + + +class BasePhysicsEnv(UnderspecifiedEnv): + def __init__( + self, + action_type: ActionType, + observation_space: ObservationSpace, + static_env_params: StaticEnvParams, + target_index: int = 0, + filename_to_use_for_reset=None, # "worlds/games/bipedal_v1", + should_do_pcg_reset: bool = False, + ): + super().__init__() + self.target_index = target_index + self.static_env_params = static_env_params + self.action_type = action_type + self._observation_space = observation_space + self.physics_engine = PhysicsEngine(self.static_env_params) + self.should_do_pcg_reset = should_do_pcg_reset + + self.filename_to_use_for_reset = filename_to_use_for_reset + if self.filename_to_use_for_reset is not None: + self.reset_state = load_pcg_state_pickle(filename_to_use_for_reset) + else: + env_state = create_empty_env(self.static_env_params) + self.reset_state = env_state_to_pcg_state(env_state) + + # Action / Observations + def action_space(self, params: Optional[EnvParams] = None) -> Union[spaces.Discrete, spaces.Box]: + return self.action_type.action_space(params) + + def observation_space(self, params: Any): + return self._observation_space.observation_space(params) + + def get_obs(self, state: EnvState): + return self._observation_space.get_obs(state) + + def step_env(self, rng, state, action: jnp.ndarray, params): + action_processed = self.action_type.process_action(action, state, self.static_env_params) + return self.engine_step(state, action_processed, params) + + def reset_env(self, rng, params): + # Wrap in AutoResetWrapper or AutoReplayWrapper + raise NotImplementedError() + + def reset_env_to_level(self, rng, state: EnvState, params): + if isinstance(state, PCGState): + return self.reset_env_to_pcg_level(rng, state, params) + return self.get_obs(state), state + + def reset_env_to_pcg_level(self, rng, state: PCGState, params): + env_state = sample_pcg_state(rng, state, params, self.static_env_params) + return self.get_obs(env_state), env_state + + @property + def default_params(self) -> EnvParams: + return EnvParams() + + @staticmethod + def default_static_params() -> StaticEnvParams: + return StaticEnvParams() + + def compute_reward_info( + self, state: EnvState, manifolds: tuple[CollisionManifold, CollisionManifold, CollisionManifold] + ) -> float: + def get_active(manifold: CollisionManifold) -> jnp.ndarray: + return manifold.active + + def dist(a, b): + return jnp.linalg.norm(a - b) + + @jax.vmap + def dist_rr(idxa, idxb): + return dist(state.polygon.position[idxa], state.polygon.position[idxb]) + + @jax.vmap + def dist_cc(idxa, idxb): + return dist(state.circle.position[idxa], state.circle.position[idxb]) + + @jax.vmap + def dist_cr(idxa, idxb): + return dist(state.circle.position[idxa], state.polygon.position[idxb]) + + info = { + "GoalR": False, + } + negative_reward = 0 + reward = 0 + distance = 0 + rs = state.polygon_shape_roles * state.polygon.active + cs = state.circle_shape_roles * state.circle.active + + # Polygon Polygon + r1 = rs[self.physics_engine.poly_poly_pairs[:, 0]] + r2 = rs[self.physics_engine.poly_poly_pairs[:, 1]] + reward += ((r1 * r2 == 2) * get_active(manifolds[0])).sum() + negative_reward += ((r1 * r2 == 3) * get_active(manifolds[0])).sum() + + distance += ( + (r1 * r2 == 2) + * dist_rr(self.physics_engine.poly_poly_pairs[:, 0], self.physics_engine.poly_poly_pairs[:, 1]) + ).sum() + + # Circle Polygon + c1 = cs[self.physics_engine.circle_poly_pairs[:, 0]] + r2 = rs[self.physics_engine.circle_poly_pairs[:, 1]] + reward += ((c1 * r2 == 2) * get_active(manifolds[1])).sum() + negative_reward += ((c1 * r2 == 3) * get_active(manifolds[1])).sum() + + t = dist_cr(self.physics_engine.circle_poly_pairs[:, 0], self.physics_engine.circle_poly_pairs[:, 1]) + distance += ((c1 * r2 == 2) * t).sum() + + # Circle Circle + c1 = cs[self.physics_engine.circle_circle_pairs[:, 0]] + c2 = cs[self.physics_engine.circle_circle_pairs[:, 1]] + reward += ((c1 * c2 == 2) * get_active(manifolds[2])).sum() + negative_reward += ((c1 * c2 == 3) * get_active(manifolds[2])).sum() + + distance += ( + (c1 * c2 == 2) + * dist_cc(self.physics_engine.circle_circle_pairs[:, 0], self.physics_engine.circle_circle_pairs[:, 1]) + ).sum() + + reward = jax.lax.select( + negative_reward > 0, + -1.0, + jax.lax.select( + reward > 0, + 1.0, + 0.0, + ), + ) + + info["GoalR"] = reward > 0 + info["distance"] = distance + return reward, info + + @partial(jax.jit, static_argnums=(0,)) + def engine_step(self, env_state, action_to_perform, env_params): + def _single_step(env_state, unused): + env_state, mfolds = self.physics_engine.step( + env_state, + env_params, + action_to_perform, + ) + + reward, info = self.compute_reward_info(env_state, mfolds) + + done = reward != 0 + + info = {"rr_manifolds": None, "cr_manifolds": None} | info + + return env_state, (reward, done, info) + + env_state, (rewards, dones, infos) = jax.lax.scan( + _single_step, env_state, xs=None, length=self.static_env_params.frame_skip + ) + env_state = env_state.replace(timestep=env_state.timestep + 1) + + reward = rewards.max() + done = dones.sum() > 0 | jax.tree.reduce( + jnp.logical_or, jax.tree.map(lambda x: jnp.isnan(x).any(), env_state), False + ) + done |= env_state.timestep >= env_params.max_timesteps + + info = jax.tree.map(lambda x: x[-1], infos) + + return ( + lax.stop_gradient(self.get_obs(env_state)), + lax.stop_gradient(env_state), + reward, + done, + info, + ) + + @functools.partial(jax.jit, static_argnums=(0,)) + def step( + self, + key: chex.PRNGKey, + state: TEnvState, + action: Union[int, float, chex.Array], + params: Optional[TEnvParams] = None, + ) -> Tuple[chex.Array, TEnvState, jnp.ndarray, jnp.ndarray, Dict[Any, Any]]: + raise NotImplementedError() + + +class KinetixPixelsDiscreteActions(BasePhysicsEnv): + def __init__( + self, + static_env_params: StaticEnvParams | None = None, + **kwargs, + ): + + params = self.default_params + static_env_params = static_env_params or self.default_static_params() + super().__init__( + action_type=ActionTypeDiscrete(params, static_env_params), + observation_space=PixelObservations(params, static_env_params), + static_env_params=static_env_params, + **kwargs, + ) + + @property + def name(self) -> str: + return "Kinetix-Pixels-Discrete-v1" + + +class KinetixPixelsContinuousActions(BasePhysicsEnv): + def __init__( + self, + static_env_params: StaticEnvParams | None = None, + **kwargs, + ): + params = self.default_params + static_env_params = static_env_params or self.default_static_params() + super().__init__( + action_type=ActionTypeContinuous(params, static_env_params), + observation_space=PixelObservations(params, static_env_params), + static_env_params=static_env_params, + **kwargs, + ) + + @property + def name(self) -> str: + return "Kinetix-Pixels-Continuous-v1" + + +class KinetixPixelsMultiDiscreteActions(BasePhysicsEnv): + def __init__( + self, + static_env_params: StaticEnvParams | None = None, + **kwargs, + ): + params = self.default_params + static_env_params = static_env_params or self.default_static_params() + super().__init__( + action_type=ActionTypeMultiDiscrete(params, static_env_params), + observation_space=PixelObservations(params, static_env_params), + static_env_params=static_env_params, + **kwargs, + ) + + @property + def name(self) -> str: + return "Kinetix-Pixels-MultiDiscrete-v1" + + +class KinetixSymbolicDiscreteActions(BasePhysicsEnv): + def __init__( + self, + static_env_params: StaticEnvParams | None = None, + **kwargs, + ): + params = self.default_params + static_env_params = static_env_params or self.default_static_params() + super().__init__( + action_type=ActionTypeDiscrete(params, static_env_params), + observation_space=SymbolicObservations(params, static_env_params), + static_env_params=static_env_params, + **kwargs, + ) + + @property + def name(self) -> str: + return "Kinetix-Symbolic-Discrete-v1" + + +class KinetixSymbolicContinuousActions(BasePhysicsEnv): + def __init__( + self, + static_env_params: StaticEnvParams | None = None, + **kwargs, + ): + params = self.default_params + static_env_params = static_env_params or self.default_static_params() + super().__init__( + action_type=ActionTypeContinuous(params, static_env_params), + observation_space=SymbolicObservations(params, static_env_params), + static_env_params=static_env_params, + **kwargs, + ) + + @property + def name(self) -> str: + return "Kinetix-Symbolic-Continuous-v1" + + +class KinetixSymbolicMultiDiscreteActions(BasePhysicsEnv): + def __init__( + self, + static_env_params: StaticEnvParams | None = None, + **kwargs, + ): + params = self.default_params + static_env_params = static_env_params or self.default_static_params() + super().__init__( + action_type=ActionTypeMultiDiscrete(params, static_env_params), + observation_space=SymbolicObservations(params, static_env_params), + static_env_params=static_env_params, + **kwargs, + ) + + @property + def name(self) -> str: + return "Kinetix-Symbolic-MultiDiscrete-v1" + + +class KinetixEntityDiscreteActions(BasePhysicsEnv): + def __init__( + self, + static_env_params: StaticEnvParams | None = None, + **kwargs, + ): + params = self.default_params + static_env_params = static_env_params or self.default_static_params() + super().__init__( + action_type=ActionTypeDiscrete(params, static_env_params), + observation_space=EntityObservations(params, static_env_params), + static_env_params=static_env_params, + **kwargs, + ) + + @property + def name(self) -> str: + return "Kinetix-Entity-Discrete-v1" + + +class KinetixEntityContinuousActions(BasePhysicsEnv): + def __init__( + self, + static_env_params: StaticEnvParams | None = None, + **kwargs, + ): + params = self.default_params + static_env_params = static_env_params or self.default_static_params() + super().__init__( + action_type=ActionTypeContinuous(params, static_env_params), + observation_space=EntityObservations(params, static_env_params), + static_env_params=static_env_params, + **kwargs, + ) + + @property + def name(self) -> str: + return "Kinetix-Entity-Continuous-v1" + + +class KinetixEntityMultiDiscreteActions(BasePhysicsEnv): + def __init__( + self, + static_env_params: StaticEnvParams | None = None, + **kwargs, + ): + params = self.default_params + static_env_params = static_env_params or self.default_static_params() + super().__init__( + action_type=ActionTypeMultiDiscrete(params, static_env_params), + observation_space=EntityObservations(params, static_env_params), + static_env_params=static_env_params, + **kwargs, + ) + + @property + def name(self) -> str: + return "Kinetix-Entity-MultiDiscrete-v1" + + +class KinetixBlindDiscreteActions(BasePhysicsEnv): + def __init__( + self, + static_env_params: StaticEnvParams | None = None, + **kwargs, + ): + params = self.default_params + static_env_params = static_env_params or self.default_static_params() + super().__init__( + action_type=ActionTypeDiscrete(params, static_env_params), + observation_space=BlindObservations(params, static_env_params), + static_env_params=static_env_params, + **kwargs, + ) + + @property + def name(self) -> str: + return "Kinetix-Blind-Discrete-v1" + + +class KinetixBlindContinuousActions(BasePhysicsEnv): + def __init__( + self, + static_env_params: StaticEnvParams | None = None, + **kwargs, + ): + params = self.default_params + static_env_params = static_env_params or self.default_static_params() + super().__init__( + action_type=ActionTypeContinuous(params, static_env_params), + observation_space=BlindObservations(params, static_env_params), + static_env_params=static_env_params, + **kwargs, + ) + + @property + def name(self) -> str: + return "Kinetix-Blind-Continuous-v1" diff --git a/Kinetix/kinetix/environment/env_state.py b/Kinetix/kinetix/environment/env_state.py new file mode 100644 index 0000000000000000000000000000000000000000..34b630e60d9a7ecd960c32242849c6e123892763 --- /dev/null +++ b/Kinetix/kinetix/environment/env_state.py @@ -0,0 +1,43 @@ +from dataclasses import field +import jax.numpy as jnp +from flax import struct + +from jax2d.sim_state import SimState, SimParams, StaticSimParams + + +@struct.dataclass +class EnvState(SimState): + thruster_bindings: jnp.ndarray + motor_bindings: jnp.ndarray + motor_auto: jnp.ndarray + + polygon_shape_roles: jnp.ndarray + circle_shape_roles: jnp.ndarray + + polygon_highlighted: jnp.ndarray + circle_highlighted: jnp.ndarray + + polygon_densities: jnp.ndarray + circle_densities: jnp.ndarray + + timestep: int = 0 + + +@struct.dataclass +class EnvParams(SimParams): + max_timesteps: int = 256 + pixels_per_unit: int = 100 + dense_reward_scale: float = 0.1 + num_shape_roles: int = 4 + + +@struct.dataclass +class StaticEnvParams(StaticSimParams): + screen_dim: tuple[int, int] = (500, 500) + downscale: int = 4 + + frame_skip: int = 1 + max_shape_size: int = 2 + + num_motor_bindings: int = 4 + num_thruster_bindings: int = 2 diff --git a/Kinetix/kinetix/environment/ued/distributions.py b/Kinetix/kinetix/environment/ued/distributions.py new file mode 100644 index 0000000000000000000000000000000000000000..9ec724ec467d0c8719c761536e3a515178cc0c66 --- /dev/null +++ b/Kinetix/kinetix/environment/ued/distributions.py @@ -0,0 +1,349 @@ +from functools import partial +import math + +import chex +import jax +import jax.numpy as jnp +from flax.serialization import to_state_dict +from jax2d.engine import ( + calculate_collision_matrix, + calc_inverse_mass_polygon, + calc_inverse_mass_circle, + calc_inverse_inertia_circle, + calc_inverse_inertia_polygon, + recalculate_mass_and_inertia, + select_shape, + PhysicsEngine, +) +from jax2d.sim_state import SimState, RigidBody, Joint, Thruster +from jax2d.maths import rmat +from kinetix.environment.env_state import EnvParams, EnvState, StaticEnvParams +from kinetix.environment.ued.mutators import ( + mutate_add_connected_shape_proper, + mutate_add_shape, + mutate_add_connected_shape, + mutate_add_thruster, +) +from kinetix.environment.ued.ued_state import UEDParams +from kinetix.environment.ued.util import ( + get_role, + sample_dimensions, + is_space_for_shape, + random_position_on_polygon, + random_position_on_circle, + are_there_shapes_present, + is_space_for_joint, +) +from kinetix.environment.utils import permute_state +from kinetix.util.saving import load_world_state_pickle +from flax import struct +from kinetix.environment.env import create_empty_env + + +@partial(jax.jit, static_argnums=(1, 3, 5, 6, 7, 8, 9, 10)) +def create_vmapped_filtered_distribution( + rng, + level_sampler, + env_params: EnvParams, + static_env_params: StaticEnvParams, + ued_params: UEDParams, + n_samples: int, + env, + do_filter_levels: bool, + level_filter_sample_ratio: int, + env_size_name: str, + level_filter_n_steps: int, +): + + if do_filter_levels and level_filter_n_steps > 0: + sample_ratio = level_filter_sample_ratio + n_unfiltered_samples = sample_ratio * n_samples + rng, _rng = jax.random.split(rng) + _rngs = jax.random.split(_rng, n_unfiltered_samples) + + # unfiltered_levels = jax.vmap(level_sampler, in_axes=(0, None, None, None, None))( + # _rngs, env_params, static_env_params, ued_params, env_size_name + # ) + unfiltered_levels = jax.vmap(level_sampler, in_axes=(0,))(_rngs) + # + + # No-op filtering + + def _noop_step(states, rng): + rng, _rng = jax.random.split(rng) + _rngs = jax.random.split(_rng, n_unfiltered_samples) + + action = jnp.zeros((n_unfiltered_samples, *env.action_space(env_params).shape), dtype=jnp.int32) + + obs, states, reward, done, info = jax.vmap(env.step, in_axes=(0, 0, 0, None))( + _rngs, states, action, env_params + ) + + return states, (done, reward) + + # Wrap levels + rng, _rng = jax.random.split(rng) + _rngs = jax.random.split(_rng, n_unfiltered_samples) + obsv, unfiltered_levels_wrapped = jax.vmap(env.reset_to_level, in_axes=(0, 0, None))( + _rngs, unfiltered_levels, env_params + ) + + rng, _rng = jax.random.split(rng) + _rngs = jax.random.split(_rng, level_filter_n_steps) + _, (done, rewards) = jax.lax.scan(_noop_step, unfiltered_levels_wrapped, xs=_rngs) + + done_indexes = jnp.argmax(done, axis=0) + done_rewards = rewards[done_indexes, jnp.arange(n_unfiltered_samples)] + + noop_solved_indexes = done_rewards > 0.5 + p = noop_solved_indexes * 0.001 + (1 - noop_solved_indexes) * 1.0 + p /= p.sum() + + rng, _rng = jax.random.split(rng) + level_indexes = jax.random.choice( + _rng, jnp.arange(n_unfiltered_samples), shape=(n_samples,), replace=False, p=p + ) + + levels = jax.tree.map(lambda x: x[level_indexes], unfiltered_levels) + + else: + rng, _rng = jax.random.split(rng) + _rngs = jax.random.split(_rng, n_samples) + + levels = jax.vmap(level_sampler, in_axes=(0,))(_rngs) + + return levels + + +@partial(jax.jit, static_argnums=(1, 3, 4, 5)) +def sample_kinetix_level( + rng, + engine: PhysicsEngine, + env_params: EnvParams, + static_env_params: StaticEnvParams, + ued_params: UEDParams, + env_size_name: str = "l", +): + rng, _rng = jax.random.split(rng) + _rngs = jax.random.split(_rng, 12) + + small_force_no_fixate = env_size_name == "s" + + # Start with empty state + state = create_empty_env(static_env_params) + + # Set the floor + prob_of_floor_colour = jnp.array( + [ + ued_params.floor_prob_normal, + ued_params.floor_prob_green, + ued_params.floor_prob_blue, + ued_params.floor_prob_red, + ] + ) + floor_colour = jax.random.choice(_rngs[0], jnp.arange(4), p=prob_of_floor_colour) + state = state.replace(polygon_shape_roles=state.polygon_shape_roles.at[0].set(floor_colour)) + + # When we add shapes we don't want them to collide with already existing shapes + def _choose_proposal_with_least_collisions(proposals, bias=None): + rr, cr, cc = jax.vmap(engine.calculate_collision_manifolds)(proposals) + + rr_collisions = jnp.sum(jnp.sum(rr.active.astype(jnp.int32), axis=-1), axis=-1) + cr_collisions = jnp.sum(cr.active.astype(jnp.int32), axis=-1) + cc_collisions = jnp.sum(cc.active.astype(jnp.int32), axis=-1) + + all_collisions = jnp.concatenate( + [rr_collisions[:, None], cr_collisions[:, None], cc_collisions[:, None]], axis=1 + ) + num_collisions = jnp.sum(all_collisions, axis=-1) + if bias is not None: + num_collisions = num_collisions + bias + + chosen_addition_idx = jnp.argmin(num_collisions) + + return jax.tree.map(lambda x: x[chosen_addition_idx], proposals) + + def _add_filtered_shape(rng, state, force_no_fixate=False): + rng, _rng = jax.random.split(rng) + _rngs = jax.random.split(_rng, ued_params.add_shape_n_proposals) + proposed_additions = jax.vmap(mutate_add_shape, in_axes=(0, None, None, None, None, None))( + _rngs, + state, + env_params, + static_env_params, + ued_params, + jnp.logical_or(force_no_fixate, small_force_no_fixate), + ) + + return _choose_proposal_with_least_collisions(proposed_additions) + + def _add_filtered_connected_shape(rng, state, force_rjoint=False): + rng, _rng = jax.random.split(rng) + _rngs = jax.random.split(_rng, ued_params.add_shape_n_proposals) + + proposed_additions, valid = jax.vmap(mutate_add_connected_shape, in_axes=(0, None, None, None, None, None))( + _rngs, state, env_params, static_env_params, ued_params, force_rjoint + ) + + bias = (jnp.ones(ued_params.add_shape_n_proposals) - 1 * valid) * ued_params.connect_no_visibility_bias + + return _choose_proposal_with_least_collisions(proposed_additions, bias=bias) + + # Add green and blue - make sure they're not both fixated + force_green_no_fixate = (jax.random.uniform(_rngs[1]) < 0.5) | (state.polygon_shape_roles[0] == 2) + state = _add_filtered_shape(_rngs[2], state, force_green_no_fixate) + state = _add_filtered_shape(_rngs[3], state, ~force_green_no_fixate) + + # Forced controls + forced_control = jnp.array([[0, 1], [1, 0], [1, 1]])[jax.random.randint(_rngs[4], (), 0, 3)] + force_thruster, force_motor = forced_control[0], forced_control[1] + + # Forced motor + state = jax.lax.cond( + force_motor, + lambda: _add_filtered_connected_shape(_rngs[5], state, force_rjoint=True), # force the rjoint + lambda: _add_filtered_shape(_rngs[6], state), + ) + + # Forced thruster + state = jax.lax.cond( + force_thruster, + lambda: mutate_add_thruster(_rngs[7], state, env_params, static_env_params, ued_params), + lambda: state, + ) + + # Add rest of shapes + n_shapes_to_add = ( + static_env_params.num_polygons + static_env_params.num_circles - 3 - static_env_params.num_static_fixated_polys + ) + + def _add_shape(state, rng): + rng, _rng = jax.random.split(rng) + _rngs = jax.random.split(_rng, 3) + shape_add_type = jax.random.choice( + _rngs[0], + jnp.arange(3), + p=jnp.array( + [ued_params.add_connected_shape_chance, ued_params.add_shape_chance, ued_params.add_no_shape_chance] + ), + ) + + state = jax.lax.switch( + shape_add_type, + [ + lambda: _add_filtered_connected_shape(_rngs[1], state), + lambda: _add_filtered_shape(_rngs[2], state), + lambda: state, + ], + ) + + return state, None + + state, _ = jax.lax.scan(_add_shape, state, jax.random.split(_rngs[8], n_shapes_to_add)) + + # Add thrusters + n_thrusters_to_add = static_env_params.num_thrusters - 1 + + def _add_thruster(state, rng): + rng, _rng = jax.random.split(rng) + _rngs = jax.random.split(_rng, 3) + state = jax.lax.cond( + jax.random.uniform(_rngs[0]) < ued_params.add_thruster_chance, + lambda: mutate_add_thruster(_rngs[1], state, env_params, static_env_params, ued_params), + lambda: state, + ) + + return state, None + + state, _ = jax.lax.scan(_add_thruster, state, jax.random.split(_rngs[9], n_thrusters_to_add)) + + # Randomly swap green and blue to remove left-right bias + def _swap_roles(do_swap_roles, roles): + role1 = roles == 1 + role2 = roles == 2 + + swapped_roles = roles * ~(role1 | role2) + role1.astype(int) * 2 + role2.astype(int) * 1 + return jax.lax.select(do_swap_roles, swapped_roles, roles) + + do_swap_roles = jax.random.uniform(_rngs[10], shape=()) < 0.5 + # Don't want to swap if floor is non-standard + do_swap_roles &= state.polygon_shape_roles[0] == 0 + state = state.replace( + polygon_shape_roles=_swap_roles(do_swap_roles, state.polygon_shape_roles), + circle_shape_roles=_swap_roles(do_swap_roles, state.circle_shape_roles), + ) + + return permute_state(_rngs[11], state, static_env_params) + + +@partial(jax.jit, static_argnums=(2, 4, 5)) +def create_random_starting_distribution( + rng, + env_params: EnvParams, + static_env_params: StaticEnvParams, + ued_params: UEDParams, + env_size_name: str, + controllable=True, +): + rng, _rng = jax.random.split(rng) + _rngs = jax.random.split(_rng, 15) + d = to_state_dict(ued_params) + ued_params = UEDParams( + **( + d + | dict( + goal_body_size_factor=2.0, + thruster_power_multiplier=2.0, + max_shape_size=0.5, + ) + ), + ) + + prob_of_large_shapes = 0.05 + + ued_params_large_shapes = ued_params.replace( + max_shape_size=static_env_params.max_shape_size * 1.0, goal_body_size_factor=1.0 + ) + + state = create_empty_env(env_params, static_env_params) + + def _get_ued_params(rng): + rng, _rng, _rng2 = jax.random.split(rng, 3) + large_shapes = jax.random.uniform(_rng) < prob_of_large_shapes + params_to_use = jax.tree.map( + lambda x, y: jax.lax.select(large_shapes, x, y), ued_params_large_shapes, ued_params + ) + return params_to_use + + def _my_add_shape(rng, state): + rng, _rng, _rng2 = jax.random.split(rng, 3) + return mutate_add_shape(_rng, state, env_params, static_env_params, _get_ued_params(_rng2)) + + def _my_add_connected_shape(rng, state, **kwargs): + rng, _rng, _rng2 = jax.random.split(rng, 3) + return mutate_add_connected_shape_proper( + _rng, state, env_params, static_env_params, _get_ued_params(_rng2), **kwargs + ) + + # Add the green thing and blue thing + state = _my_add_shape(_rngs[0], state) + state = _my_add_shape(_rngs[1], state) + if controllable: + # Forced controls + forced_control = jnp.array([[0, 1], [1, 0], [1, 1]])[jax.random.randint(_rngs[2], (), 0, 3)] + force_thruster, force_motor = forced_control[0], forced_control[1] + + # Forced motor + state = jax.lax.cond( + force_motor, + lambda: _my_add_connected_shape(_rngs[3], state, force_rjoint=True), # force the rjoint + lambda: state, + ) + + # Forced thruster + state = jax.lax.cond( + force_thruster, + lambda: mutate_add_thruster(_rngs[4], state, env_params, static_env_params, ued_params), + lambda: state, + ) + return permute_state(_rngs[7], state, static_env_params) diff --git a/Kinetix/kinetix/environment/ued/mutators.py b/Kinetix/kinetix/environment/ued/mutators.py new file mode 100644 index 0000000000000000000000000000000000000000..0ad87cc8b5b662838ee7572161ae8cf4dc964642 --- /dev/null +++ b/Kinetix/kinetix/environment/ued/mutators.py @@ -0,0 +1,1157 @@ +from functools import partial +import math + +import chex +import jax +import jax.numpy as jnp +from flax.serialization import to_state_dict +from jax2d.engine import ( + PhysicsEngine, + calculate_collision_matrix, + calc_inverse_mass_polygon, + calc_inverse_mass_circle, + calc_inverse_inertia_circle, + calc_inverse_inertia_polygon, + recalculate_mass_and_inertia, + select_shape, +) +from jax2d.sim_state import SimState, RigidBody, Joint, Thruster +from jax2d.maths import rmat +from kinetix.environment.env_state import EnvParams, EnvState, StaticEnvParams +from kinetix.environment.ued.ued_state import UEDParams +from kinetix.environment.ued.util import ( + count_roles, + is_space_for_joint, + make_velocities_zero, + sample_dimensions, + random_position_on_polygon, + random_position_on_circle, + get_role, + is_space_for_shape, + are_there_shapes_present, +) +from kinetix.util.saving import load_world_state_pickle +from flax import struct +from kinetix.environment.env import create_empty_env +from kinetix.environment.ued.util import make_do_dummy_step + + +@partial(jax.jit, static_argnums=(3, 4)) +def mutate_add_shape( + rng, + state: EnvState, + params: EnvParams, + static_env_params: StaticEnvParams, + ued_params: UEDParams, + force_no_fixate: bool = False, +): + def do_dummy(rng, state): + return state + + def do_add(rng, state): + rng, _rng = jax.random.split(rng) + _rngs = jax.random.split(_rng, 9) + + space_for_new_rect = state.polygon.active.astype(int).sum() < static_env_params.num_polygons + space_for_new_circle = state.circle.active.astype(int).sum() < static_env_params.num_circles + + is_rect_p = jnp.array([space_for_new_rect * 1.0, space_for_new_circle * 1.0]) + is_rect = jax.random.choice(_rngs[0], jnp.array([True, False], dtype=bool), p=is_rect_p) + + rect_index = jnp.argmin(state.polygon.active) + circle_index = jnp.argmin(state.circle.active) + + shape_role = get_role(_rngs[1], state, static_env_params) + + max_shape_size = ( + jnp.array([1.0, ued_params.goal_body_size_factor, ued_params.goal_body_size_factor, 1.0])[shape_role] + * ued_params.max_shape_size + ) + + vertices, half_dimensions, radius = sample_dimensions( + _rngs[2], + static_env_params, + is_rect, + ued_params, + max_shape_size=max_shape_size, + ) + n_vertices = jax.lax.select(ued_params.generate_triangles, jax.random.choice(_rngs[3], jnp.array([3, 4])), 4) + + largest = jnp.max(jnp.array([half_dimensions[0] * jnp.sqrt(2), half_dimensions[1] * jnp.sqrt(2), radius])) + + screen_dim_world = ( + static_env_params.screen_dim[0] / params.pixels_per_unit, + static_env_params.screen_dim[1] / params.pixels_per_unit, + ) + min_x = largest + max_x = screen_dim_world[0] - largest + min_y = largest + 0.4 + max_y = screen_dim_world[1] - largest + + def _og_minmax(): + return min_x, max_x, min_y, max_y + + def _opposite_minmax(): + return jax.lax.switch( + shape_role, + [ + (lambda: (min_x, max_x, min_y, max_y)), + (lambda: (min_x, max_x - screen_dim_world[0] / 2, min_y, max_y)), + (lambda: (min_x + screen_dim_world[0] / 2, max_x, min_y, max_y)), + (lambda: (min_x, max_x, min_y, max_y)), + ], + ) + + min_x, max_x, min_y, max_y = jax.lax.cond( + jax.random.uniform(_rngs[4], shape=()) < ued_params.goal_body_opposide_side_chance, + _opposite_minmax, + _og_minmax, + ) + + position = jax.random.uniform(_rngs[5], shape=(2,)) * jnp.array( + [ + max_x - min_x, + max_y - min_y, + ] + ) + jnp.array([min_x, min_y]) + + rotation = jax.random.uniform(_rngs[6], shape=()) * 2 * math.pi + velocity = jnp.array([0.0, 0.0]) + angular_velocity = 0.0 + + density = 1.0 + inverse_mass = jax.lax.select( + is_rect, + calc_inverse_mass_polygon(vertices, n_vertices, static_env_params, density)[0], + calc_inverse_mass_circle(radius, density), + ) + + inverse_inertia = jax.lax.select( + is_rect, + calc_inverse_inertia_polygon(vertices, n_vertices, static_env_params, density), + calc_inverse_inertia_circle(radius, density), + ) + + fixate_chance = ued_params.fixate_chance_min + (1.0 / inverse_mass) * ued_params.fixate_chance_scale + fixate_chance = jnp.minimum(fixate_chance, ued_params.fixate_chance_max) + is_fixated = jax.random.uniform(_rngs[7], shape=()) < fixate_chance + is_fixated &= ~force_no_fixate + + inverse_mass *= 1 - is_fixated + inverse_inertia *= 1 - is_fixated + + # We want to bias fixated shapes to starting nearer the bottom half of the screen + fixate_shape_bottom_bias = ( + ued_params.fixate_shape_bottom_bias + ued_params.fixate_shape_bottom_bias_special_role * (shape_role != 0) + ) + is_forcing_bottom = jax.random.uniform(_rngs[8]) < fixate_shape_bottom_bias + + + half_screen_height = (static_env_params.screen_dim[1] / params.pixels_per_unit) / 2.0 + position = jax.lax.select( + is_fixated & is_forcing_bottom & (position[1] >= half_screen_height), + position.at[1].add(-half_screen_height), + position, + ) + + # This could be either a rect or a circle + new_rigid_body = RigidBody( + position=position, + velocity=velocity, + inverse_mass=inverse_mass, + inverse_inertia=inverse_inertia, + rotation=rotation, + angular_velocity=angular_velocity, + radius=radius, + active=True, + friction=1.0, + vertices=vertices, + n_vertices=n_vertices, + collision_mode=1, + restitution=0.0, + ) + + state = state.replace( + polygon=jax.tree.map( + lambda x, y: jax.lax.select(is_rect, y.at[rect_index].set(x), y), new_rigid_body, state.polygon + ), + circle=jax.tree.map( + lambda x, y: jax.lax.select(jnp.logical_not(is_rect), y.at[circle_index].set(x), y), + new_rigid_body, + state.circle, + ), + polygon_shape_roles=jax.lax.select( + is_rect, + state.polygon_shape_roles.at[rect_index].set(shape_role), + state.polygon_shape_roles, + ), + circle_shape_roles=jax.lax.select( + jnp.logical_not(is_rect), + state.circle_shape_roles.at[circle_index].set(shape_role), + state.circle_shape_roles, + ), + ) + return recalculate_mass_and_inertia(state, static_env_params, state.polygon_densities, state.circle_densities) + + return jax.lax.cond(is_space_for_shape(state), do_add, do_dummy, rng, state) + + +@partial(jax.jit, static_argnums=(3, 4)) +def mutate_add_connected_shape( + rng, + state: EnvState, + params: EnvParams, + static_env_params: StaticEnvParams, + ued_params: UEDParams, + force_rjoint: bool = False, +): + def do_dummy(rng, state): + return state, False + + def do_add(rng, state): + rng, _rng = jax.random.split(rng) + _rngs = jax.random.split(_rng, 21) + + # Select a random index amongst the currently active shapes. + p_rect = state.polygon.active.at[: static_env_params.num_static_fixated_polys].set(False) + p_circle = state.circle.active + + p_rect = p_rect.astype(jnp.float32) + p_circle = p_circle.astype(jnp.float32) + + p_rect *= (state.polygon.inverse_mass == 0) * ued_params.connect_to_fixated_prob_coeff + ( + state.polygon.inverse_mass != 0 + ) * 1.0 + p_circle *= (state.circle.inverse_mass == 0) * ued_params.connect_to_fixated_prob_coeff + ( + state.circle.inverse_mass != 0 + ) * 1.0 + + # Bias based on number of existing connections + rect_connections = jnp.zeros(static_env_params.num_polygons) + circle_connections = jnp.zeros(static_env_params.num_circles) + + rect_connections = rect_connections.at[state.joint.a_index].add( + jnp.ones(static_env_params.num_joints) + * state.joint.active + * (state.joint.a_index < static_env_params.num_polygons) + ) + rect_connections = rect_connections.at[state.joint.b_index].add( + jnp.ones(static_env_params.num_joints) + * state.joint.active + * (state.joint.b_index < static_env_params.num_polygons) + ) + + circle_connections = circle_connections.at[state.joint.a_index - static_env_params.num_polygons].add( + jnp.ones(static_env_params.num_joints) + * state.joint.active + * (state.joint.a_index >= static_env_params.num_polygons) + ) + circle_connections = circle_connections.at[state.joint.b_index - static_env_params.num_polygons].add( + jnp.ones(static_env_params.num_joints) + * state.joint.active + * (state.joint.b_index >= static_env_params.num_polygons) + ) + + # Rectangles can have up to 2 connections + p_rect *= (-rect_connections + 2.0) / 2.0 + p_rect = jnp.maximum(p_rect, 0.0) + # Circles can have 1 connection + p_circle *= circle_connections == 0 + + # To sample a target rect/circle, we have to have at least one. + target_rect_p = jnp.array( + [ + (state.polygon.active.astype(int).sum() > static_env_params.num_static_fixated_polys) * 1.0, + (state.circle.active.astype(int).sum() > 0) * 1.0, + ] + ) + + # Don't connect to a circle if no connection-free ones exist + target_rect_p = target_rect_p.at[1].mul(p_circle.sum() > 0) + + space_for_new_rect = state.polygon.active.astype(int).sum() < static_env_params.num_polygons + space_for_new_circle = state.circle.active.astype(int).sum() < static_env_params.num_circles + + is_target_rect = jax.random.choice(_rngs[0], jnp.array([True, False], dtype=bool), p=target_rect_p) | ( + ~space_for_new_rect + ) + + is_rect_p = jnp.array([space_for_new_rect * 1.0, space_for_new_circle * 1.0]) + is_rect = jax.random.choice(_rngs[1], jnp.array([True, False], dtype=bool), p=is_rect_p) | ( + ~is_target_rect & space_for_new_rect + ) + + shape_index = jax.lax.select( + is_rect, + jnp.argmin(state.polygon.active), + jnp.argmin(state.circle.active), + ) + unified_shape_index = shape_index + (~is_rect) * static_env_params.num_polygons + + vertices, half_dimensions, radius = sample_dimensions( + _rngs[2], static_env_params, is_rect, ued_params, max_shape_size=ued_params.max_shape_size + ) + n_vertices = jax.lax.select(ued_params.generate_triangles, jax.random.choice(_rngs[3], jnp.array([3, 4])), 4) + + rotation = jax.random.uniform(_rngs[4], shape=()) * 2 * math.pi + velocity = jnp.array([0.0, 0.0]) + angular_velocity = 0.0 + + density = 1.0 + inverse_mass = jax.lax.select( + is_rect, + calc_inverse_mass_polygon(vertices, n_vertices, static_env_params, density)[0], + calc_inverse_mass_circle(radius, density), + ) + + inverse_inertia = jax.lax.select( + is_rect, + calc_inverse_inertia_polygon(vertices, n_vertices, static_env_params, density), + calc_inverse_inertia_circle(radius, density), + ) + + # Joint + + current_num_rjoints = (jnp.logical_not(state.joint.is_fixed_joint) * state.joint.active).sum() + is_rjoint = jnp.logical_or( + jnp.logical_or(jax.random.uniform(_rngs[5]) < 0.5, force_rjoint), + current_num_rjoints < ued_params.min_rjoints_bias, + ) + + joint_index = jnp.argmin(state.joint.active) + + local_joint_position_rect = random_position_on_polygon(_rngs[6], vertices, n_vertices, static_env_params) + local_joint_position_circle = random_position_on_circle(_rngs[7], radius, on_centre_chance=1.0) + + local_joint_position = jax.lax.select(is_rect, local_joint_position_rect, local_joint_position_circle) + + p_rect = jax.lax.select(p_rect.sum() == 0, state.polygon.active.astype(jnp.float32), p_rect) + p_circle = jax.lax.select(p_circle.sum() == 0, state.circle.active.astype(jnp.float32), p_circle) + + target_index = jax.lax.select( + is_target_rect, + jax.random.choice( + _rngs[8], + jnp.arange(static_env_params.num_polygons), + p=p_rect, + ), + jax.random.choice( + _rngs[9], + jnp.arange(static_env_params.num_circles), + p=p_circle, + ), + ) + + unified_target_index = target_index + jnp.logical_not(is_target_rect) * static_env_params.num_polygons + target_shape = select_shape(state, unified_target_index, static_env_params) + + target_joint_position_rect = random_position_on_polygon( + _rngs[10], state.polygon.vertices[target_index], state.polygon.n_vertices[target_index], static_env_params + ) + target_joint_position_circle = random_position_on_circle( + _rngs[11], state.circle.radius[target_index], on_centre_chance=1.0 + ) + + target_joint_position = jax.lax.select(is_target_rect, target_joint_position_rect, target_joint_position_circle) + + # Calculate the world position of the new shape + # We know the rotation of the new shape. We also know the position of the current shape, which we want to remain fixed. + # Set `position` such that local_joint_position is the same as `target_joint_position` + global_joint_pos = target_shape.position + jnp.matmul(rmat(target_shape.rotation), target_joint_position) + position = global_joint_pos - jnp.matmul(rmat(rotation), local_joint_position) + + _, pos_diff = calc_inverse_mass_polygon(vertices, n_vertices, static_env_params, density) + position = jax.lax.select(is_rect, position + pos_diff, position) + local_joint_position = jax.lax.select(is_rect, local_joint_position - pos_diff, local_joint_position) + vertices = jax.lax.select(is_rect, vertices - pos_diff[None], vertices) + + target_role = jax.lax.select( + is_target_rect, state.polygon_shape_roles[target_index], state.circle_shape_roles[target_index] + ) + + # We cannot have role 1 and role 2 being connected. + p = jnp.array([1.0, 1.0, 1.0, 1.0]) + # If role is 0, keep all probs at 1, otherwise set the target role's complement to 0 prob + # 3 - role turns 1 to 2 and 2 to 1 + # If the target role is three, we set everything to zero except for the default + p = jax.lax.select( + target_role == 0, + p, + jax.lax.select( + target_role <= 2, + p.at[3 - target_role].set(False).at[3].set(False), + (p.at[2].set(False).at[1].set(False)), + ), + ) + + shape_role = get_role(_rngs[12], state, static_env_params, initial_p=p) + + # This could be either a rect or a circle + new_rigid_body = RigidBody( + position=position, + velocity=velocity, + inverse_mass=inverse_mass, + inverse_inertia=inverse_inertia, + rotation=rotation, + angular_velocity=angular_velocity, + radius=radius, + active=True, + friction=1.0, + vertices=vertices, + n_vertices=n_vertices, + collision_mode=1, + restitution=0.0, + ) + + # Change the shape indices such that a_index is less than b_index + a_index = shape_index + (1 - is_rect) * static_env_params.num_polygons + b_index = target_index + (1 - is_target_rect) * static_env_params.num_polygons + + should_swap = a_index > b_index + a_index, b_index, local_joint_position, target_joint_position, shape_a, shape_b = jax.lax.cond( + should_swap, + lambda x: (x[1], x[0], x[3], x[2], x[5], x[4]), # pairwise swap + lambda x: x, + (a_index, b_index, local_joint_position, target_joint_position, new_rigid_body, target_shape), + ) + + motor_on = jax.random.uniform(_rngs[13], shape=()) < ued_params.motor_on_chance + joint_colour = jax.random.randint(_rngs[14], shape=(), minval=0, maxval=static_env_params.num_motor_bindings) + joint_rotation = shape_b.rotation - shape_a.rotation + + motor_speed = jax.random.uniform( + _rngs[15], shape=(), minval=ued_params.motor_min_speed, maxval=ued_params.motor_max_speed + ) + + motor_power = jax.random.uniform( + _rngs[16], shape=(), minval=ued_params.motor_min_power, maxval=ued_params.motor_max_power + ) + wheel_power = jax.random.uniform( + _rngs[20], shape=(), minval=ued_params.motor_min_power, maxval=ued_params.wheel_max_power + ) + + # High-powered wheels break the physics engine - this is a temporary fix + motor_power = jax.lax.select(is_rect & is_target_rect, motor_power, wheel_power) + + motor_has_joint_limits = jax.random.uniform(_rngs[17], shape=()) < ued_params.joint_limit_chance + motor_has_joint_limits &= is_rect & is_target_rect + joint_limit_min = ( + jax.random.uniform(_rngs[18], shape=(), minval=-ued_params.joint_limit_max, maxval=0.0) + * motor_has_joint_limits + ) + joint_limit_max = ( + jax.random.uniform(_rngs[19], shape=(), minval=0.0, maxval=ued_params.joint_limit_max) + * motor_has_joint_limits + ) + + rjoint = Joint( + a_index=a_index, + b_index=b_index, + a_relative_pos=local_joint_position, + b_relative_pos=target_joint_position, + global_position=global_joint_pos, + active=True, + motor_speed=motor_speed, + motor_power=motor_power, + motor_on=motor_on, + # colour=joint_colour, + motor_has_joint_limits=motor_has_joint_limits, + min_rotation=joint_limit_min, + max_rotation=joint_limit_max, + is_fixed_joint=False, + rotation=0.0, + acc_impulse=jnp.zeros((2,), dtype=jnp.float32), + acc_r_impulse=jnp.zeros((), dtype=jnp.float32), + ) + + fjoint = Joint( + a_index=a_index, + b_index=b_index, + a_relative_pos=local_joint_position, + b_relative_pos=target_joint_position, + global_position=global_joint_pos, + active=True, + rotation=joint_rotation, + acc_impulse=jnp.zeros((2,), dtype=jnp.float32), + acc_r_impulse=jnp.zeros((), dtype=jnp.float32), + is_fixed_joint=True, + motor_has_joint_limits=False, + min_rotation=0.0, + max_rotation=0.0, + motor_on=False, + motor_power=0.0, + motor_speed=0.0, + ) + + state = state.replace( + polygon=jax.tree.map( + lambda x, y: jax.lax.select(is_rect, y.at[shape_index].set(x), y), new_rigid_body, state.polygon + ), + circle=jax.tree.map( + lambda x, y: jax.lax.select(jnp.logical_not(is_rect), y.at[shape_index].set(x), y), + new_rigid_body, + state.circle, + ), + joint=jax.tree.map( + lambda rj, fj, y: jax.lax.select(is_rjoint, y.at[joint_index].set(rj), y.at[joint_index].set(fj)), + rjoint, + fjoint, + state.joint, + ), + polygon_shape_roles=jax.lax.select( + is_rect, + state.polygon_shape_roles.at[shape_index].set(shape_role), + state.polygon_shape_roles, + ), + circle_shape_roles=jax.lax.select( + jnp.logical_not(is_rect), + state.circle_shape_roles.at[shape_index].set(shape_role), + state.circle_shape_roles, + ), + motor_bindings=state.motor_bindings.at[joint_index].set(joint_colour), + ) + + # We need the new collision matrix. + state = state.replace(collision_matrix=calculate_collision_matrix(static_env_params, state.joint)) + state = recalculate_mass_and_inertia(state, static_env_params, state.polygon_densities, state.circle_densities) + + # Was this a valid addition? + # We calculate whether (assuming the possiblity of 360 degree rotation around the joint) + # both shapes can be visible + # This is to remove the common degenerate pattern of connected shapes being fully inside each other + def _get_min_rect_dist(r_id, local_pos): + rect: RigidBody = jax.tree.map(lambda x: x[r_id], state.polygon) + + half_width = (jnp.max(rect.vertices[:, 0]) - jnp.min(rect.vertices[:, 0])) / 2.0 + half_height = (jnp.max(rect.vertices[:, 1]) - jnp.min(rect.vertices[:, 1])) / 2.0 + + dist_x = half_width - jnp.abs(local_pos[0]) + dist_y = half_height - jnp.abs(local_pos[1]) + + return jnp.minimum(dist_x, dist_y) + + def _get_max_rect_dist(r_id, local_pos): + rect: RigidBody = jax.tree.map(lambda x: x[r_id], state.polygon) + + half_width = (jnp.max(rect.vertices[:, 0]) - jnp.min(rect.vertices[:, 0])) / 2.0 + half_height = (jnp.max(rect.vertices[:, 1]) - jnp.min(rect.vertices[:, 1])) / 2.0 + + dist_x = jnp.maximum( + jnp.abs(half_width - local_pos[0]), + jnp.abs(-half_width - local_pos[0]), + ) + + dist_y = jnp.maximum( + jnp.abs(half_height - local_pos[1]), + jnp.abs(-half_height - local_pos[1]), + ) + + return jnp.sqrt(dist_x * dist_x + dist_y * dist_y) + + def are_both_shapes_showing(idx1, idx2, local_pos1, local_pos2): + def _is_small_shape_showing(small_idx, big_idx, small_local_pos, big_local_pos): + small_is_poly = small_idx < static_env_params.num_polygons + big_is_poly = big_idx < static_env_params.num_polygons + + # CC + cc_result = False + + # CR + cr_r_dist = _get_min_rect_dist(big_idx, big_local_pos) + cr_result = ( + cr_r_dist + ued_params.connect_visibility_min + < state.circle.radius[small_idx - static_env_params.num_polygons] + ) + + # RC + rc_r_dist = _get_max_rect_dist(small_idx, small_local_pos) + rc_result = ( + rc_r_dist + > state.circle.radius[big_idx - static_env_params.num_polygons] + ued_params.connect_visibility_min + ) + + # RR + rr_small_dist = _get_max_rect_dist(small_idx, small_local_pos) + rr_big_dist = _get_min_rect_dist(big_idx, big_local_pos) + rr_result = rr_small_dist > rr_big_dist + ued_params.connect_visibility_min + + # Select + return jax.lax.select( + small_is_poly, + jax.lax.select(big_is_poly, rr_result, rc_result), + jax.lax.select(big_is_poly, cr_result, cc_result), + ) + + # Are both shapes showing? + return _is_small_shape_showing(idx1, idx2, local_pos1, local_pos2) & _is_small_shape_showing( + idx2, idx1, local_pos2, local_pos1 + ) + + valid = are_both_shapes_showing( + unified_shape_index, unified_target_index, local_joint_position, target_joint_position + ) + return state, valid + + # To add a connected shape, we must have both at least one existing shape and space + return jax.lax.cond( + is_space_for_shape(state) & are_there_shapes_present(state, static_env_params) & is_space_for_joint(state), + do_add, + do_dummy, + rng, + state, + ) + + +@partial(jax.jit, static_argnums=(3, 4)) +def mutate_add_connected_shape_proper( + rng, + state: EnvState, + params: EnvParams, + static_env_params: StaticEnvParams, + ued_params: UEDParams, + force_rjoint: bool = False, +): + return mutate_add_connected_shape(rng, state, params, static_env_params, ued_params, force_rjoint=force_rjoint)[0] + + +@partial(jax.jit, static_argnums=(3, 4)) +def mutate_remove_shape( + rng, state: EnvState, params: EnvParams, static_env_params: StaticEnvParams, ued_params: UEDParams +): + + can_remove_mask = ( + jnp.concatenate([state.polygon.active, state.circle.active]) + .at[: static_env_params.num_static_fixated_polys] + .set(False) + ) + + def dummy(rng, state): + return state + + def do_remove(rng, state: EnvState): + rng, _rng = jax.random.split(rng) + rngs = jax.random.split(_rng, 2) + p = can_remove_mask.astype(jnp.float32) + index_to_remove = jax.random.choice(rngs[0], jnp.arange(can_remove_mask.shape[0]), p=p) + is_rect = index_to_remove < static_env_params.num_polygons + state = state.replace( + polygon=state.polygon.replace( + active=jax.lax.select( + is_rect, state.polygon.active.at[index_to_remove].set(False), state.polygon.active + ) + ), + circle=state.circle.replace( + active=jax.lax.select( + jnp.logical_not(is_rect), + state.circle.active.at[index_to_remove - static_env_params.num_polygons].set(False), + state.circle.active, + ) + ), + ) + # We need to now remove any joints connected to this shape + joints_to_remove = (state.joint.a_index == index_to_remove) | (state.joint.b_index == index_to_remove) + + thrusters_to_remove = state.thruster.object_index == index_to_remove + + state = state.replace( + joint=state.joint.replace(active=jnp.where(joints_to_remove, False, state.joint.active)), + thruster=state.thruster.replace(active=jnp.where(thrusters_to_remove, False, state.thruster.active)), + ) + # Now recalculate collision matrix + state = state.replace(collision_matrix=calculate_collision_matrix(static_env_params, state.joint)) + return state + + return jax.lax.cond(can_remove_mask.sum() > 0, do_remove, dummy, rng, state) + + +@partial(jax.jit, static_argnums=(3, 4)) +def mutate_remove_joint( + rng, state: EnvState, params: EnvParams, static_env_params: StaticEnvParams, ued_params: UEDParams +): + can_remove_mask = state.joint.active + + def dummy(rng, state): + return state + + def do_remove(rng, state): + rng, _rng = jax.random.split(rng) + rngs = jax.random.split(_rng, 2) + p = can_remove_mask.astype(jnp.float32) + index_to_remove = jax.random.choice(rngs[0], jnp.arange(can_remove_mask.shape[0]), p=p) + state = state.replace(joint=state.joint.replace(active=state.joint.active.at[index_to_remove].set(False))) + # Recalculate collision matrix. + state = state.replace(collision_matrix=calculate_collision_matrix(static_env_params, state.joint)) + return state + + return jax.lax.cond(can_remove_mask.sum() > 0, do_remove, dummy, rng, state) + + +@partial(jax.jit, static_argnums=(3, 4)) +def mutate_swap_role( + rng, state: EnvState, params: EnvParams, static_env_params: StaticEnvParams, ued_params: UEDParams +): + def _cr(*args): + return count_roles(*args, include_static_polys=False) + + role_counts = jax.vmap(_cr, (None, None, 0))(state, static_env_params, jnp.arange(4)) + are_there_multiple_roles = (role_counts > 0).sum() > 1 + + def dummy(rng, state): + return state + + def do_swap(rng, state): + rng, _rng = jax.random.split(rng) + rngs = jax.random.split(_rng, 2) + all_roles = jnp.concatenate([state.polygon_shape_roles, state.circle_shape_roles]) + + p = ( + (jnp.concatenate([state.polygon.active, state.circle.active])) + .astype(jnp.float32) + .at[: static_env_params.num_static_fixated_polys] + .set(0.0) + ) + shape_idx_a = jax.random.choice( + rngs[0], jnp.arange(static_env_params.num_polygons + static_env_params.num_circles), p=p + ) + role_a = all_roles[shape_idx_a] + p = jnp.where(all_roles == role_a, 0.0, p) + shape_idx_b = jax.random.choice( + rngs[1], jnp.arange(static_env_params.num_polygons + static_env_params.num_circles), p=p + ) + role_b = all_roles[shape_idx_b] + role_a, role_b = role_b, role_a + + for idx, role in [(shape_idx_a, role_a), (shape_idx_b, role_b)]: + is_rect = idx < static_env_params.num_polygons + state = state.replace( + polygon_shape_roles=jax.lax.select( + is_rect, state.polygon_shape_roles.at[idx].set(role), state.polygon_shape_roles + ), + circle_shape_roles=jax.lax.select( + jnp.logical_not(is_rect), + state.circle_shape_roles.at[idx - static_env_params.num_polygons].set(role), + state.circle_shape_roles, + ), + ) + return state + + return jax.lax.cond(are_there_multiple_roles, do_swap, dummy, rng, state) + + +@partial(jax.jit, static_argnums=(3, 4)) +def mutate_toggle_fixture( + rng, state: EnvState, params: EnvParams, static_env_params: StaticEnvParams, ued_params: UEDParams +): + can_toggle_mask = ( + jnp.concatenate([state.polygon.active, state.circle.active]) + .at[: static_env_params.num_static_fixated_polys] + .set(False) + ) + + def dummy(rng, state): + return state + + def do_toggle(rng, state: EnvState): + rng, _rng = jax.random.split(rng) + rngs = jax.random.split(_rng, 2) + p = can_toggle_mask.astype(jnp.float32) + index_to_remove = jax.random.choice(rngs[0], jnp.arange(can_toggle_mask.shape[0]), p=p) + is_rect = index_to_remove < static_env_params.num_polygons + is_current_fixed = ( + jax.lax.select( + is_rect, + state.polygon.inverse_inertia[index_to_remove], + state.circle.inverse_inertia[index_to_remove - static_env_params.num_polygons], + ) + == 0.0 + ) + + is_current_fixed = is_current_fixed * 1.0 # if it is fixed, we set it to 1.0 and recalc. + # If it is not fixed, this is 0.0, and it makes it fixed. + + state = state.replace( + polygon=state.polygon.replace( + inverse_inertia=jax.lax.select( + is_rect, + state.polygon.inverse_inertia.at[index_to_remove].set(is_current_fixed), + state.polygon.inverse_inertia, + ), + inverse_mass=jax.lax.select( + is_rect, + state.polygon.inverse_mass.at[index_to_remove].set(is_current_fixed), + state.polygon.inverse_mass, + ), + ), + circle=state.circle.replace( + inverse_inertia=jax.lax.select( + jnp.logical_not(is_rect), + state.circle.inverse_inertia.at[index_to_remove - static_env_params.num_polygons].set( + is_current_fixed + ), + state.circle.inverse_inertia, + ), + inverse_mass=jax.lax.select( + jnp.logical_not(is_rect), + state.circle.inverse_mass.at[index_to_remove - static_env_params.num_polygons].set( + is_current_fixed + ), + state.circle.inverse_mass, + ), + ), + ) + + state = recalculate_mass_and_inertia(state, static_env_params, state.polygon_densities, state.circle_densities) + return state + + return jax.lax.cond(can_toggle_mask.sum() > 0, do_toggle, dummy, rng, state) + + +@partial(jax.jit, static_argnums=(3, 4)) +def mutate_add_thruster( + rng, state: EnvState, params: EnvParams, static_env_params: StaticEnvParams, ued_params: UEDParams +): + is_fixated = jnp.concatenate([state.polygon.inverse_mass == 0, state.circle.inverse_mass == 0]) + # is_fixated = jnp.zeros_like(is_fixated, dtype=bool) + is_active = jnp.concatenate([state.polygon.active, state.circle.active]) + can_add_mask = is_active & (~is_fixated) + can_add_mask = jnp.logical_and(is_active, jnp.logical_not(is_fixated)) + + def dummy(rng, state): + return state + + def do_add(rng, state: EnvState): + rng, _rng = jax.random.split(rng) + _rngs = jax.random.split(_rng, 10) + p = can_add_mask.astype(jnp.float32) + shape_index = jax.random.choice(_rngs[0], jnp.arange(can_add_mask.shape[0]), p=p) + thruster_idx = jnp.argmin(state.thruster.active) + + shape = select_shape(state, shape_index, static_env_params) + + position_to_add_thruster = jax.lax.select( + shape_index < static_env_params.num_polygons, + random_position_on_polygon(_rngs[1], shape.vertices, shape.n_vertices, static_env_params), + random_position_on_circle(_rngs[2], shape.radius, on_centre_chance=0.0), + ) + + direction_to_com = ((jax.random.uniform(_rngs[3]) > 0.5) * 2 - 1) * position_to_add_thruster + direction_to_com = jax.lax.select( + jnp.linalg.norm(direction_to_com) == 0.0, jnp.array([1.0, 0.0]), direction_to_com + ) + + thruster_angle = jax.lax.select( + jax.random.uniform(_rngs[4]) < ued_params.thruster_align_com_prob, + jnp.atan2(direction_to_com[1], direction_to_com[0]), # test this + jax.random.uniform( + _rngs[5], + (), + ) + * 2 + * jnp.pi, + ) + + thruster_power = jax.random.uniform(_rngs[6]) * 1.5 + 0.5 + + thruster = Thruster( + object_index=shape_index, + active=True, + relative_position=position_to_add_thruster, # jnp.array([0.0, 0.0]), # a bit of a hack but reasonable. + rotation=thruster_angle, # jax.random.choice(rngs[1], jnp.arange(4) * jnp.pi / 2), + power=1.0 + / jax.lax.select(shape.inverse_mass == 0, 1.0, shape.inverse_mass) + * ued_params.thruster_power_multiplier + * thruster_power, + global_position=shape.position + jnp.matmul(rmat(shape.rotation), position_to_add_thruster), + ) + thruster_colour = jax.random.randint( + _rngs[7], shape=(), minval=0, maxval=static_env_params.num_thruster_bindings + ) + + state = state.replace( + thruster=jax.tree_map(lambda y, x: y.at[thruster_idx].set(x), state.thruster, thruster), + thruster_bindings=state.thruster_bindings.at[thruster_idx].set(thruster_colour), + ) + + return state + + return jax.lax.cond( + jnp.logical_and((can_add_mask.sum() > 0), (jnp.logical_not(state.thruster.active).sum() > 0)), + do_add, + dummy, + rng, + state, + ) + + +@partial(jax.jit, static_argnums=(3, 4)) +def mutate_change_gravity( + rng, state: EnvState, params: EnvParams, static_env_params: StaticEnvParams, ued_params: UEDParams +): + rng, _rng = jax.random.split(rng) + rngs = jax.random.split(_rng, 2) + new_gravity = jax.lax.select( + jax.random.uniform(rngs[0]) < 0.5, + jnp.array([0.0, -9.8]), + jnp.array([0.0, jax.random.uniform(rngs[1], minval=-9.8, maxval=0)]), + ) + + return state.replace(gravity=new_gravity) + + +@partial(jax.jit, static_argnums=(3, 4)) +def mutate_remove_thruster( + rng, state: EnvState, params: EnvParams, static_env_params: StaticEnvParams, ued_params: UEDParams +): + are_there_thrusters = state.thruster.active + + def dummy(rng, state): + return state + + def do_remove(rng, state): + rng, _rng = jax.random.split(rng) + rngs = jax.random.split(_rng, 2) + p = are_there_thrusters.astype(jnp.float32) + thruster_idx = jax.random.choice(rngs[0], jnp.arange(are_there_thrusters.shape[0]), p=p) + return state.replace(thruster=state.thruster.replace(active=state.thruster.active.at[thruster_idx].set(False))) + + return jax.lax.cond(are_there_thrusters.sum() > 0, do_remove, dummy, rng, state) + + +def make_mutate_change_shape_size(params, static_env_params): + do_dummy_step = make_do_dummy_step(params, static_env_params) + + @partial(jax.jit, static_argnums=(3, 4)) + def mutate_change_shape_size( + rng, state: EnvState, params: EnvParams, static_env_params: StaticEnvParams, ued_params: UEDParams + ): + shape_active = jnp.concatenate( + [state.polygon.active.at[: static_env_params.num_static_fixated_polys].set(False), state.circle.active] + ) + + def dummy(rng, state): + return state + + def do_change(rng, state): + rng, _rng = jax.random.split(rng) + rngs = jax.random.split(_rng, 10) + p = shape_active.astype(jnp.float32) + shape_idx = jax.random.choice(rngs[0], jnp.arange(shape_active.shape[0]), p=p) + is_rect = shape_idx < static_env_params.num_polygons + vertices, _, radius = sample_dimensions( + rngs[1], static_env_params, is_rect, ued_params, max_shape_size=ued_params.max_shape_size + ) + + idx_new_top_left = jnp.argmin(vertices[:, 0] * 100 + vertices[:, 1]) + idx_old_top_left = jnp.argmin( + state.polygon.vertices[shape_idx, :, 0] * 100 + state.polygon.vertices[shape_idx, :, 1] + ) + scale_rect = (vertices[idx_new_top_left]) / (state.polygon.vertices[shape_idx, idx_old_top_left]) + scale_circle = radius / state.circle.radius[shape_idx - static_env_params.num_polygons] + vertices = state.polygon.vertices[shape_idx] * scale_rect + + scale = jax.lax.select( + is_rect, + scale_rect, + jnp.array([scale_circle, scale_circle]), + ) + + is_a = ((state.joint.a_index == shape_idx) & state.joint.active)[:, None] + is_b = ((state.joint.b_index == shape_idx) & state.joint.active)[:, None] + state = state.replace( + joint=state.joint.replace( + a_relative_pos=(state.joint.a_relative_pos * scale[None]) * is_a + + (1 - is_a) * state.joint.a_relative_pos, + b_relative_pos=(state.joint.b_relative_pos * scale[None]) * is_b + + (1 - is_b) * state.joint.b_relative_pos, + ), + polygon=state.polygon.replace( + vertices=jax.lax.select( + is_rect, state.polygon.vertices.at[shape_idx].set(vertices), state.polygon.vertices + ), + ), + circle=state.circle.replace( + radius=jax.lax.select( + jnp.logical_not(is_rect), + state.circle.radius.at[shape_idx - static_env_params.num_polygons].set(radius), + state.circle.radius, + ) + ), + ) + + def _ss(state, _): + return do_dummy_step(state), None + + state = jax.lax.scan(_ss, state, jnp.arange(5))[0] + return recalculate_mass_and_inertia( + state, static_env_params, state.polygon_densities, state.circle_densities + ) + + return jax.lax.cond(shape_active.sum() > 0, do_change, dummy, rng, state) + + return mutate_change_shape_size + + +@partial(jax.jit, static_argnums=(3, 4)) +def mutate_change_shape_location( + rng, state: EnvState, params: EnvParams, static_env_params: StaticEnvParams, ued_params: UEDParams +): + shape_active = jnp.concatenate( + [state.polygon.active.at[: static_env_params.num_static_fixated_polys].set(False), state.circle.active] + ) + + def dummy(rng, state): + return state + + def do_change(rng, state): + rng, _rng = jax.random.split(rng) + rngs = jax.random.split(_rng, 10) + p = shape_active.astype(jnp.float32) + shape_idx = jax.random.choice(rngs[0], jnp.arange(shape_active.shape[0]), p=p) + delta_pos = jax.random.uniform(rngs[1], shape=(2,)) - 0.5 # [-0.5, 0.5] + + positions = jnp.concatenate([state.polygon.position, state.circle.position]) + + mask_of_shape_locations_to_change = ( + (state.collision_matrix[shape_idx] == 0).at[: static_env_params.num_static_fixated_polys].set(False) + ) + # check the new positions, but then maybe revert if any shape becomes out of bounds now. + new_positions_tentative = positions * ( + 1 - mask_of_shape_locations_to_change[:, None] + ) + mask_of_shape_locations_to_change[:, None] * (positions + delta_pos[None]) + + polys = state.polygon + p_pos = new_positions_tentative[: static_env_params.num_polygons] + c_pos = new_positions_tentative[static_env_params.num_polygons :] # state.circle.position + rad = state.circle.radius + rect_vertex_mask = jnp.arange(static_env_params.max_polygon_vertices)[None] < polys.n_vertices[:, None] + rect_mask = polys.active.at[: static_env_params.num_static_fixated_polys].set(False) + circ_mask = state.circle.active + # check if new pos maybe goes out of bounds: + min_x, max_x, min_y, max_y = ( + jnp.minimum( + jnp.min( + p_pos[:, 0] + jnp.min(polys.vertices[:, :, 0], where=rect_vertex_mask, initial=0, axis=1), + where=rect_mask, + initial=jnp.inf, + ), + jnp.min(c_pos[:, 0] - rad, where=circ_mask, initial=jnp.inf), + ), + jnp.maximum( + jnp.max( + p_pos[:, 0] + jnp.max(polys.vertices[:, :, 0], where=rect_vertex_mask, initial=0, axis=1), + where=rect_mask, + initial=-jnp.inf, + ), + jnp.max(c_pos[:, 0] + rad, where=circ_mask, initial=-jnp.inf), + ), + jnp.minimum( + jnp.min( + p_pos[:, 1] + jnp.min(polys.vertices[:, :, 1], where=rect_vertex_mask, initial=0, axis=1), + where=rect_mask, + initial=jnp.inf, + ), + jnp.min(c_pos[:, 1] - rad, where=circ_mask, initial=jnp.inf), + ), + jnp.maximum( + jnp.max( + p_pos[:, 1] + jnp.max(polys.vertices[:, :, 1], where=rect_vertex_mask, initial=0, axis=1), + where=rect_mask, + initial=-jnp.inf, + ), + jnp.max(c_pos[:, 1] + rad, where=circ_mask, initial=-jnp.inf), + ), + ) + + how_much_oob_x_left = jnp.maximum(0, 0 - min_x) + how_much_oob_x_right = jnp.maximum(0, max_x - static_env_params.screen_dim[0] / params.pixels_per_unit) + how_much_oob_y_down = jnp.maximum(0, 0.4 - min_y) # this is for the floor + how_much_oob_y_up = jnp.maximum(0, max_y - static_env_params.screen_dim[1] / params.pixels_per_unit) + + # correct by out of bounds factor + positions = ( + new_positions_tentative + + jnp.array( + [ + how_much_oob_x_left - how_much_oob_x_right, + how_much_oob_y_down - how_much_oob_y_up, + ] + )[None] + * mask_of_shape_locations_to_change[:, None] + ) + + state = state.replace( + polygon=state.polygon.replace( + position=positions[: static_env_params.num_polygons], + ), + circle=state.circle.replace( + position=positions[static_env_params.num_polygons :], + ), + ) + return recalculate_mass_and_inertia(state, static_env_params, state.polygon_densities, state.circle_densities) + + return jax.lax.cond(shape_active.sum() > 0, do_change, dummy, rng, state) + + +def make_mutate_change_shape_rotation(params, static_env_params): + do_dummy_step = make_do_dummy_step(params, static_env_params) + + @partial(jax.jit, static_argnums=(3, 4)) + def mutate_change_shape_rotation( + rng, state: EnvState, params: EnvParams, static_env_params: StaticEnvParams, ued_params: UEDParams + ): + shape_active = jnp.concatenate( + [state.polygon.active.at[: static_env_params.num_static_fixated_polys].set(False), state.circle.active] + ) + + def dummy(rng, state): + return state + + def do_change(rng, state): + rng, _rng = jax.random.split(rng) + rngs = jax.random.split(_rng, 10) + p = shape_active.astype(jnp.float32) + shape_idx = jax.random.choice(rngs[0], jnp.arange(shape_active.shape[0]), p=p) + is_rect = shape_idx < static_env_params.num_polygons + + rotation_delta = jax.random.uniform(rngs[1], shape=()) * math.pi / 2 + + has_fixed_joint_a = (state.joint.a_index == shape_idx) & state.joint.is_fixed_joint & state.joint.active + has_fixed_joint_b = (state.joint.b_index == shape_idx) & state.joint.is_fixed_joint & state.joint.active + + state = state.replace( + joint=state.joint.replace( + rotation=jax.lax.select( + has_fixed_joint_a, + state.joint.rotation - rotation_delta, + jax.lax.select( + has_fixed_joint_b, + state.joint.rotation + rotation_delta, + state.joint.rotation, + ), + ) + ), + polygon=state.polygon.replace( + rotation=jax.lax.select( + is_rect, state.polygon.rotation.at[shape_idx].add(rotation_delta), state.polygon.rotation + ), + ), + circle=state.circle.replace( + rotation=jax.lax.select( + jnp.logical_not(is_rect), + state.circle.rotation.at[shape_idx - static_env_params.num_polygons].add(rotation_delta), + state.circle.rotation, + ) + ), + ) + + def _ss(state, _): + return do_dummy_step(state), None + + state = jax.lax.scan(_ss, state, jnp.arange(5))[0] + return recalculate_mass_and_inertia( + state, static_env_params, state.polygon_densities, state.circle_densities + ) + + return jax.lax.cond(shape_active.sum() > 0, do_change, dummy, rng, state) + + return mutate_change_shape_rotation diff --git a/Kinetix/kinetix/environment/ued/ued.py b/Kinetix/kinetix/environment/ued/ued.py new file mode 100644 index 0000000000000000000000000000000000000000..88ffe66e1da76aa56df36782ab2cad41e7d303dc --- /dev/null +++ b/Kinetix/kinetix/environment/ued/ued.py @@ -0,0 +1,249 @@ +from functools import partial +import math +import os + +import chex +import jax +import jax.numpy as jnp +from flax.serialization import to_state_dict +from jax2d.engine import ( + calculate_collision_matrix, + calc_inverse_mass_polygon, + calc_inverse_mass_circle, + calc_inverse_inertia_circle, + calc_inverse_inertia_polygon, + recalculate_mass_and_inertia, + select_shape, + PhysicsEngine, +) +from jax2d.sim_state import SimState, RigidBody, Joint, Thruster +from jax2d.maths import rmat +from kinetix.environment.env_state import EnvParams, EnvState, StaticEnvParams +from kinetix.environment.ued.distributions import ( + create_vmapped_filtered_distribution, + sample_kinetix_level, +) +from kinetix.environment.ued.mutators import ( + make_mutate_change_shape_rotation, + make_mutate_change_shape_size, + mutate_add_connected_shape_proper, + mutate_add_shape, + mutate_add_connected_shape, + mutate_change_shape_location, + mutate_remove_joint, + mutate_remove_shape, + mutate_swap_role, + mutate_toggle_fixture, + mutate_add_thruster, + mutate_remove_thruster, + mutate_change_gravity, +) +from kinetix.environment.ued.ued_state import UEDParams +from kinetix.environment.utils import permute_pcg_state +from kinetix.pcg.pcg import env_state_to_pcg_state, sample_pcg_state +from kinetix.util.config import generate_ued_params_from_config, generate_params_from_config +from kinetix.util.saving import get_pcg_state_from_json, load_pcg_state_pickle, load_world_state_pickle, stack_list_of_pytrees, expand_env_state +from flax import struct +from kinetix.environment.env import create_empty_env +from kinetix.util.learning import BASE_DIR, general_eval, get_eval_levels + + +def make_mutate_env(static_env_params: StaticEnvParams, params: EnvParams, ued_params: UEDParams): + mutate_size = make_mutate_change_shape_size(params, static_env_params) + mutate_rot = make_mutate_change_shape_rotation(params, static_env_params) + + def mutate_level(rng, level: EnvState, n=1): + def inner(carry: tuple[chex.PRNGKey, EnvState], _): + rng, level = carry + rng, _rng, _rng2 = jax.random.split(rng, 3) + + any_rects_left = jnp.logical_not(level.polygon.active).sum() > 0 + any_circles_left = jnp.logical_not(level.circle.active).sum() > 0 + any_joints_left = jnp.logical_not(level.joint.active).sum() > 0 + any_thrust_left = jnp.logical_not(level.thruster.active).sum() > 0 + has_any_thursters = level.thruster.active.sum() > 0 + + can_do_add_shape = any_rects_left | any_circles_left + can_do_add_joint = can_do_add_shape & any_joints_left + + all_mutations = [ + mutate_add_shape, + mutate_add_connected_shape_proper, + mutate_remove_joint, + mutate_remove_shape, + mutate_swap_role, + mutate_add_thruster, + mutate_remove_thruster, + mutate_toggle_fixture, + mutate_size, + mutate_change_shape_location, + mutate_rot, + ] + + def mypartial(f): + def inner(rng, level): + return f(rng, level, params, static_env_params, ued_params) + + return inner + + probs = jnp.array( + [ + can_do_add_shape * 1.0, + can_do_add_joint * 1.0, + 0.0, + 0.0, + 1.0, + any_thrust_left * 1.0, + has_any_thursters * 1.0, + 0.1, + 1.0, + 1.0, + 1.0, + ] + ) + + all_mutations = [mypartial(i) for i in all_mutations] + index = jax.random.choice(_rng, jnp.arange(len(all_mutations)), (), p=probs) + level = jax.lax.switch(index, all_mutations, _rng2, level) + + return (rng, level), None + + (_, level), _ = jax.lax.scan(inner, (rng, level), None, length=n) + return level + + return mutate_level + + +def make_create_eval_env(): + eval_level1 = load_world_state_pickle("worlds/eval/eval_0610_car1") + eval_level2 = load_world_state_pickle("worlds/eval/eval_0610_car2") + eval_level3 = load_world_state_pickle("worlds/eval/eval_0628_ball_left") + eval_level4 = load_world_state_pickle("worlds/eval/eval_0628_ball_right") + eval_level5 = load_world_state_pickle("worlds/eval/eval_0628_hard_car_obstacle") + eval_level6 = load_world_state_pickle("worlds/eval/eval_0628_swingup") + + def _create_eval_env(rng, env_params, static_env_params, index): + return jax.lax.switch( + index, + [ + lambda: eval_level1, + lambda: eval_level2, + lambda: eval_level3, + lambda: eval_level4, + lambda: eval_level5, + lambda: eval_level6, + ], + ) + return jax.tree.map(lambda x, y: jax.lax.select(index == 0, x, y), eval_level1, eval_level2) + + return _create_eval_env + + +def make_reset_train_function_with_mutations( + engine: PhysicsEngine, env_params: EnvParams, static_env_params: StaticEnvParams, config, make_pcg_state=True +): + ued_params = generate_ued_params_from_config(config) + + def reset(rng): + inner = sample_kinetix_level( + rng, engine, env_params, static_env_params, ued_params, env_size_name=config["env_size_name"] + ) + + if make_pcg_state: + return env_state_to_pcg_state(inner) + else: + return inner + + return reset + + +def make_vmapped_filtered_level_sampler( + level_sampler, env_params: EnvParams, static_env_params: StaticEnvParams, config, make_pcg_state, env +): + ued_params = generate_ued_params_from_config(config) + + def reset(rng, n_samples): + inner = create_vmapped_filtered_distribution( + rng, + level_sampler, + env_params, + static_env_params, + ued_params, + n_samples, + env, + config["filter_levels"], + config["level_filter_sample_ratio"], + config["env_size_name"], + config["level_filter_n_steps"], + ) + if make_pcg_state: + return env_state_to_pcg_state(inner) + else: + return inner + + return reset + + +def make_reset_train_function_with_list_of_levels(config, levels, static_env_params, make_pcg_state=True, + is_loading_train_levels=False): + assert len(levels) > 0, "Need to provide at least one level to train on" + if config["load_train_levels_legacy"]: + ls = [get_pcg_state_from_json(os.path.join(BASE_DIR, l + ("" if l.endswith(".json") else ".json"))) for l in levels] + v = stack_list_of_pytrees(ls) + elif is_loading_train_levels: + v = get_eval_levels(levels, static_env_params) + else: + _, static_env_params = generate_params_from_config( + config["eval_env_size_true"] | {"frame_skip": config["frame_skip"]} + ) + v = get_eval_levels(levels, static_env_params) + + def reset(rng): + rng, _rng, _rng2 = jax.random.split(rng, 3) + idx = jax.random.randint(_rng, (), 0, len(levels)) + state_to_return = jax.tree.map(lambda x: x[idx], v) + + if config["permute_state_during_training"]: + state_to_return = permute_pcg_state(rng, state_to_return, static_env_params) + if not make_pcg_state: + state_to_return = sample_pcg_state(_rng2, state_to_return, params=None, static_params=static_env_params) + + return state_to_return + + return reset + + +ALL_MUTATION_FNS = [ + mutate_add_shape, + mutate_add_connected_shape, + mutate_remove_joint, + mutate_swap_role, + mutate_toggle_fixture, + mutate_add_thruster, + mutate_remove_thruster, + mutate_remove_shape, + mutate_change_gravity, +] + + +def test_ued(): + from kinetix.environment.env import create_empty_env + + env_params = EnvParams() + static_env_params = StaticEnvParams() + ued_params = UEDParams() + rng = jax.random.PRNGKey(0) + rng, _rng = jax.random.split(rng) + state = create_empty_env(env_params, static_env_params) + state = mutate_add_shape(_rng, state, env_params, static_env_params, ued_params) + state = mutate_add_connected_shape(_rng, state, env_params, static_env_params, ued_params) + state = mutate_remove_shape(_rng, state, env_params, static_env_params, ued_params) + state = mutate_remove_joint(_rng, state, env_params, static_env_params, ued_params) + state = mutate_swap_role(_rng, state, env_params, static_env_params, ued_params) + state = mutate_toggle_fixture(_rng, state, env_params, static_env_params, ued_params) + + print("Successfully did this") + + +if __name__ == "__main__": + test_ued() diff --git a/Kinetix/kinetix/environment/ued/ued_state.py b/Kinetix/kinetix/environment/ued/ued_state.py new file mode 100644 index 0000000000000000000000000000000000000000..1c68c0eb77c8952e6eea6b139dd7f9249e9e9dc7 --- /dev/null +++ b/Kinetix/kinetix/environment/ued/ued_state.py @@ -0,0 +1,53 @@ +import math + +from flax import struct + + +@struct.dataclass +class UEDParams: + max_shape_size: float = 1.0 + goal_body_opposide_side_chance: float = 0.5 + goal_body_size_factor: float = 1.0 + min_rjoints_bias: int = 2 + + large_rect_dim_chance: float = 0.3 + large_rect_dim_scale: float = 2.0 + + generate_triangles: bool = False + thruster_power_multiplier: float = 2.0 + + thruster_align_com_prob: float = 0.8 + + motor_on_chance: float = 0.8 + motor_min_speed: float = 0.4 + motor_max_speed: float = 3.0 + motor_min_power: float = 1.0 + motor_max_power: float = 3.0 + wheel_max_power: float = 1.0 + + joint_limit_chance: float = 0.4 + joint_limit_max: float = math.pi + joint_fixed_chance: float = 0.1 + + fixate_chance_min: float = 0.02 + fixate_chance_max: float = 1.0 + fixate_chance_scale: float = 4.0 # Fixation probability scales with size + fixate_shape_bottom_bias: float = 0.0 + fixate_shape_bottom_bias_special_role: float = 0.6 + + circle_max_size_coeff: float = 0.8 + + connect_to_fixated_prob_coeff: float = 0.05 + connect_visibility_min: float = 0.05 + connect_no_visibility_bias: float = 10.0 + + add_shape_chance: float = 0.35 + add_connected_shape_chance: float = 0.35 + add_no_shape_chance: float = 0.3 + add_thruster_chance: float = 0.3 + add_shape_n_proposals: int = 8 + + floor_prob_normal: float = 0.9 + floor_prob_green: float = 0.0 + floor_prob_blue: float = 0.02 + floor_prob_red: float = 0.08 diff --git a/Kinetix/kinetix/environment/ued/util.py b/Kinetix/kinetix/environment/ued/util.py new file mode 100644 index 0000000000000000000000000000000000000000..8c5a67956350e2bea4ed4e5347f75c79dfb211ed --- /dev/null +++ b/Kinetix/kinetix/environment/ued/util.py @@ -0,0 +1,358 @@ +import math +from functools import partial + +import jax +import jax.numpy as jnp + +from jax2d.engine import PhysicsEngine, calculate_collision_matrix, recalculate_mass_and_inertia, select_shape +from jax2d.sim_state import RigidBody, Thruster +from kinetix.environment.env_state import EnvParams, EnvState, StaticEnvParams + + +def sample_dimensions(rng, static_env_params: StaticEnvParams, is_rect: bool, ued_params, max_shape_size=None): + if max_shape_size is None: + max_shape_size = static_env_params.max_shape_size + # Returns (half_dimensions, radius) + + rng, _rng = jax.random.split(rng) + # Don't want overly small shapes + min_rect_size = 0.05 + min_circle_size = 0.1 + cap_rect = max_shape_size / 2.0 / jnp.sqrt(2.0) + cap_circ = max_shape_size / 2.0 * ued_params.circle_max_size_coeff + half_dimensions = ( + jax.lax.select(is_rect, jax.random.uniform(_rng, shape=(2,)), jnp.zeros(2, dtype=jnp.float32)) + * (cap_rect - min_rect_size) + + min_rect_size + ) + + rng, _rng, __rng = jax.random.split(rng, 3) + dim_scale = ( + jnp.ones(2) + .at[jax.random.randint(_rng, shape=(), minval=0, maxval=2)] + .set( + jax.lax.select( + jax.random.uniform(__rng) < ued_params.large_rect_dim_chance, ued_params.large_rect_dim_scale, 1.0 + ) + ) + ) + half_dimensions *= dim_scale + + vertices = jnp.array( + [ + half_dimensions * jnp.array([1, 1]), + half_dimensions * jnp.array([1, -1]), + half_dimensions * jnp.array([-1, -1]), + half_dimensions * jnp.array([-1, 1]), + ] + ) + + rng, _rng = jax.random.split(rng) + radius = ( + jax.lax.select(is_rect, jnp.zeros((), dtype=jnp.float32), jax.random.uniform(_rng, shape=())) + * (cap_circ - min_circle_size) + + min_circle_size + ) + return vertices, half_dimensions, radius + + +def count_roles(state: EnvState, static_env_params: StaticEnvParams, role: int, include_static_polys=True) -> int: + active_to_use = state.polygon.active + if not include_static_polys: + active_to_use = active_to_use.at[: static_env_params.num_static_fixated_polys].set(False) + return ((state.polygon_shape_roles == role) * active_to_use).sum() + ( + (state.circle_shape_roles == role) * state.circle.active + ).sum() + + +def random_position_on_triangle(rng, vertices): + verts = vertices[:3] + rng, _rng, _rng2 = jax.random.split(rng, 3) + f1 = jax.random.uniform(_rng) + f2 = jax.random.uniform(_rng2) + # https://www.reddit.com/r/godot/comments/mqp29g/how_do_i_get_a_random_position_inside_a_collision/ + return verts[0] + jnp.sqrt(f1) * (-verts[0] + verts[1] + f2 * (verts[2] - verts[1])) + + +def random_position_on_rectangle(rng, vertices): + verts = vertices[:4] + rng, _rng, _rng2 = jax.random.split(rng, 3) + f1 = jax.random.uniform(_rng) + f2 = jax.random.uniform(_rng2) + + min_x, max_x = jnp.min(verts[:, 0]), jnp.max(verts[:, 0]) + min_y, max_y = jnp.min(verts[:, 1]), jnp.max(verts[:, 1]) + random_x_pos = min_x + f1 * (max_x - min_x) + random_y_pos = min_y + f2 * (max_y - min_y) + + return jnp.array([random_x_pos, random_y_pos]) + + +def random_position_on_polygon(rng, vertices, n_vertices, static_env_params: StaticEnvParams): + assert static_env_params.max_polygon_vertices <= 4, "Only supports up to 4 vertices" + return jax.lax.select( + n_vertices <= 3, random_position_on_triangle(rng, vertices), random_position_on_rectangle(rng, vertices) + ) + + +def random_position_on_circle(rng, radius, on_centre_chance): + rngs = jax.random.split(rng, 3) + + on_centre = jax.random.uniform(rngs[0]) < on_centre_chance + + local_joint_position_circle_theta = jax.random.uniform(rngs[1], shape=()) * 2 * math.pi + local_joint_position_circle_r = jax.random.uniform(rngs[2], shape=()) * radius + local_joint_position_circle = jnp.array( + [ + local_joint_position_circle_r * jnp.cos(local_joint_position_circle_theta), + local_joint_position_circle_r * jnp.sin(local_joint_position_circle_theta), + ] + ) + + return jax.lax.select(on_centre, jnp.array([0.0, 0.0]), local_joint_position_circle) + + +def get_role(rng, state: EnvState, static_env_params: StaticEnvParams, initial_p=None) -> int: + + if initial_p is None: + initial_p = jnp.array([1.0, 1.0, 1.0, 1.0]) + + needs_ball = count_roles(state, static_env_params, 1) == 0 + needs_goal = count_roles(state, static_env_params, 2) == 0 + needs_lava = count_roles(state, static_env_params, 3) == 0 + + # always put goal/ball first. + prob_of_something_else = (needs_ball == 0) & (needs_goal == 0) + p = initial_p * jnp.array( + [prob_of_something_else, needs_ball, needs_goal, prob_of_something_else * needs_lava / 3] + ) # This ensures we cannot more than one ball or goal. + return jax.random.choice(rng, jnp.array([0, 1, 2, 3]), p=p) + + +def is_space_for_shape(state: EnvState): + return jnp.logical_not(jnp.concatenate([state.polygon.active, state.circle.active])).sum() > 0 + + +def is_space_for_joint(state: EnvState): + return jnp.logical_not(state.joint.active).sum() > 0 + + +def are_there_shapes_present(state: EnvState, static_env_params: StaticEnvParams): + m = ( + jnp.concatenate([state.polygon.active, state.circle.active]) + .at[: static_env_params.num_static_fixated_polys] + .set(False) + ) + return m.sum() > 0 + + +@partial(jax.jit, static_argnums=(2, 9)) +def add_rigidbody_to_state( + state: EnvState, + env_params: EnvParams, + static_env_params: StaticEnvParams, + position: jnp.ndarray, + vertices: jnp.ndarray, + n_vertices: int, + radius: float, + shape_role: int, + density: float = 1, + is_circle: bool = False, +): + + new_rigid_body = RigidBody( + position=position, + velocity=jnp.array([0.0, 0.0]), + inverse_mass=1.0, + inverse_inertia=1.0, + rotation=0.0, + angular_velocity=0.0, + radius=radius, + active=True, + friction=1.0, + vertices=vertices, + n_vertices=n_vertices, + collision_mode=1, + restitution=0.0, + ) + + if is_circle: + actives = state.circle.active + else: + actives = state.polygon.active + + idx = jnp.argmin(actives) + + def noop(state): + return state + + def replace(state): + add_func = lambda all, new: all.at[idx].set(new) + if is_circle: + state = state.replace( + circle=jax.tree.map(add_func, state.circle, new_rigid_body), + circle_densities=state.circle_densities.at[idx].set(density), + circle_shape_roles=state.circle_shape_roles.at[idx].set(shape_role), + ) + else: + state = state.replace( + polygon=jax.tree.map(add_func, state.polygon, new_rigid_body), + polygon_densities=state.polygon_densities.at[idx].set(density), + polygon_shape_roles=state.polygon_shape_roles.at[idx].set(shape_role), + ) + + state = state.replace( + collision_matrix=calculate_collision_matrix(static_env_params, state.joint), + ) + + state = recalculate_mass_and_inertia(state, static_env_params, state.polygon_densities, state.circle_densities) + return state + + return jax.lax.cond(jnp.logical_not(actives).sum() > 0, replace, noop, state) + + +def rectangle_vertices(half_dim): + return jnp.array( + [ + half_dim * jnp.array([1, 1]), + half_dim * jnp.array([1, -1]), + half_dim * jnp.array([-1, -1]), + half_dim * jnp.array([-1, 1]), + ] + ) + + +# More Manual Control +@partial(jax.jit, static_argnums=(2,)) +def add_rectangle_to_state( + state: EnvState, + env_params: EnvParams, + static_env_params: StaticEnvParams, + position: jnp.ndarray, + width: float, + height: float, + shape_role: int, + density: float = 1, +): + + return add_rigidbody_to_state( + state, + env_params, + static_env_params, + position, + rectangle_vertices(jnp.array([width, height]) / 2), + 4, + 0.0, + shape_role, + density, + is_circle=False, + ) + + +@partial(jax.jit, static_argnums=(2,)) +def add_circle_to_state( + state: EnvState, + env_params: EnvParams, + static_env_params: StaticEnvParams, + position: jnp.ndarray, + radius: float, + shape_role: int, + density: float = 1, +): + return add_rigidbody_to_state( + state, + env_params, + static_env_params, + position, + jnp.array([0.0, 0.0]), + 0, + radius, + shape_role, + density, + is_circle=True, + ) + + +@partial(jax.jit, static_argnums=(2,)) +def add_thruster_to_object( + state: EnvState, + env_params: EnvParams, + static_env_params: StaticEnvParams, + shape_index: int, + rotation: float, + colour: int, + thruster_power_multiplier: float, +): + def dummy(state): + return state + + def do_add(state: EnvState): + thruster_idx = jnp.argmin(state.thruster.active) + + shape = select_shape(state, shape_index, static_env_params) + + thruster = Thruster( + object_index=shape_index, + active=True, + relative_position=jnp.array([0.0, 0.0]), # a bit of a hack but reasonable. + rotation=rotation, + power=1.0 / jax.lax.select(shape.inverse_mass == 0, 1.0, shape.inverse_mass) * thruster_power_multiplier, + global_position=select_shape(state, shape_index, static_env_params).position, + ) + + state = state.replace( + thruster=jax.tree_map(lambda y, x: y.at[thruster_idx].set(x), state.thruster, thruster), + thruster_bindings=state.thruster_bindings.at[thruster_idx].set(colour), + ) + + return state + + return jax.lax.cond( + (select_shape(state, shape_index, static_env_params).active) + & (jnp.logical_not(state.thruster.active).sum() > 0), + do_add, + dummy, + state, + ) + + +def make_velocities_zero(state: EnvState): + def inner(state): + return state.replace( + polygon=state.polygon.replace( + angular_velocity=state.polygon.angular_velocity * 0, + velocity=state.polygon.velocity * 0, + ), + circle=state.circle.replace( + angular_velocity=state.circle.angular_velocity * 0, + velocity=state.circle.velocity * 0, + ), + ) + + return inner(state) + + +def make_do_dummy_step( + params: EnvParams, static_sim_params: StaticEnvParams, zero_collisions=True, zero_velocities=True +): + env = PhysicsEngine(static_sim_params) + + @jax.jit + def _step_fn(state): + state, _ = env.step(state, params, jnp.zeros((static_sim_params.num_joints + static_sim_params.num_thrusters,))) + return state + + def do_dummy_step(state: EnvState) -> EnvState: + rng = jax.random.PRNGKey(0) + og_col = state.collision_matrix + g = state.gravity + state = state.replace( + collision_matrix=state.collision_matrix & (not zero_collisions), gravity=state.gravity * 0 + ) + state = _step_fn(state) + state = state.replace(gravity=g, collision_matrix=og_col) + if zero_velocities: + state = make_velocities_zero(state) + return state + + return do_dummy_step diff --git a/Kinetix/kinetix/environment/utils.py b/Kinetix/kinetix/environment/utils.py new file mode 100644 index 0000000000000000000000000000000000000000..2e92d6d498078e384f758ca073977d23801940fd --- /dev/null +++ b/Kinetix/kinetix/environment/utils.py @@ -0,0 +1,66 @@ +import chex +import jax +from jax2d.engine import calculate_collision_matrix +from kinetix.environment.env_state import EnvState, StaticEnvParams +import jax.numpy as jnp + +from kinetix.pcg.pcg_state import PCGState + + +def permute_state(rng: chex.PRNGKey, env_state: EnvState, static_env_params: StaticEnvParams): + idxs_circles = jnp.arange(static_env_params.num_circles) + idxs_polygons = jnp.arange(static_env_params.num_polygons) + idxs_joints = jnp.arange(static_env_params.num_joints) + idxs_thrusters = jnp.arange(static_env_params.num_thrusters) + + rng, *_rngs = jax.random.split(rng, 5) + idxs_circles_permuted = jax.random.permutation(_rngs[0], idxs_circles, independent=True) + idxs_polygons_permuted = idxs_polygons.at[static_env_params.num_static_fixated_polys :].set( + jax.random.permutation(_rngs[1], idxs_polygons[static_env_params.num_static_fixated_polys :], independent=True) + ) + + idxs_joints_permuted = jax.random.permutation(_rngs[2], idxs_joints, independent=True) + idxs_thrusters_permuted = jax.random.permutation(_rngs[3], idxs_thrusters, independent=True) + + combined = jnp.concatenate([idxs_polygons_permuted, idxs_circles_permuted + static_env_params.num_polygons]) + # Change the ordering of the shapes, and also remember to change the indices associated with the joints + + inverse_permutation = jnp.argsort(combined) + + env_state = env_state.replace( + polygon_shape_roles=env_state.polygon_shape_roles[idxs_polygons_permuted], + circle_shape_roles=env_state.circle_shape_roles[idxs_circles_permuted], + polygon_highlighted=env_state.polygon_highlighted[idxs_polygons_permuted], + circle_highlighted=env_state.circle_highlighted[idxs_circles_permuted], + polygon_densities=env_state.polygon_densities[idxs_polygons_permuted], + circle_densities=env_state.circle_densities[idxs_circles_permuted], + polygon=jax.tree.map(lambda x: x[idxs_polygons_permuted], env_state.polygon), + circle=jax.tree.map(lambda x: x[idxs_circles_permuted], env_state.circle), + joint=env_state.joint.replace( + a_index=inverse_permutation[env_state.joint.a_index], + b_index=inverse_permutation[env_state.joint.b_index], + ), + thruster=env_state.thruster.replace( + object_index=inverse_permutation[env_state.thruster.object_index], + ), + ) + + # And now permute the thrusters and joints + env_state = env_state.replace( + thruster_bindings=env_state.thruster_bindings[idxs_thrusters_permuted], + motor_bindings=env_state.motor_bindings[idxs_joints_permuted], + motor_auto=env_state.motor_auto[idxs_joints_permuted], + joint=jax.tree.map(lambda x: x[idxs_joints_permuted], env_state.joint), + thruster=jax.tree.map(lambda x: x[idxs_thrusters_permuted], env_state.thruster), + ) + # and collision matrix + env_state = env_state.replace(collision_matrix=calculate_collision_matrix(static_env_params, env_state.joint)) + return env_state + + +def permute_pcg_state(rng: chex.PRNGKey, pcg_state: PCGState, static_env_params: StaticEnvParams): + return pcg_state.replace( + env_state=permute_state(rng, pcg_state.env_state, static_env_params), + env_state_max=permute_state(rng, pcg_state.env_state_max, static_env_params), + env_state_pcg_mask=jax.tree.map(lambda x: jnp.zeros_like(x, dtype=bool), pcg_state.env_state_pcg_mask), + ) diff --git a/Kinetix/kinetix/environment/wrappers.py b/Kinetix/kinetix/environment/wrappers.py new file mode 100644 index 0000000000000000000000000000000000000000..047f72a1bca764e1b8b08db3b9be7484a730a121 --- /dev/null +++ b/Kinetix/kinetix/environment/wrappers.py @@ -0,0 +1,309 @@ +import functools +from chex._src.pytypes import PRNGKey +import jax +import jax.numpy as jnp +import chex +from jax.numpy import ndarray +import numpy as np +from flax import struct +from functools import partial +from typing import Callable, Dict, Optional, Tuple, Union, Any + +from gymnax.environments import spaces, environment + +from kinetix.environment.env_state import EnvParams, EnvState +from jaxued.environments import UnderspecifiedEnv + + +class UnderspecifiedEnvWrapper(UnderspecifiedEnv): + """Base class for Gymnax wrappers.""" + + def __init__(self, env): + self._env = env + + # provide proxy access to regular attributes of wrapped object + def __getattr__(self, name): + return getattr(self._env, name) + + +class GymnaxWrapper(object): + """Base class for Gymnax wrappers.""" + + def __init__(self, env): + self._env = env + + # provide proxy access to regular attributes of wrapped object + def __getattr__(self, name): + return getattr(self._env, name) + + +# From Here: https://github.com/DramaCow/jaxued/blob/main/src/jaxued/wrappers/autoreset.py +class AutoResetWrapper(UnderspecifiedEnvWrapper): + """ + This is a wrapper around an `UnderspecifiedEnv`, allowing for the environment to be automatically reset upon completion of an episode. This behaviour is similar to the default Gymnax interface. The user can specify a callable `sample_level` that takes in a PRNGKey and returns a level. + + Warning: + To maintain compliance with UnderspecifiedEnv interface, user can reset to an + arbitrary level. This includes levels outside the support of sample_level(). Consequently, + the tagged rng is defaulted to jax.random.PRNGKey(0). If your code relies on this, careful + attention may be required. + """ + + def __init__(self, env: UnderspecifiedEnv, sample_level: Callable[[chex.PRNGKey], EnvState]): + self._env = env + self.sample_level = sample_level + + @property + def default_params(self) -> EnvParams: + return self._env.default_params + + def reset_env(self, rng, params): + rng, rng_sample, rng_reset = jax.random.split(rng, 3) + state_to_reset_to = self.sample_level(rng_sample) + return self._env.reset_env_to_pcg_level(rng_reset, state_to_reset_to, params) + + def step_env( + self, + rng: chex.PRNGKey, + state: EnvState, + action: Union[int, float], + params: EnvParams, + ) -> Tuple[chex.ArrayTree, EnvState, float, bool, dict]: + + rng_reset, rng_step = jax.random.split(rng, 2) + obs_st, env_state_st, reward, done, info = self._env.step_env(rng_step, state, action, params) + obs_re, env_state_re = self.reset_env(rng_reset, params) + + env_state = jax.tree_map(lambda x, y: jax.lax.select(done, x, y), env_state_re, env_state_st) + obs = jax.tree_map(lambda x, y: jax.lax.select(done, x, y), obs_re, obs_st) + + return obs, env_state, reward, done, info + + def reset_env_to_level(self, rng: chex.PRNGKey, level: EnvState, params: EnvParams) -> Tuple[Any, EnvState]: + # raise NotImplementedError("This method should not be called directly. Use reset instead.") + obs, env_state = self._env.reset_to_level(rng, level, params) + return obs, env_state + + def action_space(self, params: EnvParams) -> Any: + return self._env.action_space(params) + + +class AutoReplayWrapper(UnderspecifiedEnv): + """ + This wrapper replay the **same** level over and over again by resetting to the same level after each episode. + This is useful for training/rolling out multiple times on the same level. + """ + + def __init__(self, env: UnderspecifiedEnv): + self._env = env + + @property + def default_params(self) -> EnvParams: + return self._env.default_params + + def step_env( + self, + rng: chex.PRNGKey, + state: EnvState, + action: Union[int, float], + params: EnvParams, + ) -> Tuple[chex.ArrayTree, EnvState, float, bool, dict]: + rng_reset, rng_step = jax.random.split(rng) + obs_re, env_state_re = self._env.reset_to_level(rng_reset, state.level, params) + obs_st, env_state_st, reward, done, info = self._env.step_env(rng_step, state.env_state, action, params) + env_state = jax.tree_map(lambda x, y: jax.lax.select(done, x, y), env_state_re, env_state_st) + obs = jax.tree_map(lambda x, y: jax.lax.select(done, x, y), obs_re, obs_st) + return obs, state.replace(env_state=env_state), reward, done, info + + def reset_env_to_level(self, rng: chex.PRNGKey, level: EnvState, params: EnvParams) -> Tuple[Any, EnvState]: + obs, env_state = self._env.reset_to_level(rng, level, params) + return obs, AutoReplayState(env_state=env_state, level=level) + + def action_space(self, params: EnvParams) -> Any: + return self._env.action_space(params) + + +@struct.dataclass +class AutoReplayState: + env_state: EnvState + level: EnvState + + +class AutoReplayWrapper(UnderspecifiedEnvWrapper): + """ + This wrapper replay the **same** level over and over again by resetting to the same level after each episode. + This is useful for training/rolling out multiple times on the same level. + """ + + def __init__(self, env: UnderspecifiedEnv): + self._env = env + + @property + def default_params(self) -> EnvParams: + return self._env.default_params + + def step_env( + self, + rng: chex.PRNGKey, + state: EnvState, + action: Union[int, float], + params: EnvParams, + ) -> Tuple[chex.ArrayTree, EnvState, float, bool, dict]: + rng_reset, rng_step = jax.random.split(rng) + obs_re, env_state_re = self._env.reset_to_level(rng_reset, state.level, params) + obs_st, env_state_st, reward, done, info = self._env.step_env(rng_step, state.env_state, action, params) + env_state = jax.tree_map(lambda x, y: jax.lax.select(done, x, y), env_state_re, env_state_st) + obs = jax.tree_map(lambda x, y: jax.lax.select(done, x, y), obs_re, obs_st) + return obs, state.replace(env_state=env_state), reward, done, info + + def reset_env_to_level(self, rng: chex.PRNGKey, level: EnvState, params: EnvParams) -> Tuple[Any, EnvState]: + obs, env_state = self._env.reset_to_level(rng, level, params) + return obs, AutoReplayState(env_state=env_state, level=level) + + def action_space(self, params: EnvParams) -> Any: + return self._env.action_space(params) + + +class UnderspecifiedToGymnaxWrapper(environment.Environment): + def __init__(self, env): + self._env = env + + # provide proxy access to regular attributes of wrapped object + def __getattr__(self, name): + return getattr(self._env, name) + + @property + def default_params(self) -> Any: + return self._env.default_params + + def step_env( + self, key: jax.Array, state: Any, action: int | float | jax.Array | ndarray | np.bool_ | np.number, params: Any + ) -> Tuple[jax.Array | ndarray | np.bool_ | np.number | Any | Dict[Any, Any]]: + return self._env.step_env(key, state, action, params) + + def reset_env(self, key: PRNGKey, params: Any) -> Tuple[PRNGKey | np.ndarray | np.bool_ | np.number | Any]: + return self._env.reset_env(key, params) + + def action_space(self, params: Any): + return self._env.action_space(params) + + +class BatchEnvWrapper(GymnaxWrapper): + """Batches reset and step functions""" + + def __init__(self, env, num_envs: int): + super().__init__(env) + + self.num_envs = num_envs + + self.reset_fn = jax.vmap(self._env.reset, in_axes=(0, None)) + self.reset_to_level_fn = jax.vmap(self._env.reset_to_level, in_axes=(0, 0, None)) + self.step_fn = jax.vmap(self._env.step, in_axes=(0, 0, 0, None)) + + @partial(jax.jit, static_argnums=(0, 2)) + def reset(self, rng, params=None): + rng, _rng = jax.random.split(rng) + rngs = jax.random.split(_rng, self.num_envs) + obs, env_state = self.reset_fn(rngs, params) + return obs, env_state + + @partial(jax.jit, static_argnums=(0, 3)) + def reset_to_level(self, rng, level, params=None): + rng, _rng = jax.random.split(rng) + rngs = jax.random.split(_rng, self.num_envs) + obs, env_state = self.reset_to_level_fn(rngs, level, params) + return obs, env_state + + @partial(jax.jit, static_argnums=(0, 4)) + def step(self, rng, state, action, params=None): + rng, _rng = jax.random.split(rng) + rngs = jax.random.split(_rng, self.num_envs) + obs, state, reward, done, info = self.step_fn(rngs, state, action, params) + + return obs, state, reward, done, info + + +@struct.dataclass +class DenseRewardState: + env_state: EnvState + last_distance: float = -1.0 + + +class DenseRewardWrapper(GymnaxWrapper): + def __init__(self, env, dense_reward_scale: float = 1.0) -> None: + super().__init__(env) + self.dense_reward_scale = dense_reward_scale + + def step(self, key, state, action: int, params=None): + obs, env_state, reward, done, info = self._env.step_env(key, state.env_state, action, params) + delta_dist = ( + -(info["distance"] - state.last_distance) * params.dense_reward_scale + ) # if distance got less, then reward is positive + + delta_dist = jnp.nan_to_num(delta_dist, nan=0.0, posinf=0.0, neginf=0.0) + reward = reward + jax.lax.select( + (state.last_distance == -1) | (self.dense_reward_scale == 0.0), 0.0, delta_dist * self.dense_reward_scale + ) + return obs, DenseRewardState(env_state, info["distance"]), reward, done, info + + def reset(self, rng, params=None): + obs, env_state = self._env.reset(rng, params) + return obs, DenseRewardState(env_state, -1.0) + + def reset_to_level(self, rng, level, params=None): + obs, env_state = self._env.reset_to_level(rng, level, params) + return obs, DenseRewardState(env_state, -1.0) + + +@struct.dataclass +class LogEnvState: + env_state: Any + episode_returns: float + episode_lengths: int + returned_episode_returns: float + returned_episode_lengths: int + timestep: int + + +class LogWrapper(GymnaxWrapper): + """Log the episode returns and lengths.""" + + def __init__(self, env): + super().__init__(env) + + @partial(jax.jit, static_argnums=(0, 2)) + def reset(self, key: chex.PRNGKey, params=None): + obs, env_state = self._env.reset(key, params) + state = LogEnvState(env_state, 0.0, 0, 0.0, 0, 0) + return obs, state + + def reset_to_level(self, key: chex.PRNGKey, level: EnvState, params=None): + obs, env_state = self._env.reset_to_level(key, level, params) + state = LogEnvState(env_state, 0.0, 0, 0.0, 0, 0) + return obs, state + + @partial(jax.jit, static_argnums=(0, 4)) + def step( + self, + key: chex.PRNGKey, + state, + action: Union[int, float], + params=None, + ): + obs, env_state, reward, done, info = self._env.step(key, state.env_state, action, params) + new_episode_return = state.episode_returns + reward + new_episode_length = state.episode_lengths + 1 + state = LogEnvState( + env_state=env_state, + episode_returns=new_episode_return * (1 - done), + episode_lengths=new_episode_length * (1 - done), + returned_episode_returns=state.returned_episode_returns * (1 - done) + new_episode_return * done, + returned_episode_lengths=state.returned_episode_lengths * (1 - done) + new_episode_length * done, + timestep=state.timestep + 1, + ) + info["returned_episode_returns"] = state.returned_episode_returns + info["returned_episode_lengths"] = state.returned_episode_lengths + info["returned_episode_solved"] = info["GoalR"] + info["timestep"] = state.timestep + info["returned_episode"] = done + return obs, state, reward, done, info diff --git a/Kinetix/kinetix/models/.gitignore b/Kinetix/kinetix/models/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..23427f4fc8ce42c0ffc4316bd382fbcbfd1e1ce7 --- /dev/null +++ b/Kinetix/kinetix/models/.gitignore @@ -0,0 +1,2 @@ +actor_critic_old.py +gactor_gritic_old.py \ No newline at end of file diff --git a/Kinetix/kinetix/models/__init__.py b/Kinetix/kinetix/models/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..938ae68d718697c50d212948d6103e82a6e0e158 --- /dev/null +++ b/Kinetix/kinetix/models/__init__.py @@ -0,0 +1,65 @@ +from kinetix.models.actor_critic import ( + ActorCriticPixelsRNN, + ActorCriticSymbolicRNN, +) +from kinetix.models.transformer_model import ActorCriticTransformer + + +def make_network_from_config(env, env_params, config, network_kws={}): + + env_name = config["env_name"] + if "MultiDiscrete" in env_name: + action_mode = "multi_discrete" + elif "Discrete" in env_name: + action_mode = "discrete" + elif "Continuous" in env_name: + action_mode = "continuous" + elif "Hybrid" in env_name: + action_mode = "hybrid" + else: + raise ValueError(f"Unknown action mode for {env_name}") + action_dim = ( + env.action_space(env_params).shape[0] if action_mode == "continuous" else env.action_space(env_params).n + ) + if "hybrid_action_continuous_dim" not in network_kws: + network_kws["hybrid_action_continuous_dim"] = action_dim + + if "multi_discrete_number_of_dims_per_distribution" not in network_kws: + num_joint_bindings = config["static_env_params"]["num_motor_bindings"] + num_thruster_bindings = config["static_env_params"]["num_thruster_bindings"] + network_kws["multi_discrete_number_of_dims_per_distribution"] = [3 for _ in range(num_joint_bindings)] + [ + 2 for _ in range(num_thruster_bindings) + ] + network_kws["recurrent"] = config.get("recurrent_model", True) + + if "Pixels" in env_name: + cls_to_use = ActorCriticPixelsRNN + elif "Symbolic" in env_name or "Blind" in env_name: + cls_to_use = ActorCriticSymbolicRNN + + if "Entity" in env_name: + network = ActorCriticTransformer( + action_dim=action_dim, + fc_layer_width=config["fc_layer_width"], + fc_layer_depth=config["fc_layer_depth"], + action_mode=action_mode, + num_heads=config["num_heads"], + transformer_depth=config["transformer_depth"], + transformer_size=config["transformer_size"], + transformer_encoder_size=config["transformer_encoder_size"], + aggregate_mode=config["aggregate_mode"], + full_attention_mask=config["full_attention_mask"], + activation=config["activation"], + **network_kws, + ) + else: + network = cls_to_use( + action_dim, + fc_layer_width=config["fc_layer_width"], + fc_layer_depth=config["fc_layer_depth"], + activation=config["activation"], + action_mode=action_mode, + **network_kws, + ) + + return network diff --git a/Kinetix/kinetix/models/action_spaces.py b/Kinetix/kinetix/models/action_spaces.py new file mode 100644 index 0000000000000000000000000000000000000000..4e909432690c6e31cdadd5593ca9c38d4c7dbbd4 --- /dev/null +++ b/Kinetix/kinetix/models/action_spaces.py @@ -0,0 +1,58 @@ +from typing import Any, Sequence +from chex import PRNGKey +import distrax +from flax import struct +import jax +import jax.numpy as jnp + + +@struct.dataclass +class HybridAction: + discrete: int + continuous: jnp.ndarray + + +class HybridActionDistribution(distrax.Distribution): + def __init__(self, discrete_logits, continuous_mu, continuous_sigma) -> None: + self.discrete = distrax.Categorical(logits=discrete_logits) + self.continuous = distrax.MultivariateNormalDiag(continuous_mu, continuous_sigma) + + def _sample_n(self, rng: PRNGKey, n: int) -> Any: + rng, _rng, _rng2 = jax.random.split(rng, 3) + a = self.discrete._sample_n(_rng, n) + b = self.continuous._sample_n(_rng2, n) + return HybridAction(a, b) + + def log_prob(self, value: Any): + a = self.discrete.log_prob(value.discrete) + b = self.continuous.log_prob(value.continuous) + return a + b # log probs, we add. + + def entropy(self): + return self.discrete.entropy() + self.continuous.entropy() + + def event_shape(self) -> Sequence[int]: + return () + + +class MultiDiscreteActionDistribution(distrax.Distribution): + def __init__(self, flat_logits, number_of_dims_per_distribution) -> None: + self.distributions = [] + total_dims = 0 + for dims in number_of_dims_per_distribution: + self.distributions.append(distrax.Categorical(logits=flat_logits[..., total_dims : total_dims + dims])) + total_dims += dims + + def _sample_n(self, key: PRNGKey, n: int) -> Any: + rngs = jax.random.split(key, len(self.distributions)) + samples = [jnp.expand_dims(d._sample_n(rng, n), axis=-1) for rng, d in zip(rngs, self.distributions)] + return jnp.concatenate(samples, axis=-1) + + def log_prob(self, value: Any): + return sum(d.log_prob(value[..., i]) for i, d in enumerate(self.distributions)) + + def entropy(self): + return sum(d.entropy() for d in self.distributions) + + def event_shape(self) -> Sequence[int]: + return () diff --git a/Kinetix/kinetix/models/actor_critic.py b/Kinetix/kinetix/models/actor_critic.py new file mode 100644 index 0000000000000000000000000000000000000000..20c2cfd430934304258a084872ca0ec7315d34d8 --- /dev/null +++ b/Kinetix/kinetix/models/actor_critic.py @@ -0,0 +1,206 @@ +import functools +import jax +import jax.numpy as jnp +import flax.linen as nn +import numpy as np +from flax.linen.initializers import constant, orthogonal +from typing import List, Sequence + +import distrax + +from kinetix.models.action_spaces import HybridActionDistribution, MultiDiscreteActionDistribution + + +class ScannedRNN(nn.Module): + @functools.partial( + nn.scan, + variable_broadcast="params", + in_axes=0, + out_axes=0, + split_rngs={"params": False}, + ) + @nn.compact + def __call__(self, carry, x): + """Applies the module.""" + rnn_state = carry + ins, resets = x + rnn_state = jnp.where( + resets[:, np.newaxis], + self.initialize_carry(ins.shape[0], 256), + rnn_state, + ) + new_rnn_state, y = nn.GRUCell(features=256)(rnn_state, ins) + return new_rnn_state, y + + @staticmethod + def initialize_carry(batch_size, hidden_size=256): + # Use a dummy key since the default state init fn is just zeros. + cell = nn.GRUCell(features=256) + return cell.initialize_carry(jax.random.PRNGKey(0), (batch_size, hidden_size)) + + +class GeneralActorCriticRNN(nn.Module): + action_dim: Sequence[int] + fc_layer_depth: int + fc_layer_width: int + action_mode: str # "continuous" or "discrete" or "hybrid" + hybrid_action_continuous_dim: int + multi_discrete_number_of_dims_per_distribution: List[int] + add_generator_embedding: bool = False + generator_embedding_number_of_timesteps: int = 10 + recurrent: bool = False + + # Given an embedding, return the action/values, since this is shared across all models. + @nn.compact + def __call__(self, hidden, obs, embedding, dones, activation): + + if self.add_generator_embedding: + raise NotImplementedError() + + if self.recurrent: + rnn_in = (embedding, dones) + hidden, embedding = ScannedRNN()(hidden, rnn_in) + + actor_mean = embedding + critic = embedding + actor_mean_last = embedding + for _ in range(self.fc_layer_depth): + actor_mean = nn.Dense( + self.fc_layer_width, + kernel_init=orthogonal(np.sqrt(2)), + bias_init=constant(0.0), + )(actor_mean) + actor_mean = activation(actor_mean) + + critic = nn.Dense( + self.fc_layer_width, + kernel_init=orthogonal(np.sqrt(2)), + bias_init=constant(0.0), + )(critic) + critic = activation(critic) + + actor_mean_last = actor_mean + actor_mean = nn.Dense(self.action_dim, kernel_init=orthogonal(0.01), bias_init=constant(0.0))(actor_mean) + if self.action_mode == "discrete": + pi = distrax.Categorical(logits=actor_mean) + elif self.action_mode == "continuous": + actor_logtstd = self.param("log_std", nn.initializers.zeros, (self.action_dim,)) + pi = distrax.MultivariateNormalDiag(actor_mean, jnp.exp(actor_logtstd)) + elif self.action_mode == "multi_discrete": + pi = MultiDiscreteActionDistribution(actor_mean, self.multi_discrete_number_of_dims_per_distribution) + else: + actor_mean_continuous = nn.Dense( + self.hybrid_action_continuous_dim, kernel_init=orthogonal(0.01), bias_init=constant(0.0) + )(actor_mean_last) + actor_mean_sigma = jnp.exp( + nn.Dense(self.hybrid_action_continuous_dim, kernel_init=orthogonal(0.01), bias_init=constant(0.0))( + actor_mean_last + ) + ) + pi = HybridActionDistribution(actor_mean, actor_mean_continuous, actor_mean_sigma) + + critic = nn.Dense(1, kernel_init=orthogonal(1.0), bias_init=constant(0.0))(critic) + return hidden, pi, jnp.squeeze(critic, axis=-1) + + +class ActorCriticPixelsRNN(nn.Module): + + action_dim: Sequence[int] + fc_layer_depth: int + fc_layer_width: int + action_mode: str + hybrid_action_continuous_dim: int + multi_discrete_number_of_dims_per_distribution: List[int] + activation: str + add_generator_embedding: bool = False + generator_embedding_number_of_timesteps: int = 10 + recurrent: bool = True + + @nn.compact + def __call__(self, hidden, x, **kwargs): + if self.activation == "relu": + activation = nn.relu + else: + activation = nn.tanh + og_obs, dones = x + + if self.add_generator_embedding: + obs = og_obs.obs + else: + obs = og_obs + + image = obs.image + global_info = obs.global_info + + x = nn.Conv(features=16, kernel_size=(8, 8), strides=(4, 4))(image) + x = nn.relu(x) + x = nn.Conv(features=32, kernel_size=(4, 4), strides=(2, 2))(x) + x = nn.relu(x) + embedding = x.reshape(x.shape[0], x.shape[1], -1) + + embedding = jnp.concatenate([embedding, global_info], axis=-1) + + return GeneralActorCriticRNN( + action_dim=self.action_dim, + fc_layer_depth=self.fc_layer_depth, + fc_layer_width=self.fc_layer_width, + action_mode=self.action_mode, + hybrid_action_continuous_dim=self.hybrid_action_continuous_dim, + multi_discrete_number_of_dims_per_distribution=self.multi_discrete_number_of_dims_per_distribution, + add_generator_embedding=self.add_generator_embedding, + generator_embedding_number_of_timesteps=self.generator_embedding_number_of_timesteps, + recurrent=self.recurrent, + )(hidden, og_obs, embedding, dones, activation) + + @staticmethod + def initialize_carry(batch_size, hidden_size=256): + return ScannedRNN.initialize_carry(batch_size, hidden_size) + + +class ActorCriticSymbolicRNN(nn.Module): + action_dim: Sequence[int] + fc_layer_width: int + action_mode: str + hybrid_action_continuous_dim: int + multi_discrete_number_of_dims_per_distribution: List[int] + fc_layer_depth: int + activation: str + add_generator_embedding: bool = False + generator_embedding_number_of_timesteps: int = 10 + recurrent: bool = True + + @nn.compact + def __call__(self, hidden, x): + if self.activation == "relu": + activation = nn.relu + else: + activation = nn.tanh + + og_obs, dones = x + if self.add_generator_embedding: + obs = og_obs.obs + else: + obs = og_obs + + embedding = nn.Dense( + self.fc_layer_width, + kernel_init=orthogonal(np.sqrt(2)), + bias_init=constant(0.0), + )(obs) + embedding = nn.relu(embedding) + + return GeneralActorCriticRNN( + action_dim=self.action_dim, + fc_layer_depth=self.fc_layer_depth, + fc_layer_width=self.fc_layer_width, + action_mode=self.action_mode, + hybrid_action_continuous_dim=self.hybrid_action_continuous_dim, + multi_discrete_number_of_dims_per_distribution=self.multi_discrete_number_of_dims_per_distribution, + add_generator_embedding=self.add_generator_embedding, + generator_embedding_number_of_timesteps=self.generator_embedding_number_of_timesteps, + recurrent=self.recurrent, + )(hidden, og_obs, embedding, dones, activation) + + @staticmethod + def initialize_carry(batch_size, hidden_size=256): + return ScannedRNN.initialize_carry(batch_size, hidden_size) diff --git a/Kinetix/kinetix/models/rel_multi_head.py b/Kinetix/kinetix/models/rel_multi_head.py new file mode 100644 index 0000000000000000000000000000000000000000..5d5db2427052eda3f609d4edbd7f3500d4e482c9 --- /dev/null +++ b/Kinetix/kinetix/models/rel_multi_head.py @@ -0,0 +1,546 @@ +# Copyright 2023 The Flax Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +# CODE IS HEAVILY INSPIRED FROM https://github.com/huggingface/transformers/blob/v4.40.1/src/transformers/models/deprecated/transfo_xl/modeling_transfo_xl.py +# MOST OF THE TIME JUST A CONVERSION IN JAX + + +"""Relative Attention HEAVILY INSPIRED FROM https://github.com/huggingface/transformers/blob/v4.40.1/src/transformers/models/deprecated/transfo_xl/modeling_transfo_xl.py +, flax attention, https://github.com/kimiyoung/transformer-xl/blob/master/pytorch/mem_transformer.py#L143, most of the time just a flax/jax conversion """ + +import functools +from typing import Any, Callable, Optional, Tuple +from flax.linen.dtypes import promote_dtype + +from flax.linen import initializers +from flax.linen.linear import default_kernel_init +from flax.linen.linear import DenseGeneral +from flax.linen.linear import DotGeneralT +from flax.linen.linear import PrecisionLike +from flax.linen.module import compact +from flax.linen.module import merge_param +from flax.linen.module import Module + +import jax +from jax import lax +from jax import random +import jax.numpy as jnp + +PRNGKey = Any +Shape = Tuple[int, ...] +Dtype = Any +Array = Any + +roll_vmap = jax.vmap(jnp.roll, in_axes=(-2, 0, None), out_axes=-2) + + +def _rel_shift(x): + zero_pad_shape = x.shape[:-2] + (x.shape[-2], 1) + zero_pad = jnp.zeros(zero_pad_shape, dtype=x.dtype) + x_padded = jnp.concatenate([zero_pad, x], axis=-1) + + x_padded_shape = x.shape[:-2] + (x.shape[-1] + 1, x.shape[-2]) + x_padded = x_padded.reshape(x_padded_shape) + # x_padded=jnp.swapaxes(x_padded,0,1) + + x = jnp.take(x_padded, jnp.arange(1, x_padded.shape[-2]), axis=-2).reshape(x.shape) + + return x + + +def dot_product_attention_weights( + query: Array, + key: Array, + r_pos_embed, + r_r_bias, + r_w_bias, + bias: Optional[Array] = None, + mask: Optional[Array] = None, + broadcast_dropout: bool = True, + dropout_rng: Optional[PRNGKey] = None, + dropout_rate: float = 0.0, + deterministic: bool = False, + dtype: Optional[Dtype] = None, + precision: PrecisionLike = None, +): + """Computes dot-product attention weights given query and key. + + Used by :func:`dot_product_attention`, which is what you'll most likely use. + But if you want access to the attention weights for introspection, then + you can directly call this function and call einsum yourself. + + Args: + query: queries for calculating attention with shape of + `[batch..., q_length, num_heads, qk_depth_per_head]`. + key: keys for calculating attention with shape of + `[batch..., kv_length, num_heads, qk_depth_per_head]`. + bias: bias for the attention weights. This should be broadcastable to the + shape `[batch..., num_heads, q_length, kv_length]`. + This can be used for incorporating causal masks, padding masks, + proximity bias, etc. + mask: mask for the attention weights. This should be broadcastable to the + shape `[batch..., num_heads, q_length, kv_length]`. + This can be used for incorporating causal masks. + Attention weights are masked out if their corresponding mask value + is `False`. + broadcast_dropout: bool: use a broadcasted dropout along batch dims. + dropout_rng: JAX PRNGKey: to be used for dropout + dropout_rate: dropout rate + deterministic: bool, deterministic or not (to apply dropout) + dtype: the dtype of the computation (default: infer from inputs and params) + precision: numerical precision of the computation see `jax.lax.Precision` + for details. + + Returns: + Output of shape `[batch..., num_heads, q_length, kv_length]`. + """ + query, key = promote_dtype(query, key, dtype=dtype) + dtype = query.dtype + + assert query.ndim == key.ndim, "q, k must have same rank." + assert query.shape[:-3] == key.shape[:-3], "q, k batch dims must match." + assert query.shape[-2] == key.shape[-2], "q, k num_heads must match." + assert query.shape[-1] == key.shape[-1], "q, k depths must match." + + # calculate attention matrix + depth = query.shape[-1] + # query = query + + # attn weight shape is (batch..., num_heads, q_length, kv_length) + attn_weights = jnp.einsum("...qhd,...khd->...hqk", query + r_w_bias, key, precision=precision) + + attn_weights_r = jnp.einsum("...qhd,khd->...hqk", query + r_r_bias, r_pos_embed, precision=precision) + + attn_weights_r = roll_vmap(attn_weights_r, jnp.arange(0, query.shape[-3]) - (query.shape[-3] - 1), -1) + # attn_weights_r=_rel_shift(attn_weights_r) + attn_weights = attn_weights + attn_weights_r + + attn_weights = attn_weights / jnp.sqrt(depth).astype(dtype) + + # apply attention bias: masking, dropout, proximity bias, etc. + if bias is not None: + attn_weights = attn_weights + bias + # apply attention mask + if mask is not None: + big_neg = jnp.finfo(dtype).min + attn_weights = jnp.where(mask, attn_weights, big_neg) + + # normalize the attention weights + attn_weights = jax.nn.softmax(attn_weights).astype(dtype) + + # apply attention dropout + if not deterministic and dropout_rate > 0.0: + keep_prob = 1.0 - dropout_rate + if broadcast_dropout: + # dropout is broadcast across the batch + head dimensions + dropout_shape = tuple([1] * (key.ndim - 2)) + attn_weights.shape[-2:] + keep = random.bernoulli(dropout_rng, keep_prob, dropout_shape) # type: ignore + else: + keep = random.bernoulli(dropout_rng, keep_prob, attn_weights.shape) # type: ignore + multiplier = keep.astype(dtype) / jnp.asarray(keep_prob, dtype=dtype) + attn_weights = attn_weights * multiplier + + return attn_weights + + +def dot_product_attention( + query: Array, + key: Array, + value: Array, + r_pos_embed, + r_r_bias, + r_w_bias, + bias: Optional[Array] = None, + mask: Optional[Array] = None, + broadcast_dropout: bool = True, + dropout_rng: Optional[PRNGKey] = None, + dropout_rate: float = 0.0, + deterministic: bool = False, + dtype: Optional[Dtype] = None, + precision: PrecisionLike = None, +): + """Computes dot-product attention given query, key, and value. + + This is the core function for applying attention based on + https://arxiv.org/abs/1706.03762. It calculates the attention weights given + query and key and combines the values using the attention weights. + + Note: query, key, value needn't have any batch dimensions. + + Args: + query: queries for calculating attention with shape of + `[batch..., q_length, num_heads, qk_depth_per_head]`. + key: keys for calculating attention with shape of + `[batch..., kv_length, num_heads, qk_depth_per_head]`. + value: values to be used in attention with shape of + `[batch..., kv_length, num_heads, v_depth_per_head]`. + bias: bias for the attention weights. This should be broadcastable to the + shape `[batch..., num_heads, q_length, kv_length]`. + This can be used for incorporating causal masks, padding masks, + proximity bias, etc. + mask: mask for the attention weights. This should be broadcastable to the + shape `[batch..., num_heads, q_length, kv_length]`. + This can be used for incorporating causal masks. + Attention weights are masked out if their corresponding mask value + is `False`. + broadcast_dropout: bool: use a broadcasted dropout along batch dims. + dropout_rng: JAX PRNGKey: to be used for dropout + dropout_rate: dropout rate + deterministic: bool, deterministic or not (to apply dropout) + dtype: the dtype of the computation (default: infer from inputs) + precision: numerical precision of the computation see `jax.lax.Precision` + for details. + + Returns: + Output of shape `[batch..., q_length, num_heads, v_depth_per_head]`. + """ + query, key, value = promote_dtype(query, key, value, dtype=dtype) + dtype = query.dtype + assert key.ndim == query.ndim == value.ndim, "q, k, v must have same rank." + assert query.shape[:-3] == key.shape[:-3] == value.shape[:-3], "q, k, v batch dims must match." + assert query.shape[-2] == key.shape[-2] == value.shape[-2], "q, k, v num_heads must match." + assert key.shape[-3] == value.shape[-3], "k, v lengths must match." + + # compute attention weights + attn_weights = dot_product_attention_weights( + query, + key, + r_pos_embed, + r_r_bias, + r_w_bias, + bias, + mask, + broadcast_dropout, + dropout_rng, + dropout_rate, + deterministic, + dtype, + precision, + ) + + # return weighted sum over values for each query position + return jnp.einsum("...hqk,...khd->...qhd", attn_weights, value, precision=precision) + + +class RelMultiHeadDotProductAttention(Module): + """Multi-head dot-product attention. + + Attributes: + num_heads: number of attention heads. Features (i.e. inputs_q.shape[-1]) + should be divisible by the number of heads. + dtype: the dtype of the computation (default: infer from inputs and params) + param_dtype: the dtype passed to parameter initializers (default: float32) + qkv_features: dimension of the key, query, and value. + out_features: dimension of the last projection + broadcast_dropout: bool: use a broadcasted dropout along batch dims. + dropout_rate: dropout rate + deterministic: if false, the attention weight is masked randomly using + dropout, whereas if true, the attention weights are deterministic. + precision: numerical precision of the computation see `jax.lax.Precision` + for details. + kernel_init: initializer for the kernel of the Dense layers. + bias_init: initializer for the bias of the Dense layers. + use_bias: bool: whether pointwise QKVO dense transforms use bias. + attention_fn: dot_product_attention or compatible function. Accepts query, + key, value, and returns output of shape `[bs, dim1, dim2, ..., dimN,, + num_heads, value_channels]`` + decode: whether to prepare and use an autoregressive cache. + """ + + num_heads: int + dtype: Optional[Dtype] = None + param_dtype: Dtype = jnp.float32 + qkv_features: Optional[int] = None + out_features: Optional[int] = None + broadcast_dropout: bool = True + dropout_rate: float = 0.0 + deterministic: Optional[bool] = None + precision: PrecisionLike = None + kernel_init: Callable[[PRNGKey, Shape, Dtype], Array] = default_kernel_init + bias_init: Callable[[PRNGKey, Shape, Dtype], Array] = initializers.zeros_init() + use_bias: bool = True + attention_fn: Callable[..., Array] = dot_product_attention + decode: bool = False + qkv_dot_general: DotGeneralT = lax.dot_general + out_dot_general: DotGeneralT = lax.dot_general + + @compact + def __call__( + self, + inputs_q: Array, + inputs_kv: Array, + pos_embed: Array, + mask: Optional[Array] = None, + deterministic: Optional[bool] = None, + ): + """Applies multi-head dot product attention on the input data. + + Projects the inputs into multi-headed query, key, and value vectors, + applies dot-product attention and project the results to an output vector. + + Args: + inputs_q: input queries of shape + `[batch_sizes..., length, features]`. + inputs_kv: key/values of shape + `[batch_sizes..., length, features]`. + mask: attention mask of shape + `[batch_sizes..., num_heads, query_length, key/value_length]`. + Attention weights are masked out if their corresponding mask value + is `False`. + deterministic: if false, the attention weight is masked randomly + using dropout, whereas if true, the attention weights + are deterministic. + + Returns: + output of shape `[batch_sizes..., length, features]`. + """ + features = self.out_features or inputs_q.shape[-1] + qkv_features = self.qkv_features or inputs_q.shape[-1] + assert qkv_features % self.num_heads == 0, ( + f"Memory dimension ({qkv_features}) must be divisible by number of" f" heads ({self.num_heads})." + ) + head_dim = qkv_features // self.num_heads + + dense = functools.partial( + DenseGeneral, + axis=-1, + dtype=self.dtype, + param_dtype=self.param_dtype, + features=(self.num_heads, head_dim), + kernel_init=self.kernel_init, + bias_init=self.bias_init, + use_bias=self.use_bias, + precision=self.precision, + dot_general=self.qkv_dot_general, + ) + # project inputs_q to multi-headed q/k/v + # dimensions are then [batch..., length, n_heads, n_features_per_head] + query, key, value = ( + dense(name="query")(inputs_q), + dense(name="key")(inputs_kv), + dense(name="value")(inputs_kv), + ) + + # different bc no bias + dense_relpos = functools.partial( + DenseGeneral, + axis=-1, + dtype=self.dtype, + param_dtype=self.param_dtype, + features=(self.num_heads, head_dim), + kernel_init=self.kernel_init, + use_bias=False, + precision=self.precision, + dot_general=self.qkv_dot_general, + ) + + r_pos_embed = dense_relpos(name="pos_embed_mat")(pos_embed) + + r_r_bias = self.param("r_r_bias", self.bias_init, (self.num_heads, head_dim)) # Initialization function + r_w_bias = self.param("r_w_bias", self.bias_init, (self.num_heads, head_dim)) # Initialization function + + # During fast autoregressive decoding, we feed one position at a time, + # and cache the keys and values step by step. + if self.decode: + # detect if we're initializing by absence of existing cache data. + is_initialized = self.has_variable("cache", "cached_key") + cached_key = self.variable("cache", "cached_key", jnp.zeros, key.shape, key.dtype) + cached_value = self.variable("cache", "cached_value", jnp.zeros, value.shape, value.dtype) + cache_index = self.variable("cache", "cache_index", lambda: jnp.array(0, dtype=jnp.int32)) + if is_initialized: + ( + *batch_dims, + max_length, + num_heads, + depth_per_head, + ) = cached_key.value.shape + # shape check of cached keys against query input + expected_shape = tuple(batch_dims) + (1, num_heads, depth_per_head) + if expected_shape != query.shape: + raise ValueError( + "Autoregressive cache shape error, " + "expected query shape %s instead got %s." % (expected_shape, query.shape) + ) + # update key, value caches with our new 1d spatial slices + cur_index = cache_index.value + indices = (0,) * len(batch_dims) + (cur_index, 0, 0) + key = lax.dynamic_update_slice(cached_key.value, key, indices) + value = lax.dynamic_update_slice(cached_value.value, value, indices) + cached_key.value = key + cached_value.value = value + cache_index.value = cache_index.value + 1 + # causal mask for cached decoder self-attention: + # our single query position should only attend to those key + # positions that have already been generated and cached, + # not the remaining zero elements. + mask = combine_masks( + mask, + jnp.broadcast_to( + jnp.arange(max_length) <= cur_index, + tuple(batch_dims) + (1, 1, max_length), + ), + ) + + dropout_rng = None + if self.dropout_rate > 0.0: # Require `deterministic` only if using dropout. + m_deterministic = merge_param("deterministic", self.deterministic, deterministic) + if not m_deterministic: + dropout_rng = self.make_rng("dropout") + else: + m_deterministic = True + + # apply attention + x = self.attention_fn( + query, + key, + value, + r_pos_embed, + r_r_bias, + r_w_bias, + mask=mask, + dropout_rng=dropout_rng, + dropout_rate=self.dropout_rate, + broadcast_dropout=self.broadcast_dropout, + deterministic=m_deterministic, + dtype=self.dtype, + precision=self.precision, + ) # pytype: disable=wrong-keyword-args + # back to the original inputs dimensions + out = DenseGeneral( + features=features, + axis=(-2, -1), + kernel_init=self.kernel_init, + bias_init=self.bias_init, + use_bias=self.use_bias, + dtype=self.dtype, + param_dtype=self.param_dtype, + precision=self.precision, + dot_general=self.out_dot_general, + name="out", # type: ignore[call-arg] + )(x) + return out + + +class SelfAttention(RelMultiHeadDotProductAttention): + """Self-attention special case of multi-head dot-product attention.""" + + @compact + def __call__( # type: ignore + self, + inputs_q: Array, + mask: Optional[Array] = None, + deterministic: Optional[bool] = None, + ): + """Applies multi-head dot product self-attention on the input data. + + Projects the inputs into multi-headed query, key, and value vectors, + applies dot-product attention and project the results to an output vector. + + Args: + inputs_q: input queries of shape + `[batch_sizes..., length, features]`. + mask: attention mask of shape + `[batch_sizes..., num_heads, query_length, key/value_length]`. + Attention weights are masked out if their corresponding mask value + is `False`. + deterministic: if false, the attention weight is masked randomly + using dropout, whereas if true, the attention weights + are deterministic. + + Returns: + output of shape `[batch_sizes..., length, features]`. + """ + return super().__call__(inputs_q, inputs_q, mask, deterministic=deterministic) + + +# mask-making utility functions + + +def make_attention_mask( + query_input: Array, + key_input: Array, + pairwise_fn: Callable[..., Any] = jnp.multiply, + extra_batch_dims: int = 0, + dtype: Dtype = jnp.float32, +): + """Mask-making helper for attention weights. + + In case of 1d inputs (i.e., `[batch..., len_q]`, `[batch..., len_kv]`, the + attention weights will be `[batch..., heads, len_q, len_kv]` and this + function will produce `[batch..., 1, len_q, len_kv]`. + + Args: + query_input: a batched, flat input of query_length size + key_input: a batched, flat input of key_length size + pairwise_fn: broadcasting elementwise comparison function + extra_batch_dims: number of extra batch dims to add singleton + axes for, none by default + dtype: mask return dtype + + Returns: + A `[batch..., 1, len_q, len_kv]` shaped mask for 1d attention. + """ + mask = pairwise_fn(jnp.expand_dims(query_input, axis=-1), jnp.expand_dims(key_input, axis=-2)) + mask = jnp.expand_dims(mask, axis=-3) + mask = jnp.expand_dims(mask, axis=tuple(range(extra_batch_dims))) + return mask.astype(dtype) + + +def make_causal_mask(x: Array, extra_batch_dims: int = 0, dtype: Dtype = jnp.float32) -> Array: + """Make a causal mask for self-attention. + + In case of 1d inputs (i.e., `[batch..., len]`, the self-attention weights + will be `[batch..., heads, len, len]` and this function will produce a + causal mask of shape `[batch..., 1, len, len]`. + + Args: + x: input array of shape `[batch..., len]` + extra_batch_dims: number of batch dims to add singleton axes for, + none by default + dtype: mask return dtype + + Returns: + A `[batch..., 1, len, len]` shaped causal mask for 1d attention. + """ + idxs = jnp.broadcast_to(jnp.arange(x.shape[-1], dtype=jnp.int32), x.shape) + return make_attention_mask( + idxs, + idxs, + jnp.greater_equal, + extra_batch_dims=extra_batch_dims, + dtype=dtype, + ) + + +def combine_masks(*masks: Optional[Array], dtype: Dtype = jnp.float32) -> Array: + """Combine attention masks. + + Args: + *masks: set of attention mask arguments to combine, some can be None. + dtype: dtype for the returned mask. + + Returns: + Combined mask, reduced by logical and, returns None if no masks given. + """ + masks_list = [m for m in masks if m is not None] + if not masks_list: + return None + assert all( + map(lambda x: x.ndim == masks_list[0].ndim, masks_list) + ), f"masks must have same rank: {tuple(map(lambda x: x.ndim, masks_list))}" + mask, *other_masks = masks_list + for other_mask in other_masks: + mask = jnp.logical_and(mask, other_mask) + return mask.astype(dtype) diff --git a/Kinetix/kinetix/models/transformer_model.py b/Kinetix/kinetix/models/transformer_model.py new file mode 100644 index 0000000000000000000000000000000000000000..fdb9c61ff67006fa7ab4db86c3505ed2baf3b432 --- /dev/null +++ b/Kinetix/kinetix/models/transformer_model.py @@ -0,0 +1,302 @@ +import functools +import jax.numpy as jnp +import flax.linen as nn +import numpy as np +from flax.linen.initializers import constant, orthogonal +from typing import List, Sequence + +import distrax +import jax + +from kinetix.models.actor_critic import GeneralActorCriticRNN, ScannedRNN + + +from kinetix.render.renderer_symbolic_entity import EntityObservation + +from flax.linen.attention import MultiHeadDotProductAttention + + +class Gating(nn.Module): + # code taken from https://github.com/dhruvramani/Transformers-RL/blob/master/layers.py + d_input: int + bg: float = 0.0 + + @nn.compact + def __call__(self, x, y): + r = jax.nn.sigmoid(nn.Dense(self.d_input, use_bias=False)(y) + nn.Dense(self.d_input, use_bias=False)(x)) + z = jax.nn.sigmoid( + nn.Dense(self.d_input, use_bias=False)(y) + + nn.Dense(self.d_input, use_bias=False)(x) + - self.param("gating_bias", constant(self.bg), (self.d_input,)) + ) + h = jnp.tanh(nn.Dense(self.d_input, use_bias=False)(y) + nn.Dense(self.d_input, use_bias=False)(r * x)) + g = (1 - z) * x + (z * h) + return g + + +class transformer_layer(nn.Module): + num_heads: int + out_features: int + qkv_features: int + gating: bool = False + gating_bias: float = 0.0 + + def setup(self): + self.attention1 = MultiHeadDotProductAttention( + num_heads=self.num_heads, qkv_features=self.qkv_features, out_features=self.out_features + ) + + self.ln1 = nn.LayerNorm() + + self.dense1 = nn.Dense(self.out_features) + + self.dense2 = nn.Dense(self.out_features) + + self.ln2 = nn.LayerNorm() + if self.gating: + self.gate1 = Gating(self.out_features, self.gating_bias) + self.gate2 = Gating(self.out_features, self.gating_bias) + + def __call__(self, queries: jnp.ndarray, mask: jnp.ndarray): + # After reading the paper, this is what I think we should do: + # First layernorm, then do attention + queries_n = self.ln1(queries) + y = self.attention1(queries_n, mask=mask) + if self.gating: # and gate + y = self.gate1(queries, jax.nn.relu(y)) + else: + y = queries + y + # Dense after norming, crucially no relu. + e = self.dense1(self.ln2(y)) + if self.gating: # and gate again + # This may be the wrong way around + e = self.gate2(y, jax.nn.relu(e)) + else: + e = y + e + + return e + + +class Transformer(nn.Module): + encoder_size: int + num_heads: int + qkv_features: int + num_layers: int + gating: bool = False + gating_bias: float = 0.0 + + def setup(self): + # self.encoder = nn.Dense(self.encoder_size) + + # self.positional_encoding = PositionalEncoding(self.encoder_size, max_len=self.max_len) + + self.tf_layers = [ + transformer_layer( + num_heads=self.num_heads, + qkv_features=self.qkv_features, + out_features=self.encoder_size, + gating=self.gating, + gating_bias=self.gating_bias, + ) + for _ in range(self.num_layers) + ] + + self.joint_layers = [nn.Dense(self.encoder_size) for _ in range(self.num_layers)] + self.thruster_layers = [nn.Dense(self.encoder_size) for _ in range(self.num_layers)] + + # self.pos_emb=PositionalEmbedding(self.encoder_size) + + def __call__( + self, + shape_embeddings: jnp.ndarray, + shape_attention_mask, + joint_embeddings, + joint_mask, + joint_indexes, + thruster_embeddings, + thruster_mask, + thruster_indexes, + ): + # forward eval so obs is only one timestep + # encoded = self.encoder(shape_embeddings) + # pos_embed=self.pos_emb(jnp.arange(1+memories.shape[-3],-1,-1))[:1+memories.shape[-3]] + + for tf_layer, joint_layer, thruster_layer in zip(self.tf_layers, self.joint_layers, self.thruster_layers): + # Do attention + shape_embeddings = tf_layer(shape_embeddings, shape_attention_mask) + + # Joints + # T, B, 2J, (2SE + JE) + + @jax.vmap + @jax.vmap + def do_index2(to_ind, ind): + return to_ind[ind] + + joint_shape_embeddings = jnp.concatenate( + [ + do_index2(shape_embeddings, joint_indexes[..., 0]), + do_index2(shape_embeddings, joint_indexes[..., 1]), + joint_embeddings, + ], + axis=-1, + ) + + shape_joint_entity_delta = joint_layer(joint_shape_embeddings) * joint_mask[..., None] + + @jax.vmap + @jax.vmap + def add2(addee, index, adder): + return addee.at[index].add(adder) + + # Thrusters + thruster_shape_embeddings = jnp.concatenate( + [ + do_index2(shape_embeddings, thruster_indexes), + thruster_embeddings, + ], + axis=-1, + ) + + shape_thruster_entity_delta = thruster_layer(thruster_shape_embeddings) * thruster_mask[..., None] + + shape_embeddings = add2(shape_embeddings, joint_indexes[..., 0], shape_joint_entity_delta) + shape_embeddings = add2(shape_embeddings, thruster_indexes, shape_thruster_entity_delta) + + return shape_embeddings + + +class ActorCriticTransformer(nn.Module): + action_dim: Sequence[int] + fc_layer_width: int + action_mode: str + hybrid_action_continuous_dim: int + multi_discrete_number_of_dims_per_distribution: List[int] + transformer_size: int + transformer_encoder_size: int + transformer_depth: int + fc_layer_depth: int + num_heads: int + activation: str + aggregate_mode: str # "dummy" or "mean" or "dummy_and_mean" + full_attention_mask: bool # if true, only mask out inactives, and have everything attend to everything else + add_generator_embedding: bool = False + generator_embedding_number_of_timesteps: int = 10 + recurrent: bool = True + + @nn.compact + def __call__(self, hidden, x): + if self.activation == "relu": + activation = nn.relu + else: + activation = nn.tanh + + og_obs, dones = x + if self.add_generator_embedding: + obs = og_obs.obs + else: + obs = og_obs + + # obs._ is [T, B, N, L] + # B - batch size + # T - time + # N - number of things + # L - unembedded entity size + obs: EntityObservation + + def _single_encoder(features, entity_id, concat=True): + # assume two entity types + num_to_remove = 1 if concat else 0 + embedding = activation( + nn.Dense( + self.transformer_encoder_size - num_to_remove, + kernel_init=orthogonal(np.sqrt(2)), + bias_init=constant(0.0), + )(features) + ) + if concat: + id_1h = jnp.zeros((*embedding.shape[:3], 1)).at[:, :, :, entity_id].set(entity_id) + return jnp.concatenate([embedding, id_1h], axis=-1) + else: + return embedding + + circle_encodings = _single_encoder(obs.circles, 0) + polygon_encodings = _single_encoder(obs.polygons, 1) + joint_encodings = _single_encoder(obs.joints, -1, False) + thruster_encodings = _single_encoder(obs.thrusters, -1, False) + # Size of this is something like (T, B, N, K) (time, batch, num_entities, embedding_size) + + # T, B, M, K + shape_encodings = jnp.concatenate([polygon_encodings, circle_encodings], axis=2) + # T, B, M + shape_mask = jnp.concatenate([obs.polygon_mask, obs.circle_mask], axis=2) + + def mask_out_inactives(flat_active_mask, matrix_attention_mask): + matrix_attention_mask = matrix_attention_mask & (flat_active_mask[:, None]) & (flat_active_mask[None, :]) + return matrix_attention_mask + + joint_indexes = obs.joint_indexes + thruster_indexes = obs.thruster_indexes + + if self.aggregate_mode == "dummy" or self.aggregate_mode == "dummy_and_mean": + T, B, _, K = circle_encodings.shape + dummy = jnp.ones((T, B, 1, K)) + shape_encodings = jnp.concatenate([dummy, shape_encodings], axis=2) + shape_mask = jnp.concatenate( + [jnp.ones((T, B, 1), dtype=bool), shape_mask], + axis=2, + ) + N = obs.attention_mask.shape[-1] + overall_mask = ( + jnp.ones((T, B, obs.attention_mask.shape[2], N + 1, N + 1), dtype=bool) + .at[:, :, :, 1:, 1:] + .set(obs.attention_mask) + ) + overall_mask = jax.vmap(jax.vmap(mask_out_inactives))(shape_mask, overall_mask) + + # To account for the dummy entity + joint_indexes = joint_indexes + 1 + thruster_indexes = thruster_indexes + 1 + + else: + overall_mask = obs.attention_mask + + if self.full_attention_mask: + overall_mask = jnp.ones(overall_mask.shape, dtype=bool) + overall_mask = jax.vmap(jax.vmap(mask_out_inactives))(shape_mask, overall_mask) + + # Now do attention on these + embedding = Transformer( + num_layers=self.transformer_depth, + num_heads=self.num_heads, + qkv_features=self.transformer_size, + encoder_size=self.transformer_encoder_size, + gating=True, + gating_bias=0.0, + )( + shape_encodings, + jnp.repeat(overall_mask, repeats=self.num_heads // overall_mask.shape[2], axis=2), + joint_encodings, + obs.joint_mask, + joint_indexes, + thruster_encodings, + obs.thruster_mask, + thruster_indexes, + ) # add the extra dimension for the heads + + if self.aggregate_mode == "mean" or self.aggregate_mode == "dummy_and_mean": + embedding = jnp.mean(embedding, axis=2, where=shape_mask[..., None]) + else: + embedding = embedding[:, :, 0] # Take the dummy entity as the embedding of the entire scene. + + return GeneralActorCriticRNN( + action_dim=self.action_dim, + fc_layer_depth=self.fc_layer_depth, + fc_layer_width=self.fc_layer_width, + action_mode=self.action_mode, + hybrid_action_continuous_dim=self.hybrid_action_continuous_dim, + multi_discrete_number_of_dims_per_distribution=self.multi_discrete_number_of_dims_per_distribution, + add_generator_embedding=self.add_generator_embedding, + generator_embedding_number_of_timesteps=self.generator_embedding_number_of_timesteps, + recurrent=self.recurrent, + )(hidden, og_obs, embedding, dones, activation) diff --git a/Kinetix/kinetix/pcg/__init__.py b/Kinetix/kinetix/pcg/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Kinetix/kinetix/pcg/pcg.py b/Kinetix/kinetix/pcg/pcg.py new file mode 100644 index 0000000000000000000000000000000000000000..aa29b254ecaef19b53e8d20aaaa37d1263c962a6 --- /dev/null +++ b/Kinetix/kinetix/pcg/pcg.py @@ -0,0 +1,97 @@ +from functools import partial + +from jax2d.engine import recalculate_mass_and_inertia, recompute_global_joint_positions, select_shape +from kinetix.environment.env_state import EnvState, StaticEnvParams +from kinetix.pcg.pcg_state import PCGState +import jax +import jax.numpy as jnp + + +def _process_tied_together_shapes(pcg_state: PCGState, sampled_state: EnvState, static_params: StaticEnvParams): + + # Get the matrix of tied together positions. Since we vmap, we only want one entry active for any (i, j, k). Thus, we mask out some of the duplicate ones. + tied = jnp.triu(pcg_state.tied_together & jnp.logical_not(jnp.eye(pcg_state.tied_together.shape[0], dtype=bool))) + has_anything_in_column = tied.any(axis=0) + tied = ( + tied * jnp.logical_not(has_anything_in_column)[:, None] + ) # if there is something in a column, it means a previous one with a lower index has already been processed + + should_use_delta_positions = tied.any(axis=0) + + # This is the delta we have moved after sampling + delta_positions = jnp.concatenate( + [ + sampled_state.polygon.position - pcg_state.env_state.polygon.position, + sampled_state.circle.position - pcg_state.env_state.circle.position, + ] + ) + + def _get_effect_of_shape_i_on_all_others(item_index, item_row_of_what_is_tied): + delta_pos = delta_positions[item_index] + return jnp.arange(len(item_row_of_what_is_tied)), delta_pos[None] * item_row_of_what_is_tied[:, None] + + indices, positions = jax.vmap(_get_effect_of_shape_i_on_all_others, (0, 0))(jnp.arange(tied.shape[0]), tied) + indices = indices.flatten() + positions = positions.reshape(indices.shape[0], -1) + + default_positions = jnp.concatenate( + [pcg_state.env_state.polygon.position, pcg_state.env_state.circle.position], axis=0 + ) + sampled_positions = jnp.concatenate([sampled_state.polygon.position, sampled_state.circle.position], axis=0) + + updated_positions = default_positions.at[indices].add(positions) + # Use the deltas or the sampled positions + positions = jnp.where(should_use_delta_positions[:, None], updated_positions, sampled_positions) + + sampled_state = sampled_state.replace( + polygon=sampled_state.polygon.replace(position=positions[: static_params.num_polygons]), + circle=sampled_state.circle.replace(position=positions[static_params.num_polygons :]), + ) + return sampled_state + + +@partial(jax.jit, static_argnums=(3,)) +def sample_pcg_state(rng, pcg_state: PCGState, params, static_params): + def _pcg_fn(rng, main_val, max_val, mask): + pcg_val = jax.random.uniform(rng, shape=main_val.shape) * ( + max_val.astype(float) - main_val.astype(float) + ) + main_val.astype(float) + if jnp.issubdtype(main_val.dtype, jnp.integer) or jnp.issubdtype(main_val.dtype, jnp.bool_): + pcg_val = jnp.round(pcg_val) + pcg_val = pcg_val.astype(main_val.dtype) + new_val = jax.lax.select(mask.astype(bool), pcg_val, main_val) + return new_val + + def _random_split_like_tree(rng, target): + tree_def = jax.tree_structure(target) + rngs = jax.random.split(rng, tree_def.num_leaves) + return jax.tree_unflatten(tree_def, rngs) + + rng, _rng = jax.random.split(rng) + rng_tree = _random_split_like_tree(_rng, pcg_state.env_state) + + sampled_state = jax.tree_util.tree_map( + _pcg_fn, rng_tree, pcg_state.env_state, pcg_state.env_state_max, pcg_state.env_state_pcg_mask + ) + + sampled_state = _process_tied_together_shapes(pcg_state, sampled_state, static_params) + + sampled_state = recompute_global_joint_positions(sampled_state, static_params) + + env_state = recalculate_mass_and_inertia( + sampled_state, static_params, sampled_state.polygon_densities, sampled_state.circle_densities + ) + + return env_state + + +def env_state_to_pcg_state(env_state: EnvState): + N = env_state.polygon.active.shape[0] + env_state.circle.active.shape[0] + pcg_state = PCGState( + env_state=env_state, + env_state_max=env_state, + env_state_pcg_mask=jax.tree_util.tree_map(lambda x: jnp.zeros_like(x, dtype=bool), env_state), + tied_together=jnp.zeros((N, N), dtype=bool), + ) + + return pcg_state diff --git a/Kinetix/kinetix/pcg/pcg_state.py b/Kinetix/kinetix/pcg/pcg_state.py new file mode 100644 index 0000000000000000000000000000000000000000..2e88601e6d7cb2df8007fbf9ab447e66ea1a7a18 --- /dev/null +++ b/Kinetix/kinetix/pcg/pcg_state.py @@ -0,0 +1,24 @@ +from dataclasses import field +import jax.numpy as jnp +from flax import struct + +from jax2d.sim_state import SimState, SimParams, StaticSimParams, RigidBody, Joint, Thruster, CollisionManifold +from kinetix.environment.env_state import EnvState + + +@struct.dataclass +class PCGState: + # Primary env state + env_state: EnvState + # The PCG mask. If a value is truthy in this, then it is PCG not static + env_state_pcg_mask: EnvState + # In the case that a value is PCG, the env_state value is the min and this state represents the max + env_state_max: EnvState + + tied_together: jnp.ndarray # NxN matrix of booleans, where N is the number of shapes + + def __setstate__(self, state): + if "tied_together" not in state: + num_shapes = state["env_state"].polygon.active.shape[0] + state["env_state"].circle.active.shape[0] + state["tied_together"] = jnp.zeros((num_shapes, num_shapes), dtype=bool) + object.__setattr__(self, "__dict__", state) diff --git a/Kinetix/kinetix/render/__init__.py b/Kinetix/kinetix/render/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Kinetix/kinetix/render/renderer_pixels.py b/Kinetix/kinetix/render/renderer_pixels.py new file mode 100644 index 0000000000000000000000000000000000000000..d4efcd43bc3a730a9a8e70e7cfcbbe1386087756 --- /dev/null +++ b/Kinetix/kinetix/render/renderer_pixels.py @@ -0,0 +1,290 @@ +from functools import partial + +import jax +import jax.numpy as jnp +import numpy as np + +from jax2d import joint +from jax2d.engine import select_shape +from jax2d.maths import rmat +from jax2d.sim_state import RigidBody +from jaxgl.maths import dist_from_line +from jaxgl.renderer import clear_screen, make_renderer +from jaxgl.shaders import ( + fragment_shader_quad, + fragment_shader_edged_quad, + make_fragment_shader_texture, + nearest_neighbour, + make_fragment_shader_quad_textured, +) + +from kinetix.render.textures import ( + THRUSTER_TEXTURE_16_RGBA, + RJOINT_TEXTURE_6_RGBA, + FJOINT_TEXTURE_6_RGBA, +) +from kinetix.environment.env_state import StaticEnvParams, EnvParams, EnvState +from flax import struct + + +def make_render_pixels( + params, + static_params: StaticEnvParams, +): + screen_dim = static_params.screen_dim + downscale = static_params.downscale + + joint_tex_size = 6 + thruster_tex_size = 16 + + FIXATED_COLOUR = jnp.array([80, 80, 80]) + JOINT_COLOURS = jnp.array( + [ + # [0, 0, 255], + [255, 255, 255], # yellow + [255, 255, 0], # yellow + [255, 0, 255], # purple/magenta + [0, 255, 255], # cyan + [255, 153, 51], # white + ] + ) + + def colour_thruster_texture(colour): + return THRUSTER_TEXTURE_16_RGBA.at[:9, :, :3].mul(colour[None, None, :] / 255.0) + + coloured_thruster_textures = jax.vmap(colour_thruster_texture)(JOINT_COLOURS) + + ROLE_COLOURS = jnp.array( + [ + [160.0, 160.0, 160.0], # None + [0.0, 204.0, 0.0], # Green: The ball + [0.0, 102.0, 204.0], # Blue: The goal + [255.0, 102.0, 102.0], # Red: Death Objects + ] + ) + + BACKGROUND_COLOUR = jnp.array([255.0, 255.0, 255.0]) + + def _get_colour(shape_role, inverse_inertia): + base_colour = ROLE_COLOURS[shape_role] + f = (inverse_inertia == 0) * 1 + is_not_normal = (shape_role != 0) * 1 + + return jnp.array( + [ + base_colour, + base_colour, + FIXATED_COLOUR, + base_colour * 0.5, + ] + )[2 * f + is_not_normal] + + # Pixels per unit distance + ppud = params.pixels_per_unit // downscale + + downscaled_screen_dim = (screen_dim[0] // downscale, screen_dim[1] // downscale) + + full_screen_size = ( + downscaled_screen_dim[0] + (static_params.max_shape_size * 2 * ppud), + downscaled_screen_dim[1] + (static_params.max_shape_size * 2 * ppud), + ) + cleared_screen = clear_screen(full_screen_size, BACKGROUND_COLOUR) + + def _world_space_to_pixel_space(x): + return (x + static_params.max_shape_size) * ppud + + def fragment_shader_kinetix_circle(position, current_frag, unit_position, uniform): + centre, radius, rotation, colour, mask = uniform + + dist = jnp.sqrt(jnp.square(position - centre).sum()) + inside = dist <= radius + on_edge = dist > radius - 2 + + # TODO - precompute? + normal = jnp.array([jnp.sin(rotation), -jnp.cos(rotation)]) + + dist = dist_from_line(position, centre, centre + normal) + + on_edge |= (dist < 1) & (jnp.dot(normal, position - centre) <= 0) + + fragment = jax.lax.select(on_edge, jnp.zeros(3), colour) + + return jax.lax.select(inside & mask, fragment, current_frag) + + def fragment_shader_kinetix_joint(position, current_frag, unit_position, uniform): + texture, colour, mask = uniform + + tex_coord = ( + jnp.array( + [ + joint_tex_size * unit_position[0], + joint_tex_size * unit_position[1], + ] + ) + - 0.5 + ) + + tex_frag = nearest_neighbour(texture, tex_coord) + tex_frag = tex_frag.at[3].mul(mask) + tex_frag = tex_frag.at[:3].mul(colour / 255.0) + + tex_frag = (tex_frag[3] * tex_frag[:3]) + ((1.0 - tex_frag[3]) * current_frag) + + return tex_frag + + thruster_pixel_size = thruster_tex_size // downscale + thruster_pixel_size_diagonal = (thruster_pixel_size * np.sqrt(2)).astype(jnp.int32) + 1 + + def fragment_shader_kinetix_thruster(fragment_position, current_frag, unit_position, uniform): + thruster_position, rotation, texture, mask = uniform + + tex_position = jnp.matmul(rmat(-rotation), (fragment_position - thruster_position)) / thruster_pixel_size + 0.5 + + mask &= (tex_position[0] >= 0) & (tex_position[0] <= 1) & (tex_position[1] >= 0) & (tex_position[1] <= 1) + + eps = 0.001 + tex_coord = ( + jnp.array( + [ + thruster_tex_size * tex_position[0], + thruster_tex_size * tex_position[1], + ] + ) + - 0.5 + + eps + ) + + tex_frag = nearest_neighbour(texture, tex_coord) + tex_frag = tex_frag.at[3].mul(mask) + + tex_frag = (tex_frag[3] * tex_frag[:3]) + ((1.0 - tex_frag[3]) * current_frag) + + return tex_frag + + patch_size_1d = static_params.max_shape_size * ppud + patch_size = (patch_size_1d, patch_size_1d) + + circle_renderer = make_renderer(full_screen_size, fragment_shader_kinetix_circle, patch_size, batched=True) + quad_renderer = make_renderer(full_screen_size, fragment_shader_edged_quad, patch_size, batched=True) + big_quad_renderer = make_renderer(full_screen_size, fragment_shader_edged_quad, downscaled_screen_dim) + + joint_pixel_size = joint_tex_size // downscale + joint_renderer = make_renderer( + full_screen_size, fragment_shader_kinetix_joint, (joint_pixel_size, joint_pixel_size), batched=True + ) + + thruster_renderer = make_renderer( + full_screen_size, + fragment_shader_kinetix_thruster, + (thruster_pixel_size_diagonal, thruster_pixel_size_diagonal), + batched=True, + ) + + @jax.jit + def render_pixels(state: EnvState): + pixels = cleared_screen + + # Floor + floor_uniform = ( + _world_space_to_pixel_space(state.polygon.position[0, None, :] + state.polygon.vertices[0]), + _get_colour(state.polygon_shape_roles[0], 0), + jnp.zeros(3), + True, + ) + + pixels = big_quad_renderer(pixels, _world_space_to_pixel_space(jnp.zeros(2, dtype=jnp.int32)), floor_uniform) + + # Rectangles + rectangle_patch_positions = _world_space_to_pixel_space( + state.polygon.position - (static_params.max_shape_size / 2.0) + ).astype(jnp.int32) + + rectangle_rmats = jax.vmap(rmat)(state.polygon.rotation) + rectangle_rmats = jnp.repeat(rectangle_rmats[:, None, :, :], repeats=static_params.max_polygon_vertices, axis=1) + rectangle_vertices_pixel_space = _world_space_to_pixel_space( + state.polygon.position[:, None, :] + jax.vmap(jax.vmap(jnp.matmul))(rectangle_rmats, state.polygon.vertices) + ) + rectangle_colours = jax.vmap(_get_colour)(state.polygon_shape_roles, state.polygon.inverse_mass) + rectangle_edge_colours = jnp.zeros((static_params.num_polygons, 3)) + + rectangle_uniforms = ( + rectangle_vertices_pixel_space, + rectangle_colours, + rectangle_edge_colours, + state.polygon.active, + ) + + pixels = quad_renderer(pixels, rectangle_patch_positions, rectangle_uniforms) + + # Circles + circle_positions_pixel_space = _world_space_to_pixel_space(state.circle.position) + circle_radii_pixel_space = state.circle.radius * ppud + circle_patch_positions = _world_space_to_pixel_space( + state.circle.position - (static_params.max_shape_size / 2.0) + ).astype(jnp.int32) + + circle_colours = jax.vmap(_get_colour)(state.circle_shape_roles, state.circle.inverse_mass) + + circle_uniforms = ( + circle_positions_pixel_space, + circle_radii_pixel_space, + state.circle.rotation, + circle_colours, + state.circle.active, + ) + + pixels = circle_renderer(pixels, circle_patch_positions, circle_uniforms) + + # Joints + joint_patch_positions = jnp.round( + _world_space_to_pixel_space(state.joint.global_position) - (joint_pixel_size // 2) + ).astype(jnp.int32) + joint_textures = jax.vmap(jax.lax.select, in_axes=(0, None, None))( + state.joint.is_fixed_joint, FJOINT_TEXTURE_6_RGBA, RJOINT_TEXTURE_6_RGBA + ) + joint_colours = JOINT_COLOURS[ + (state.motor_bindings + 1) * (state.joint.motor_on & (~state.joint.is_fixed_joint)) + ] + + joint_uniforms = (joint_textures, joint_colours, state.joint.active) + + pixels = joint_renderer(pixels, joint_patch_positions, joint_uniforms) + + # Thrusters + thruster_positions = jnp.round(_world_space_to_pixel_space(state.thruster.global_position)).astype(jnp.int32) + thruster_patch_positions = thruster_positions - (thruster_pixel_size_diagonal // 2) + thruster_textures = coloured_thruster_textures[state.thruster_bindings + 1] + thruster_rotations = ( + state.thruster.rotation + + jax.vmap(select_shape, in_axes=(None, 0, None))( + state, state.thruster.object_index, static_params + ).rotation + ) + thruster_uniforms = (thruster_positions, thruster_rotations, thruster_textures, state.thruster.active) + + pixels = thruster_renderer(pixels, thruster_patch_positions, thruster_uniforms) + + # Crop out the sides + crop_amount = static_params.max_shape_size * ppud + return pixels[crop_amount:-crop_amount, crop_amount:-crop_amount] + + return render_pixels + + +@struct.dataclass +class PixelsObservation: + image: jnp.ndarray + global_info: jnp.ndarray + + +def make_render_pixels_rl(params, static_params: StaticEnvParams): + render_fn = make_render_pixels(params, static_params) + + def inner(state): + pixels = render_fn(state) / 255.0 + return PixelsObservation( + image=pixels, + global_info=jnp.array([state.gravity[1] / 10.0]), + ) + + return inner diff --git a/Kinetix/kinetix/render/renderer_symbolic_common.py b/Kinetix/kinetix/render/renderer_symbolic_common.py new file mode 100644 index 0000000000000000000000000000000000000000..90d066bc3380337beb2915e4516c1f77378687e4 --- /dev/null +++ b/Kinetix/kinetix/render/renderer_symbolic_common.py @@ -0,0 +1,190 @@ +import jax +from jax2d.sim_state import RigidBody +import jax.numpy as jnp +from kinetix.environment.env_state import EnvParams, EnvState, StaticEnvParams + + +def _get_base_shape_features( + density: jnp.ndarray, roles: jnp.ndarray, shapes: RigidBody, env_params: EnvParams +) -> jnp.ndarray: + cos = jnp.cos(shapes.rotation) + sin = jnp.sin(shapes.rotation) + return jnp.concatenate( + [ + shapes.position, + shapes.velocity, + jnp.expand_dims(shapes.inverse_mass, axis=1), + jnp.expand_dims(shapes.inverse_inertia, axis=1), + jnp.expand_dims(density, axis=1), + jnp.expand_dims(jnp.tanh(shapes.angular_velocity / 10), axis=1), + jax.nn.one_hot(roles, env_params.num_shape_roles), + jnp.expand_dims(sin, axis=1), + jnp.expand_dims(cos, axis=1), + jnp.expand_dims(shapes.friction, axis=1), + jnp.expand_dims(shapes.restitution, axis=1), + ], + axis=1, + ) + + +def add_circle_features( + base_features: jnp.ndarray, shapes: RigidBody, env_params: EnvParams, static_env_params: StaticEnvParams +): + return jnp.concatenate( + [ + base_features, + shapes.radius[:, None], + jnp.ones_like(base_features[:, :1]), # one for circle + ], + axis=1, + ) + + +def make_circle_features( + state: EnvState, env_params: EnvParams, static_env_params: StaticEnvParams +) -> tuple[jnp.ndarray, jnp.ndarray]: + base_features = _get_base_shape_features(state.circle_densities, state.circle_shape_roles, state.circle, env_params) + node_features = add_circle_features(base_features, state.circle, env_params, static_env_params) + return node_features, state.circle.active + + +def add_polygon_features( + base_features: jnp.ndarray, shapes: RigidBody, env_params: EnvParams, static_env_params: StaticEnvParams +): + vertices = jnp.where( + jnp.arange(static_env_params.max_polygon_vertices)[None, :, None] < shapes.n_vertices[:, None, None], + shapes.vertices, + jnp.zeros_like(shapes.vertices) - 1, + ) + + return jnp.concatenate( + [ + base_features, + jnp.zeros_like(base_features[:, :1]), # zero for polygon + vertices.reshape((vertices.shape[0], -1)), + jnp.expand_dims((shapes.n_vertices <= 3), axis=1), + ], + axis=1, + ) + + +def make_polygon_features( + state: EnvState, env_params: EnvParams, static_env_params: StaticEnvParams +) -> tuple[jnp.ndarray, jnp.ndarray]: + base_features = _get_base_shape_features( + state.polygon_densities, state.polygon_shape_roles, state.polygon, env_params + ) + node_features = add_polygon_features(base_features, state.polygon, env_params, static_env_params) + return node_features, state.polygon.active + + +def make_unified_shape_features( + state: EnvState, env_params: EnvParams, static_env_params: StaticEnvParams +) -> tuple[jnp.ndarray, jnp.ndarray]: + base_p = _get_base_shape_features(state.polygon_densities, state.polygon_shape_roles, state.polygon, env_params) + base_c = _get_base_shape_features(state.circle_densities, state.circle_shape_roles, state.circle, env_params) + base_p = add_polygon_features(base_p, state.polygon, env_params, static_env_params) + base_p = add_circle_features(base_p, state.polygon, env_params, static_env_params) + + base_c = add_polygon_features(base_c, state.circle, env_params, static_env_params) + base_c = add_circle_features(base_c, state.circle, env_params, static_env_params) + + return jnp.concatenate([base_p, base_c], axis=0), jnp.concatenate( + [state.polygon.active, state.circle.active], axis=0 + ) + + +def make_joint_features( + state: EnvState, env_params: EnvParams, static_env_params: StaticEnvParams +) -> tuple[jnp.ndarray, jnp.ndarray, jnp.ndarray]: + # Returns joint_features, indexes, mask, of shape: + # (2 * J, K), (2 * J, 2), (2 * J,) + def _create_joint_features(joints): + # 2, J, A + J = joints.active.shape[0] + + def _create_1way_joint_features(direction): + from_pos = jax.lax.select(direction, joints.a_relative_pos, joints.b_relative_pos) + to_pos = jax.lax.select(direction, joints.b_relative_pos, joints.a_relative_pos) + + rotation_sin, rotation_cos = jnp.sin(joints.rotation), jnp.cos(joints.rotation) + rotation_max_sin = jnp.sin(joints.max_rotation) * joints.motor_has_joint_limits + rotation_max_cos = jnp.cos(joints.max_rotation) * joints.motor_has_joint_limits + rotation_min_sin = jnp.sin(joints.min_rotation) * joints.motor_has_joint_limits + rotation_min_cos = jnp.cos(joints.min_rotation) * joints.motor_has_joint_limits + + rotation_diff_max = (joints.max_rotation - joints.rotation) * joints.motor_has_joint_limits + rotation_diff_min = (joints.min_rotation - joints.rotation) * joints.motor_has_joint_limits + + base_features = jnp.concatenate( + [ + (joints.active * 1.0)[:, None], + (joints.is_fixed_joint * 1.0)[:, None], # J, 1 + from_pos, + to_pos, + rotation_sin[:, None], + rotation_cos[:, None], + ], + axis=1, + ) + rjoint_features = ( + jnp.concatenate( + [ + joints.motor_speed[:, None], + joints.motor_power[:, None], + (joints.motor_on * 1.0)[:, None], + (joints.motor_has_joint_limits * 1.0)[:, None], + jax.nn.one_hot(state.motor_bindings, num_classes=static_env_params.num_motor_bindings), + rotation_min_sin[:, None], + rotation_min_cos[:, None], + rotation_max_sin[:, None], + rotation_max_cos[:, None], + rotation_diff_min[:, None], + rotation_diff_max[:, None], + ], + axis=1, + ) + * (1.0 - (joints.is_fixed_joint * 1.0))[:, None] + ) + + return jnp.concatenate([base_features, rjoint_features], axis=1) + + # 2, J, A + joint_features = jax.vmap(_create_1way_joint_features)(jnp.array([False, True])) + + # J, 2 + indexes_from = jnp.concatenate([joints.b_index[:, None], joints.a_index[:, None]], axis=1) + indexes_to = jnp.concatenate([joints.a_index[:, None], joints.b_index[:, None]], axis=1) + + indexes_from = jnp.where(joints.active[:, None], indexes_from, jnp.zeros_like(indexes_from)) + indexes_to = jnp.where(joints.active[:, None], indexes_to, jnp.zeros_like(indexes_to)) + + indexes = jnp.concatenate([indexes_from, indexes_to], axis=0) + mask = jnp.concatenate([joints.active, joints.active], axis=0) + + return joint_features.reshape((2 * J, -1)), indexes, mask + + return _create_joint_features(state.joint) + + +def make_thruster_features( + state: EnvState, env_params: EnvParams, static_env_params: StaticEnvParams +) -> tuple[jnp.ndarray, jnp.ndarray, jnp.ndarray]: + # Returns thruster_features, indexes, mask, of shape: + # (T, K), (T,), (T,) + def _create_thruster_features(thrusters): + cos = jnp.cos(thrusters.rotation) + sin = jnp.sin(thrusters.rotation) + return jnp.concatenate( + [ + (thrusters.active * 1.0)[:, None], + (thrusters.relative_position), + jax.nn.one_hot(state.thruster_bindings, num_classes=static_env_params.num_thruster_bindings), + sin[:, None], + cos[:, None], + thrusters.power[:, None], + ], + axis=1, + ) + + return _create_thruster_features(state.thruster), state.thruster.object_index, state.thruster.active diff --git a/Kinetix/kinetix/render/renderer_symbolic_entity.py b/Kinetix/kinetix/render/renderer_symbolic_entity.py new file mode 100644 index 0000000000000000000000000000000000000000..e04ed1db0bdbb0aa02777fd5782d05265b54bac5 --- /dev/null +++ b/Kinetix/kinetix/render/renderer_symbolic_entity.py @@ -0,0 +1,121 @@ +from cmath import rect +from functools import partial + +import jax +import jax.numpy as jnp +from flax import struct +from jax2d.engine import get_pairwise_interaction_indices +from kinetix.environment.env_state import EnvState +from kinetix.render.renderer_symbolic_common import ( + make_circle_features, + make_joint_features, + make_polygon_features, + make_thruster_features, + make_unified_shape_features, +) + + +@struct.dataclass +class EntityObservation: + circles: jnp.ndarray + polygons: jnp.ndarray + joints: jnp.ndarray + thrusters: jnp.ndarray + + circle_mask: jnp.ndarray + polygon_mask: jnp.ndarray + joint_mask: jnp.ndarray + thruster_mask: jnp.ndarray + attention_mask: jnp.ndarray + # collision_mask: jnp.ndarray + + joint_indexes: jnp.ndarray + thruster_indexes: jnp.ndarray + + +def make_render_entities(params, static_params): + _, _, _, circle_circle_pairs, circle_rect_pairs, rect_rect_pairs = get_pairwise_interaction_indices(static_params) + circle_rect_pairs = circle_rect_pairs.at[:, 0].add(static_params.num_polygons) + circle_circle_pairs = circle_circle_pairs + static_params.num_polygons + + def render_entities(state: EnvState): + state = jax.tree_util.tree_map(lambda x: jnp.nan_to_num(x), state) + + joint_features, joint_indexes, joint_mask = make_joint_features(state, params, static_params) + thruster_features, thruster_indexes, thruster_mask = make_thruster_features(state, params, static_params) + + poly_nodes, poly_mask = make_polygon_features(state, params, static_params) + circle_nodes, circle_mask = make_circle_features(state, params, static_params) + + def _add_grav(nodes): + return jnp.concatenate( + [nodes, jnp.zeros((nodes.shape[0], 1)) + state.gravity[1] / 10], axis=-1 + ) # add gravity to each shape's embedding + + poly_nodes = _add_grav(poly_nodes) + circle_nodes = _add_grav(circle_nodes) + + # Shape of something like (NPoly + NCircle + 2 * NJoint + NThruster ) + mask_flat_shapes = jnp.concatenate([poly_mask, circle_mask], axis=0) + num_shapes = static_params.num_polygons + static_params.num_circles + + def make_n_squared_mask(val): + # val has shape N of bools. + N = val.shape[0] + A = jnp.eye(N, N, dtype=bool) # also have things attend to themselves + # Make the shapes fully connected + full_mask = A.at[:num_shapes, :num_shapes].set(jnp.ones((num_shapes, num_shapes), dtype=bool)) + + one_hop_connected = jnp.zeros((N, N), dtype=bool) + one_hop_connected = one_hop_connected.at[joint_indexes[:, 0], joint_indexes[:, 1]].set(True) + one_hop_connected = one_hop_connected.at[0, 0].set(False) # invalid joints have indices of (0, 0) + + multi_hop_connected = jnp.logical_not(state.collision_matrix) + + collision_mask = state.collision_matrix + + # where val is false, we want to mask out the row and column. + full_mask = full_mask & (val[:, None]) & (val[None, :]) + collision_mask = collision_mask & (val[:, None]) & (val[None, :]) + multi_hop_connected = multi_hop_connected & (val[:, None]) & (val[None, :]) + one_hop_connected = one_hop_connected & (val[:, None]) & (val[None, :]) + collision_manifold_mask = jnp.zeros_like(collision_mask) + + def _set(collision_manifold_mask, pairs, active): + return collision_manifold_mask.at[ + pairs[:, 0], + pairs[:, 1], + ].set(active) + + collision_manifold_mask = _set( + collision_manifold_mask, + rect_rect_pairs, + jnp.logical_or(state.acc_rr_manifolds.active[..., 0], state.acc_rr_manifolds.active[..., 1]), + ) + + collision_manifold_mask = _set(collision_manifold_mask, circle_rect_pairs, state.acc_cr_manifolds.active) + collision_manifold_mask = _set(collision_manifold_mask, circle_circle_pairs, state.acc_cc_manifolds.active) + collision_manifold_mask = collision_manifold_mask & (val[:, None]) & (val[None, :]) + + return jnp.concatenate( + [full_mask[None], multi_hop_connected[None], one_hop_connected[None], collision_manifold_mask[None]], + axis=0, + ) + + mask_n_squared = make_n_squared_mask(mask_flat_shapes) + + return EntityObservation( + circles=circle_nodes, + polygons=poly_nodes, + joints=joint_features, + thrusters=thruster_features, + circle_mask=circle_mask, + polygon_mask=poly_mask, + joint_mask=joint_mask, + thruster_mask=thruster_mask, + attention_mask=mask_n_squared, + joint_indexes=joint_indexes, + thruster_indexes=thruster_indexes, + ) + + return render_entities diff --git a/Kinetix/kinetix/render/renderer_symbolic_flat.py b/Kinetix/kinetix/render/renderer_symbolic_flat.py new file mode 100644 index 0000000000000000000000000000000000000000..f2921aa34adb510dfd1a93a2ad09db7d8cf1adc2 --- /dev/null +++ b/Kinetix/kinetix/render/renderer_symbolic_flat.py @@ -0,0 +1,102 @@ +from functools import partial + +import jax +import jax.numpy as jnp +import numpy as np + +from jax2d import joint +from jax2d.engine import select_shape +from jax2d.maths import rmat +from jax2d.sim_state import RigidBody +from jaxgl.maths import dist_from_line +from jaxgl.renderer import clear_screen, make_renderer +from jaxgl.shaders import ( + fragment_shader_quad, + fragment_shader_edged_quad, + make_fragment_shader_texture, + nearest_neighbour, + make_fragment_shader_quad_textured, +) +from kinetix.render.renderer_symbolic_common import ( + make_circle_features, + make_joint_features, + make_polygon_features, + make_thruster_features, +) +from kinetix.environment.env_state import StaticEnvParams, EnvParams, EnvState +from flax import struct + + +def make_render_symbolic(params, static_params: StaticEnvParams): + def render_symbolic(state): + + n_polys = static_params.num_polygons + nshapes = n_polys + static_params.num_circles + + polygon_features, polygon_mask = make_polygon_features(state, params, static_params) + mask_to_ignore_walls_ceiling = np.ones(static_params.num_polygons, dtype=bool) + mask_to_ignore_walls_ceiling[np.array([1, 2, 3])] = False + + polygon_features = polygon_features[mask_to_ignore_walls_ceiling] + polygon_mask = polygon_mask[mask_to_ignore_walls_ceiling] + + circle_features, circle_mask = make_circle_features(state, params, static_params) + joint_features, joint_idxs, joint_mask = make_joint_features(state, params, static_params) + thruster_features, thruster_idxs, thruster_mask = make_thruster_features(state, params, static_params) + + two_J = joint_features.shape[0] + J = two_J // 2 # for symbolic only have the one + joint_features = jnp.concatenate( + [ + joint_features[:J], # shape (2 * J, K) + jax.nn.one_hot(joint_idxs[:J, 0], nshapes), # shape (2 * J, N) + jax.nn.one_hot(joint_idxs[:J, 1], nshapes), # shape (2 * J, N) + ], + axis=1, + ) + thruster_features = jnp.concatenate( + [ + thruster_features, + jax.nn.one_hot(thruster_idxs, nshapes), + ], + axis=1, + ) + + polygon_features = jnp.where(polygon_mask[:, None], polygon_features, 0.0).flatten() + circle_features = jnp.where(circle_mask[:, None], circle_features, 0.0).flatten() + joint_features = jnp.where(joint_mask[:J, None], joint_features, 0.0).flatten() + thruster_features = jnp.where(thruster_mask[:, None], thruster_features, 0.0).flatten() + + def _get_manifold_features(manifold): + collision_mask_features = jnp.concatenate( + [ + manifold.normal, + jnp.expand_dims(manifold.penetration, axis=-1), + manifold.collision_point, + jnp.expand_dims(manifold.acc_impulse_normal, axis=-1), + jnp.expand_dims(manifold.acc_impulse_tangent, axis=-1), + ], + axis=-1, + ) + + return (collision_mask_features * manifold.active[..., None]).flatten() + + obs = jnp.concatenate( + [ + polygon_features, + circle_features, + joint_features, + thruster_features, + jnp.array([state.gravity[1]]) / 10, + # _get_manifold_features(state.acc_cc_manifolds), + # _get_manifold_features(state.acc_cr_manifolds), + # _get_manifold_features(state.acc_rr_manifolds), + ], + axis=0, + ) + + obs = jnp.clip(obs, a_min=-10.0, a_max=10.0) + obs = jnp.nan_to_num(obs) + return obs + + return render_symbolic diff --git a/Kinetix/kinetix/render/textures.py b/Kinetix/kinetix/render/textures.py new file mode 100644 index 0000000000000000000000000000000000000000..73f720bff2037c8845ad75bed93b9e21e51b20c6 --- /dev/null +++ b/Kinetix/kinetix/render/textures.py @@ -0,0 +1,43 @@ +import os +import pathlib +from enum import Enum +import jax.numpy as jnp +import imageio.v3 as iio +import numpy as np +from PIL import Image + + +def load_texture(filename, render_size): + filename = os.path.join(pathlib.Path(__file__).parent.parent.resolve(), "assets", filename) + img = iio.imread(filename) + jnp_img = jnp.array(img).astype(jnp.int32) + + if jnp_img.shape[2] == 4: + jnp_img = jnp_img.at[:, :, 3].set(jnp_img[:, :, 3] // 255) + + img = np.array(jnp_img, dtype=np.uint8) + image = Image.fromarray(img) + image = image.resize((render_size, render_size), resample=Image.NEAREST) + jnp_img = jnp.array(image, dtype=jnp.float32) + + return jnp_img.transpose((1, 0, 2)) + + +EDIT_TEXTURE_RGBA = load_texture("edit.png", 64) +PLAY_TEXTURE_RGBA = load_texture("play.png", 64) + +CIRCLE_TEXTURE_RGBA = load_texture("circle.png", 32) +RECT_TEXTURE_RGBA = load_texture("square.png", 32) +TRIANGLE_TEXTURE_RGBA = load_texture("triangle.png", 32) +RJOINT_TEXTURE_6_RGBA = load_texture("rjoint.png", 6) +RJOINT_TEXTURE_RGBA = load_texture("rjoint2.png", 32) + +FJOINT_TEXTURE_6_RGBA = load_texture("fjoint.png", 6) +FJOINT_TEXTURE_RGBA = load_texture("fjoint2.png", 32) + + +ROTATION_TEXTURE_RGBA = load_texture("rotate.png", 32) +SELECT_TEXTURE_RGBA = load_texture("hand.png", 32) + +THRUSTER_TEXTURE_RGBA = jnp.rot90(load_texture("thruster6.png", 32), k=3) +THRUSTER_TEXTURE_16_RGBA = jnp.rot90(load_texture("thruster.png", 16), k=3) diff --git a/Kinetix/kinetix/util/__init__.py b/Kinetix/kinetix/util/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Kinetix/kinetix/util/config.py b/Kinetix/kinetix/util/config.py new file mode 100644 index 0000000000000000000000000000000000000000..e38b9e9ce7cdb3712670268ea8c220a3e185388c --- /dev/null +++ b/Kinetix/kinetix/util/config.py @@ -0,0 +1,229 @@ +import copy +import datetime +import gzip +import json +import os +from hashlib import md5 + +import jax +import jax.numpy as jnp +import numpy as np +from numpy import isin +from kinetix.environment.ued.ued_state import UEDParams +from omegaconf import OmegaConf +from pandas import isna +from typing import List, Tuple +import wandb +from kinetix.environment.env_state import EnvParams, StaticEnvParams +from collections import defaultdict + +from kinetix.util.saving import load_from_json_file + + +def get_hash_without_seed(config): + old_seed = config["seed"] + config["seed"] = 0 + ans = md5(OmegaConf.to_yaml(config, sort_keys=True).encode()).hexdigest() + config["seed"] = old_seed + return ans + + +def get_date() -> str: + return datetime.datetime.now().strftime("%Y-%m-%d-%H-%M-%S") + + +def generate_params_from_config(config): + if config.get("env_size_type", "predefined") == "custom": + # must load env params from a file + _, static_env_params, env_params = load_from_json_file(os.path.join("worlds", config["custom_path"])) + return env_params, static_env_params.replace( + frame_skip=config["frame_skip"], + ) + env_params = EnvParams() + + static_env_params = StaticEnvParams().replace( + num_polygons=config["num_polygons"], + num_circles=config["num_circles"], + num_joints=config["num_joints"], + num_thrusters=config["num_thrusters"], + frame_skip=config["frame_skip"], + num_motor_bindings=config["num_motor_bindings"], + num_thruster_bindings=config["num_thruster_bindings"], + ) + + return env_params, static_env_params + + +def generate_ued_params_from_config(config) -> UEDParams: + ans = UEDParams() + + if config["env_size_name"] == "s": + ans = ans.replace(add_shape_n_proposals=1) # otherwise we get a very weird XLA bug. + if "fixate_chance_max" in config: + print("Changing fixate chance max to", config["fixate_chance_max"]) + ans = ans.replace(fixate_chance_max=config["fixate_chance_max"]) + return ans + + +def get_eval_level_groups(eval_levels: List[str]) -> List[Tuple[str, str]]: + def get_groups(s): + # This is the size group + group_one = s.split("/")[0] + group_two = s.split("/")[1].split("_")[0] + group_two = "".join([i for i in group_two if not i.isdigit()]) + if group_two == "h": + group_two = "handmade" + if group_two == "r": + group_two = "random" + return f"{group_one}_all", f"{group_one}_{group_two}" + + indices = defaultdict(list) + + for idx, s in enumerate(eval_levels): + groups = get_groups(s) + for group in groups: + indices[group].append(idx) + + indices2 = {} + for g in indices: + indices2[g] = np.array(indices[g]) + + return indices2 + + +def normalise_config(config, name, editor_config=False): + old_config = copy.deepcopy(config) + keys = ["env", "learning", "model", "misc", "eval", "ued", "env_size", "train_levels"] + for k in keys: + if k not in config: + config[k] = {} + small_d = config[k] + del config[k] + for kk, vv in small_d.items(): + assert kk not in config, kk + config[kk] = vv + + if not editor_config: + config["eval_env_size_true"] = config["eval_env_size"] + if config["num_train_envs"] == 2048 and "Pixels" in config["env_name"]: + config["num_train_envs"] = 512 + if "SFL" in name and config["env_size_name"] in ["m", "l"]: + config["eval_num_attempts"] = 6 # to avoid a very weird XLA bug. + config["hash"] = get_hash_without_seed(config) + + config["random_hash"] = np.random.randint(2**31) + + config["log_save_path"] = f"logs/{config['hash']}/{config['seed']}-{get_date()}" + os.makedirs(config["log_save_path"], exist_ok=True) + with open(f"{config['log_save_path']}/config.yaml", "w") as f: + f.write(OmegaConf.to_yaml(old_config)) + if config["group"] == "auto": + config["group"] = f"{name}-" + config["group_auto_prefix"] + config["env_name"].replace("Kinetix-", "") + config["group"] += "-" + str(config["env_size_name"]) + + if config["eval_levels"] == ["auto"] or config["eval_levels"] == "auto": + config["eval_levels"] = config["train_levels_list"] + print("Using Auto eval levels:", config["eval_levels"]) + config["num_eval_levels"] = len(config["eval_levels"]) + + steps = ( + config["num_steps"] + * config.get("outer_rollout_steps", 1) + * config["num_train_envs"] + * (2 if name == "PAIRED" else 1) + ) + config["num_updates"] = int(config["total_timesteps"]) // steps + + nsteps = int(config["total_timesteps"] // 1e6) + letter = "M" + if nsteps >= 1000: + nsteps = nsteps // 1000 + letter = "B" + config["run_name"] = ( + config["env_name"] + f"-{name}-" + str(nsteps) + letter + "-" + str(config["num_train_envs"]) + ) + + if config["checkpoint_save_freq"] >= config["num_updates"]: + config["checkpoint_save_freq"] = config["num_updates"] + return config + + +def get_tags(config, name): + return [name] + tags = [name] + if name in ["PLR", "ACCEL", "DR"]: + if config["use_accel"]: + tags.append("ACCEL") + else: + tags.append("PLR") + return tags + + +def init_wandb(config, name) -> wandb.run: + run = wandb.init( + config=config, + project=config["wandb_project"], + group=config["group"], + name=config["run_name"], + entity=config["wandb_entity"], + mode=config["wandb_mode"], + tags=get_tags(config, name), + ) + wandb.define_metric("timing/num_updates") + wandb.define_metric("timing/num_env_steps") + wandb.define_metric("*", step_metric="timing/num_env_steps") + wandb.define_metric("timing/sps", step_metric="timing/num_env_steps") + return run + + +def save_data_to_local_file(data_to_save, config): + if not config.get("save_local_data", False): + return + + def reverse_in(li, value): + for i, v in enumerate(li): + if v in value: + return True + return False + + clean_data = {k: v for k, v in data_to_save.items() if not reverse_in(["media/", "images/"], k)} + + def _clean(x): + if isinstance(x, jnp.ndarray): + return x.tolist() + elif isinstance(x, jnp.float32): + if jnp.isnan(x): + return -float("inf") + return round(float(x) * 1000) / 1000 + elif isinstance(x, jnp.int32): + return int(x) + return x + + clean_data = jax.tree_map(lambda x: _clean(x), clean_data) + print("Saving this data:", clean_data) + with open(f"{config['log_save_path']}/data.jsonl", "a+") as f: + f.write(json.dumps(clean_data) + "\n") + + +def compress_log_files_after_run(config): + fpath = f"{config['log_save_path']}/data.jsonl" + with open(fpath, "rb") as f_in, gzip.open(fpath + ".gz", "wb") as f_out: + f_out.writelines(f_in) + + +def get_video_frequency(config, update_step): + frac_through_training = update_step / config["num_updates"] + vid_frequency = ( + config["eval_freq"] + * config["video_frequency"] + * jax.lax.select( + (0.1 <= frac_through_training) & (frac_through_training < 0.3), + 1, + jax.lax.select( + (0.3 <= frac_through_training) & (frac_through_training < 0.6), + 2, + 4, + ), + ) + ) + return vid_frequency diff --git a/Kinetix/kinetix/util/learning.py b/Kinetix/kinetix/util/learning.py new file mode 100644 index 0000000000000000000000000000000000000000..881edd94385217e9ce9ceb979b6987be00417463 --- /dev/null +++ b/Kinetix/kinetix/util/learning.py @@ -0,0 +1,565 @@ +from functools import partial +import json +import os +import re +import time +from enum import IntEnum +from typing import Tuple + +import chex +import jax +import jax.numpy as jnp +import numpy as np +import optax +import orbax.checkpoint as ocp +from flax import core, struct +from flax.training.train_state import TrainState as BaseTrainState + +import wandb +from jaxued.environments.underspecified_env import EnvParams, EnvState, Observation, UnderspecifiedEnv +from jaxued.level_sampler import LevelSampler +from jaxued.utils import compute_max_returns, max_mc, positive_value_loss + +from kinetix.environment.env import PixelObservations, make_kinetix_env_from_name +from kinetix.environment.env_state import StaticEnvParams +from kinetix.environment.utils import permute_pcg_state +from kinetix.environment.wrappers import ( + UnderspecifiedToGymnaxWrapper, + LogWrapper, + DenseRewardWrapper, + AutoReplayWrapper, +) +from kinetix.models import make_network_from_config +from kinetix.pcg.pcg import env_state_to_pcg_state +from kinetix.render.renderer_pixels import make_render_pixels +from kinetix.models.actor_critic import ScannedRNN +from kinetix.util.saving import ( + expand_pcg_state, + get_pcg_state_from_json, + load_pcg_state_pickle, + load_world_state_pickle, + stack_list_of_pytrees, + import_env_state_from_json, + load_from_json_file, +) +from flax.training.train_state import TrainState + +BASE_DIR = "worlds" + +DEFAULT_EVAL_LEVELS = [ + "easy.cartpole", + "easy.flappy_bird", + "easy.unicycle", + "easy.car_left", + "easy.car_right", + "easy.pinball", + "easy.swing_up", + "easy.thruster", +] + + +def get_eval_levels(eval_levels, static_env_params): + should_permute = [".permute" in l for l in eval_levels] + eval_levels = [re.sub(r"\.permute\d+", "", l) for l in eval_levels] + ls = [get_pcg_state_from_json(os.path.join(BASE_DIR, l + ("" if l.endswith(".json") else ".json"))) for l in eval_levels] + ls = [expand_pcg_state(l, static_env_params) for l in ls] + new_ls = [] + rng = jax.random.PRNGKey(0) + for sp, l in zip(should_permute, ls): + rng, _rng = jax.random.split(rng) + if sp: + l = permute_pcg_state(_rng, l, static_env_params) + new_ls.append(l) + return stack_list_of_pytrees(new_ls) + + +def evaluate_rnn( # from jaxued + rng: chex.PRNGKey, + env: UnderspecifiedEnv, + env_params: EnvParams, + train_state: TrainState, + init_hstate: chex.ArrayTree, + init_obs: Observation, + init_env_state: EnvState, + max_episode_length: int, + keep_states=True, + return_trajectories=False, +) -> Tuple[chex.Array, chex.Array, chex.Array]: + """This runs the RNN on the environment, given an initial state and observation, and returns (states, rewards, episode_lengths) + + Args: + rng (chex.PRNGKey): + env (UnderspecifiedEnv): + env_params (EnvParams): + train_state (TrainState): + init_hstate (chex.ArrayTree): Shape (num_levels, ) + init_obs (Observation): Shape (num_levels, ) + init_env_state (EnvState): Shape (num_levels, ) + max_episode_length (int): + + Returns: + Tuple[chex.Array, chex.Array, chex.Array]: (States, rewards, episode lengths) ((NUM_STEPS, NUM_LEVELS), (NUM_STEPS, NUM_LEVELS), (NUM_LEVELS,) + """ + num_levels = jax.tree_util.tree_flatten(init_obs)[0][0].shape[0] + + def step(carry, _): + rng, hstate, obs, state, done, mask, episode_length = carry + rng, rng_action, rng_step = jax.random.split(rng, 3) + + x = jax.tree.map(lambda x: x[None, ...], (obs, done)) + hstate, pi, _ = train_state.apply_fn(train_state.params, hstate, x) + action = pi.sample(seed=rng_action).squeeze(0) + + obs, next_state, reward, done, info = jax.vmap(env.step, in_axes=(0, 0, 0, None))( + jax.random.split(rng_step, num_levels), state, action, env_params + ) + + next_mask = mask & ~done + episode_length += mask + + if keep_states: + return (rng, hstate, obs, next_state, done, next_mask, episode_length), (state, reward, done, info) + else: + return (rng, hstate, obs, next_state, done, next_mask, episode_length), (None, reward, done, info) + + (_, _, _, _, _, _, episode_lengths), (states, rewards, dones, infos) = jax.lax.scan( + step, + ( + rng, + init_hstate, + init_obs, + init_env_state, + jnp.zeros(num_levels, dtype=bool), + jnp.ones(num_levels, dtype=bool), + jnp.zeros(num_levels, dtype=jnp.int32), + ), + None, + length=max_episode_length, + ) + done_idx = jnp.argmax(dones, axis=0) + + to_return = (states, rewards, done_idx, episode_lengths, infos) + if return_trajectories: + return to_return, (dones, rewards) + return to_return + + +def general_eval( + rng: chex.PRNGKey, + eval_env: UnderspecifiedEnv, + env_params: EnvParams, + train_state: TrainState, + levels: EnvState, + num_eval_steps: int, + num_levels: int, + keep_states=True, + return_trajectories=False, +): + """ + This evaluates the current policy on the set of evaluation levels + It returns (states, cum_rewards, episode_lengths), with shapes (num_steps, num_eval_levels, ...), (num_eval_levels,), (num_eval_levels,) + """ + rng, rng_reset = jax.random.split(rng) + init_obs, init_env_state = jax.vmap(eval_env.reset_to_level, (0, 0, None))( + jax.random.split(rng_reset, num_levels), levels, env_params + ) + init_hstate = ScannedRNN.initialize_carry(num_levels) + (states, rewards, done_idx, episode_lengths, infos), (dones, reward) = evaluate_rnn( + rng, + eval_env, + env_params, + train_state, + init_hstate, + init_obs, + init_env_state, + num_eval_steps, + keep_states=keep_states, + return_trajectories=True, + ) + mask = jnp.arange(num_eval_steps)[..., None] < episode_lengths + cum_rewards = (rewards * mask).sum(axis=0) + to_return = ( + states, + cum_rewards, + done_idx, + episode_lengths, + infos, + ) # (num_steps, num_eval_levels, ...), (num_eval_levels,), (num_eval_levels,) + + if return_trajectories: + return to_return, (dones, reward) + return to_return + + +def compute_gae( + gamma: float, + lambd: float, + last_value: chex.Array, + values: chex.Array, + rewards: chex.Array, + dones: chex.Array, +) -> Tuple[chex.Array, chex.Array]: + """This takes in arrays of shape (NUM_STEPS, NUM_ENVS) and returns the advantages and targets. + + Args: + gamma (float): + lambd (float): + last_value (chex.Array): Shape (NUM_ENVS) + values (chex.Array): Shape (NUM_STEPS, NUM_ENVS) + rewards (chex.Array): Shape (NUM_STEPS, NUM_ENVS) + dones (chex.Array): Shape (NUM_STEPS, NUM_ENVS) + + Returns: + Tuple[chex.Array, chex.Array]: advantages, targets; each of shape (NUM_STEPS, NUM_ENVS) + """ + + def compute_gae_at_timestep(carry, x): + gae, next_value = carry + value, reward, done = x + delta = reward + gamma * next_value * (1 - done) - value + gae = delta + gamma * lambd * (1 - done) * gae + return (gae, value), gae + + _, advantages = jax.lax.scan( + compute_gae_at_timestep, + (jnp.zeros_like(last_value), last_value), + (values, rewards, dones), + reverse=True, + unroll=16, + ) + return advantages, advantages + values + + +def sample_trajectories_rnn( + rng: chex.PRNGKey, + env: UnderspecifiedEnv, + env_params: EnvParams, + train_state: TrainState, + init_hstate: chex.ArrayTree, + init_obs: Observation, + init_env_state: EnvState, + num_envs: int, + max_episode_length: int, + return_states: bool = False, +) -> Tuple[ + Tuple[chex.PRNGKey, TrainState, chex.ArrayTree, Observation, EnvState, chex.Array], + Tuple[Observation, chex.Array, chex.Array, chex.Array, chex.Array, chex.Array, dict], +]: + """This samples trajectories from the environment using the agent specified by the `train_state`. + + Args: + + rng (chex.PRNGKey): Singleton + env (UnderspecifiedEnv): + env_params (EnvParams): + train_state (TrainState): Singleton + init_hstate (chex.ArrayTree): This is the init RNN hidden state, has to have shape (NUM_ENVS, ...) + init_obs (Observation): The initial observation, shape (NUM_ENVS, ...) + init_env_state (EnvState): The initial env state (NUM_ENVS, ...) + num_envs (int): The number of envs that are vmapped over. + max_episode_length (int): The maximum episode length, i.e., the number of steps to do the rollouts for. + + Returns: + Tuple[Tuple[chex.PRNGKey, TrainState, chex.ArrayTree, Observation, EnvState, chex.Array], Tuple[Observation, chex.Array, chex.Array, chex.Array, chex.Array, chex.Array, dict]]: (rng, train_state, hstate, last_obs, last_env_state, last_value), traj, where traj is (obs, action, reward, done, log_prob, value, info). The first element in the tuple consists of arrays that have shapes (NUM_ENVS, ...) (except `rng` and and `train_state` which are singleton). The second element in the tuple is of shape (NUM_STEPS, NUM_ENVS, ...), and it contains the trajectory. + """ + + def sample_step(carry, _): + rng, train_state, hstate, obs, env_state, last_done = carry + prev_state = env_state + rng, rng_action, rng_step = jax.random.split(rng, 3) + + x = jax.tree.map(lambda x: x[None, ...], (obs, last_done)) + hstate, pi, value = train_state.apply_fn(train_state.params, hstate, x) + action = pi.sample(seed=rng_action) + log_prob = pi.log_prob(action) + value, action, log_prob = jax.tree.map(lambda x: x.squeeze(0), (value, action, log_prob)) + + next_obs, env_state, reward, done, info = jax.vmap(env.step, in_axes=(0, 0, 0, None))( + jax.random.split(rng_step, num_envs), env_state, action, env_params + ) + + carry = (rng, train_state, hstate, next_obs, env_state, done) + step = (obs, action, reward, done, log_prob, value, info) + if return_states: + step += (prev_state,) + return carry, step + + (rng, train_state, hstate, last_obs, last_env_state, last_done), traj = jax.lax.scan( + sample_step, + ( + rng, + train_state, + init_hstate, + init_obs, + init_env_state, + jnp.zeros(num_envs, dtype=bool), + ), + None, + length=max_episode_length, + ) + + x = jax.tree.map(lambda x: x[None, ...], (last_obs, last_done)) + _, _, last_value = train_state.apply_fn(train_state.params, hstate, x) + + my_obs = traj[0] + rew = traj[2] + + return (rng, train_state, hstate, last_obs, last_env_state, last_value.squeeze(0)), traj + + +def update_actor_critic_rnn( + rng: chex.PRNGKey, + train_state: TrainState, + init_hstate: chex.ArrayTree, + batch: chex.ArrayTree, + num_envs: int, + n_steps: int, + n_minibatch: int, + n_epochs: int, + clip_eps: float, + entropy_coeff: float, + critic_coeff: float, + update_grad: bool = True, +) -> Tuple[Tuple[chex.PRNGKey, TrainState], chex.ArrayTree]: + """This function takes in a rollout, and PPO hyperparameters, and updates the train state. + + Args: + rng (chex.PRNGKey): + train_state (TrainState): + init_hstate (chex.ArrayTree): + batch (chex.ArrayTree): obs, actions, dones, log_probs, values, targets, advantages + num_envs (int): + n_steps (int): + n_minibatch (int): + n_epochs (int): + clip_eps (float): + entropy_coeff (float): + critic_coeff (float): + update_grad (bool, optional): If False, the train state does not actually get updated. Defaults to True. + + Returns: + Tuple[Tuple[chex.PRNGKey, TrainState], chex.ArrayTree]: It returns a new rng, the updated train_state, and the losses. The losses have structure (loss, (l_vf, l_clip, entropy)) + """ + obs, actions, dones, log_probs, values, targets, advantages = batch + last_dones = jnp.roll(dones, 1, axis=0).at[0].set(False) + batch = obs, actions, last_dones, log_probs, values, targets, advantages + + def update_epoch(carry, _): + def update_minibatch(train_state, minibatch): + init_hstate, obs, actions, last_dones, log_probs, values, targets, advantages = minibatch + + def loss_fn(params): + _, pi, values_pred = train_state.apply_fn(params, init_hstate, (obs, last_dones)) + log_probs_pred = pi.log_prob(actions) + entropy = pi.entropy().mean() + + ratio = jnp.exp(log_probs_pred - log_probs) + A = (advantages - advantages.mean()) / (advantages.std() + 1e-8) + l_clip = (-jnp.minimum(ratio * A, jnp.clip(ratio, 1 - clip_eps, 1 + clip_eps) * A)).mean() + + values_pred_clipped = values + (values_pred - values).clip(-clip_eps, clip_eps) + l_vf = 0.5 * jnp.maximum((values_pred - targets) ** 2, (values_pred_clipped - targets) ** 2).mean() + + loss = l_clip + critic_coeff * l_vf - entropy_coeff * entropy + + return loss, (l_vf, l_clip, entropy) + + grad_fn = jax.value_and_grad(loss_fn, has_aux=True) + loss, grads = grad_fn(train_state.params) + if update_grad: + train_state = train_state.apply_gradients(grads=grads) + grad_norm = jnp.linalg.norm( + jnp.concatenate(jax.tree_util.tree_map(lambda x: x.flatten(), jax.tree_util.tree_flatten(grads)[0])) + ) + return train_state, (loss, grad_norm) + + rng, train_state = carry + rng, rng_perm = jax.random.split(rng) + permutation = jax.random.permutation(rng_perm, num_envs) + minibatches = ( + jax.tree.map( + lambda x: jnp.take(x, permutation, axis=0).reshape(n_minibatch, -1, *x.shape[1:]), + init_hstate, + ), + *jax.tree.map( + lambda x: jnp.take(x, permutation, axis=1) + .reshape(x.shape[0], n_minibatch, -1, *x.shape[2:]) + .swapaxes(0, 1), + batch, + ), + ) + train_state, (losses, grads) = jax.lax.scan(update_minibatch, train_state, minibatches) + return (rng, train_state), (losses, grads) + + return jax.lax.scan(update_epoch, (rng, train_state), None, n_epochs) + + +@partial(jax.jit, static_argnums=(0, 2, 8, 9)) +def sample_trajectories_and_learn( + env: UnderspecifiedEnv, + env_params: EnvParams, + config: dict, + rng: chex.PRNGKey, + train_state: TrainState, + init_hstate: chex.Array, + init_obs: Observation, + init_env_state: EnvState, + update_grad: bool = True, + return_states: bool = False, +) -> Tuple[ + Tuple[chex.PRNGKey, TrainState, Observation, EnvState], + Tuple[ + Observation, + chex.Array, + chex.Array, + chex.Array, + chex.Array, + chex.Array, + dict, + chex.Array, + chex.Array, + chex.ArrayTree, + chex.Array, + ], +]: + """This function loops the following: + - rollout for config['num_steps'] + - learn / update policy + + And it loops it for config['outer_rollout_steps']. + What is returns is a new carry (rng, train_state, init_obs, init_env_state), and concatenated rollouts. The shape of the rollouts are config['num_steps'] * config['outer_rollout_steps']. In other words, the trajectories returned by this function are the same as if we ran rollouts for config['num_steps'] * config['outer_rollout_steps'] steps, but the agent does perform PPO updates in between. + + Args: + env (UnderspecifiedEnv): + env_params (EnvParams): + config (dict): + rng (chex.PRNGKey): + train_state (TrainState): + init_obs (Observation): + init_env_state (EnvState): + update_grad (bool, optional): Defaults to True. + + Returns: + Tuple[Tuple[chex.PRNGKey, TrainState, Observation, EnvState], Tuple[Observation, chex.Array, chex.Array, chex.Array, chex.Array, chex.Array, dict, chex.Array, chex.Array, chex.ArrayTree, chex.Array]]: This returns a tuple: + ( + (rng, train_state, init_obs, init_env_state), + (obs, actions, rewards, dones, log_probs, values, info, advantages, targets, losses, grads) + ) + """ + + def single_step(carry, _): + rng, train_state, init_hstate, init_obs, init_env_state = carry + ((rng, train_state, new_hstate, last_obs, last_env_state, last_value), traj,) = sample_trajectories_rnn( + rng, + env, + env_params, + train_state, + init_hstate, + init_obs, + init_env_state, + config["num_train_envs"], + config["num_steps"], + return_states=return_states, + ) + if return_states: + states = traj[-1] + traj = traj[:-1] + + (obs, actions, rewards, dones, log_probs, values, info) = traj + advantages, targets = compute_gae(config["gamma"], config["gae_lambda"], last_value, values, rewards, dones) + + # Update the policy using trajectories collected from replay levels + (rng, train_state), (losses, grads) = update_actor_critic_rnn( + rng, + train_state, + init_hstate, + (obs, actions, dones, log_probs, values, targets, advantages), + config["num_train_envs"], + config["num_steps"], + config["num_minibatches"], + config["update_epochs"], + config["clip_eps"], + config["ent_coef"], + config["vf_coef"], + update_grad=update_grad, + ) + new_carry = (rng, train_state, new_hstate, last_obs, last_env_state) + step = (obs, actions, rewards, dones, log_probs, values, info, advantages, targets, losses, grads) + if return_states: + step += (states,) + return new_carry, step + + carry = (rng, train_state, init_hstate, init_obs, init_env_state) + new_carry, all_rollouts = jax.lax.scan(single_step, carry, None, length=config["outer_rollout_steps"]) + + all_rollouts = jax.tree_util.tree_map(lambda x: jnp.concatenate(x, axis=0), all_rollouts) + return new_carry, all_rollouts + + +def no_op_rollout( + env: UnderspecifiedEnv, + env_params: EnvParams, + rng: chex.PRNGKey, + init_obs: Observation, + init_env_state: EnvState, + num_envs: int, + max_episode_length: int, + do_random=False, +): + + noop = jnp.array(env.action_type.noop_action()) + zero_action = jnp.repeat(noop[None, ...], num_envs, axis=0) + SHAPE = zero_action.shape + + def sample_step(carry, _): + rng, obs, env_state, last_done = carry + rng, rng_step, _rng = jax.random.split(rng, 3) + if do_random: + action = jax.vmap(env.action_space(env_params).sample)(jax.random.split(_rng, num_envs)) + else: + action = zero_action + + next_obs, env_state, reward, done, info = jax.vmap(env.step, in_axes=(0, 0, 0, None))( + jax.random.split(rng_step, num_envs), env_state, action, env_params + ) + + carry = (rng, next_obs, env_state, done) + return carry, (obs, action, reward, done, info) + + (rng, last_obs, last_env_state, last_done), traj = jax.lax.scan( + sample_step, + ( + rng, + init_obs, + init_env_state, + jnp.zeros(num_envs, dtype=bool), + ), + None, + length=max_episode_length, + ) + + info = traj[-1] + dones = traj[-2] + + returns_per_env = (info["returned_episode_returns"] * dones).sum(axis=0) / jnp.maximum(1, dones.sum(axis=0)) + lens_per_env = (info["returned_episode_lengths"] * dones).sum(axis=0) / jnp.maximum(1, dones.sum(axis=0)) + success_per_env = (info["returned_episode_solved"] * dones).sum(axis=0) / jnp.maximum(1, dones.sum(axis=0)) + return returns_per_env, lens_per_env, success_per_env + + +def no_op_and_random_rollout( + env: UnderspecifiedEnv, + env_params: EnvParams, + rng: chex.PRNGKey, + init_obs: Observation, + init_env_state: EnvState, + num_envs: int, + max_episode_length: int, +): + returns_noop, lens_noop, success_noop = no_op_rollout( + env, env_params, rng, init_obs, init_env_state, num_envs, max_episode_length, do_random=False + ) + returns_random, lens_random, success_random = no_op_rollout( + env, env_params, rng, init_obs, init_env_state, num_envs, max_episode_length, do_random=True + ) + return returns_noop, lens_noop, success_noop, returns_random, lens_random, success_random diff --git a/Kinetix/kinetix/util/saving.py b/Kinetix/kinetix/util/saving.py new file mode 100644 index 0000000000000000000000000000000000000000..e3291a58da66fab041eb3b0e47fd7e7420830010 --- /dev/null +++ b/Kinetix/kinetix/util/saving.py @@ -0,0 +1,540 @@ +import json +import os +import pickle +from typing import Any, Dict, Union + +import flax.serialization +import flax.serialization +import flax.serialization +import flax.serialization +import flax.serialization +import flax.serialization +import flax.serialization +import jax +import jax.numpy as jnp +import flax +import wandb +from jax2d.engine import ( + calculate_collision_matrix, + get_empty_collision_manifolds, + get_pairwise_interaction_indices, + recalculate_mass_and_inertia, +) +from jax2d.sim_state import RigidBody, SimState +from kinetix.environment.env_state import EnvState, StaticEnvParams, EnvParams + +from flax.traverse_util import flatten_dict, unflatten_dict + +from safetensors.flax import save_file, load_file + +from kinetix.pcg.pcg import env_state_to_pcg_state +from kinetix.pcg.pcg_state import PCGState +import bz2 + + +def check_if_mass_and_inertia_are_correct(state: SimState, env_params: EnvParams, static_params): + new = recalculate_mass_and_inertia(state, static_params, state.polygon_densities, state.circle_densities) + + def _check(a, b, shape, name): + a = jnp.where(shape.active, a, jnp.zeros_like(a)) + b = jnp.where(shape.active, b, jnp.zeros_like(b)) + + if not jnp.allclose(a, b): + idxs = jnp.arange(len(shape.active))[(a != b) & shape.active] + new_one = a[idxs] + old_one = b[idxs] + raise ValueError( + f"Error: {name} is not the same after loading. Indexes {idxs} are incorrect. New = {new_one} | Before = {old_one}" + ) + + _check(new.polygon.inverse_mass, state.polygon.inverse_mass, state.polygon, "Polygon inverse mass") + _check(new.circle.inverse_mass, state.circle.inverse_mass, state.circle, "Circle inverse mass") + _check(new.polygon.inverse_inertia, state.polygon.inverse_inertia, state.polygon, "Polygon inverse inertia") + _check(new.circle.inverse_inertia, state.circle.inverse_inertia, state.circle, "Circle inverse inertia") + return True + + +def save_pickle(filename, state): + with open(filename, "wb") as f: + pickle.dump(state, f) + + +def load_pcg_state_pickle(filename): + with open(filename, "rb") as f: + return pickle.load(f) + + +def expand_env_state(env_state: EnvState, static_env_params: StaticEnvParams, ignore_collision_matrix=False): + + num_rects = len(env_state.polygon.position) + num_circles = len(env_state.circle.position) + num_joints = len(env_state.joint.a_index) + num_thrusters = len(env_state.thruster.object_index) + + def _add_dummy(num_to_add, obj): + return jax.tree_map( + lambda current: jnp.concatenate( + [current, jnp.zeros((num_to_add, *current.shape[1:]), dtype=current.dtype)], axis=0 + ), + obj, + ) + + does_need_to_change = False + added_rects = 0 + + if ( + num_rects > static_env_params.num_polygons + or num_circles > static_env_params.num_circles + or num_joints > static_env_params.num_joints + ): + raise Exception( + f"The current static_env_params is too small to accommodate the loaded env_state (needs num_rects={num_rects}, num_circles={num_circles}, num_joints={num_joints} but current is {static_env_params.num_polygons}, {static_env_params.num_circles}, {static_env_params.num_joints})." + ) + + if num_rects < static_env_params.num_polygons: + added_rects = static_env_params.num_polygons - num_rects + does_need_to_change = True + env_state = env_state.replace( + polygon=_add_dummy(added_rects, env_state.polygon), + polygon_shape_roles=_add_dummy(added_rects, env_state.polygon_shape_roles), + polygon_highlighted=_add_dummy(added_rects, env_state.polygon_highlighted), + polygon_densities=_add_dummy(added_rects, env_state.polygon_densities), + ) + + if num_circles < static_env_params.num_circles: + does_need_to_change = True + n_to_add = static_env_params.num_circles - num_circles + env_state = env_state.replace( + circle=_add_dummy(n_to_add, env_state.circle), + circle_shape_roles=_add_dummy(n_to_add, env_state.circle_shape_roles), + circle_highlighted=_add_dummy(n_to_add, env_state.circle_highlighted), + circle_densities=_add_dummy(n_to_add, env_state.circle_densities), + ) + + if num_joints < static_env_params.num_joints: + does_need_to_change = True + n_to_add = static_env_params.num_joints - num_joints + env_state = env_state.replace( + joint=_add_dummy(n_to_add, env_state.joint), + motor_bindings=_add_dummy(n_to_add, env_state.motor_bindings), + motor_auto=_add_dummy(n_to_add, env_state.motor_auto), + ) + + if num_thrusters < static_env_params.num_thrusters: + does_need_to_change = True + n_to_add = static_env_params.num_thrusters - num_thrusters + env_state = env_state.replace( + thruster=_add_dummy(n_to_add, env_state.thruster), + thruster_bindings=_add_dummy(n_to_add, env_state.thruster_bindings), + ) + + # This fixes the indices + def _modify_index(old_indices): + return jnp.where(old_indices >= num_rects, old_indices + added_rects, old_indices) + + if added_rects > 0: + env_state = env_state.replace( + joint=env_state.joint.replace( + a_index=_modify_index(env_state.joint.a_index), + b_index=_modify_index(env_state.joint.b_index), + ), + thruster=env_state.thruster.replace( + object_index=_modify_index(env_state.thruster.object_index), + ), + ) + # Double check the collision manifolds are fine + if does_need_to_change or 1: + # print("Loading but changing the shapes to match the current static params.") + acc_rr_manifolds, acc_cr_manifolds, acc_cc_manifolds = get_empty_collision_manifolds(static_env_params) + env_state = env_state.replace( + collision_matrix=( + env_state.collision_matrix + if ignore_collision_matrix + else calculate_collision_matrix(static_env_params, env_state.joint) + ), + acc_rr_manifolds=acc_rr_manifolds, + acc_cr_manifolds=acc_cr_manifolds, + acc_cc_manifolds=acc_cc_manifolds, + ) + return env_state + + +def expand_pcg_state(pcg_state: PCGState, static_env_params): + new_pcg_state = pcg_state.replace( + env_state=expand_env_state(pcg_state.env_state, static_env_params), + env_state_max=expand_env_state(pcg_state.env_state_max, static_env_params), + env_state_pcg_mask=expand_env_state( + pcg_state.env_state_pcg_mask, static_env_params, ignore_collision_matrix=True + ), + ) + new_pcg_state = new_pcg_state.replace( + env_state_pcg_mask=new_pcg_state.env_state_pcg_mask.replace( + collision_matrix=jnp.zeros_like(new_pcg_state.env_state.collision_matrix, dtype=bool), + ) + ) + num_shapes = new_pcg_state.env_state.polygon.active.shape[0] + new_pcg_state.env_state.circle.active.shape[0] + + return new_pcg_state.replace( + tied_together=jnp.zeros((num_shapes, num_shapes), dtype=bool) + .at[ + : pcg_state.tied_together.shape[0], + : pcg_state.tied_together.shape[1], + ] + .set(pcg_state.tied_together) + ) + + +def load_world_state_pickle(filename, params=None, static_env_params=None): + static_params = static_env_params or StaticEnvParams() + with open(filename, "rb") as f: + state: SimState = pickle.load(f) + state = jax.tree.map(lambda x: jnp.nan_to_num(x), state) + # Check if the mass and inertia are reasonable. + check_if_mass_and_inertia_are_correct(state, params or EnvParams(), static_params) + + # Now check if the shapes are correct + return expand_env_state(state, static_params) + + +def stack_list_of_pytrees(list_of_pytrees): + v = jax.tree_map(lambda x: jnp.expand_dims(x, 0), list_of_pytrees[0]) + for l in list_of_pytrees[1:]: + v = jax.tree_map(lambda x, y: jnp.concatenate([x, jnp.expand_dims(y, 0)], axis=0), v, l) + return v + +def get_pcg_state_from_json(json_filename) -> PCGState: + env_state, _, _ = load_from_json_file(json_filename) + return env_state_to_pcg_state(env_state) + +def my_load_file(filename): + data = bz2.BZ2File(filename, "rb") + data = pickle.load(data) + return data + + +def my_save_file(obj, filename): + with bz2.BZ2File(filename, "w") as f: + pickle.dump(obj, f) + + +def save_params(params: Dict, filename: Union[str, os.PathLike]) -> None: + my_save_file(params, filename) + + +def load_params(filename: Union[str, os.PathLike], legacy=False) -> Dict: + if legacy: + filename = filename.replace("full_model.pbz2", "model.safetensors") + filename = filename.replace(".pbz2", ".safetensors") + return unflatten_dict(load_file(filename), sep=",") + return my_load_file(filename) + + +def load_params_from_wandb_artifact_path(checkpoint_name, legacy=False): + api = wandb.Api() + name = api.artifact(checkpoint_name).download() + network_params = load_params(name + "/model.pbz2", legacy=legacy) + return network_params + + +def save_params_to_wandb(params, timesteps, config): + if config["checkpoint_human_numbers"]: + timesteps = str(round(timesteps / 1e9)) + "B" + + run_name = config["run_name"] + "-" + str(config["random_hash"]) + "-" + str(timesteps) + save_dir = os.path.join(config["save_path"], run_name) + os.makedirs(save_dir, exist_ok=True) + save_params(params, f"{save_dir}/model.pbz2") + + # upload this to wandb as an artifact + artifact = wandb.Artifact(f"{run_name}-checkpoint", type="checkpoint") + artifact.add_file(f"{save_dir}/model.pbz2") + artifact.save() + print(f"Parameters of model saved in {save_dir}/model.pbz2") + + +def load_params_wandb_artifact_path_full_model(checkpoint_name): + api = wandb.Api() + name = api.artifact(checkpoint_name).download() + all_dict = load_params(name + "/full_model.pbz2") + return all_dict["params"] + + +def load_train_state_from_wandb_artifact_path(train_state, checkpoint_name, load_only_params=False, legacy=False): + api = wandb.Api() + name = api.artifact(checkpoint_name).download() + all_dict = load_params(name + "/full_model.pbz2", legacy=legacy) + if legacy: + return train_state.replace(params=all_dict) + train_state = train_state.replace(params=all_dict["params"]) + if not load_only_params: + train_state = train_state.replace( + # step=all_dict["step"], + opt_state=all_dict["opt_state"] + ) + return train_state + + +def save_params_to_wandb(params, timesteps, config): + return save_dict_to_wandb(params, timesteps, config, "params") + + +def save_dict_to_wandb(dict, timesteps, config, name): + timesteps = str(round(timesteps / 1e9)) + "B" + run_name = config["run_name"] + "-" + str(config["random_hash"]) + "-" + str(timesteps) + save_dir = os.path.join(config["save_path"], run_name) + os.makedirs(save_dir, exist_ok=True) + save_params(dict, f"{save_dir}/{name}.pbz2") + + # upload this to wandb as an artifact + artifact = wandb.Artifact(f"{run_name}-checkpoint", type="checkpoint") + artifact.add_file(f"{save_dir}/{name}.pbz2") + artifact.save() + print(f"Parameters of model saved in {save_dir}/{name}.pbz2") + + +def save_model_to_wandb(train_state, timesteps, config, is_final=False): + dict_to_use = {"step": train_state.step, "params": train_state.params, "opt_state": train_state.opt_state} + step = int(train_state.step) + if config["economical_saving"]: + if step in [2048, 10240, 40960, 81920] or is_final: + save_dict_to_wandb(dict_to_use, timesteps, config, "full_model") + else: + print("Not saving model because step is", step) + else: + save_dict_to_wandb(dict_to_use, timesteps, config, "full_model") + + +def import_env_state_from_json(json_file: dict[str, Any]) -> tuple[EnvState, StaticEnvParams, EnvParams]: + from kinetix.environment.env import create_empty_env + + def normalise(k, v): + if k == "screen_dim": + return v + if type(v) == dict and "0" in v: + return jnp.array([normalise(k, v[str(i)]) for i in range(len(v))]) + return v + + env_state = json_file["env_state"] + env_params = json_file["env_params"] + static_env_params = json_file["static_env_params"] + env_params_target = EnvParams() + static_env_params_target = StaticEnvParams() + new_env_params = flax.serialization.from_state_dict( + env_params_target, {k: normalise(k, v) for k, v in env_params.items()} + ) + norm_static = {k: normalise(k, v) for k, v in static_env_params.items()} + # norm_static["screen_dim"] = tuple(static_env_params_target.screen_dim) + norm_static["downscale"] = static_env_params_target.downscale + # print( + # static_env_params_target, + # ) + new_static_env_params = flax.serialization.from_state_dict(static_env_params_target, norm_static) + new_static_env_params = new_static_env_params.replace(screen_dim=static_env_params_target.screen_dim) + + env_state_target = create_empty_env(new_static_env_params) + + def astype(x, all): + return jnp.astype(x, all.dtype) + + def _load_rigidbody(env_state_target, i, is_poly): + + to_load_from: dict[str, Any] = env_state["circle" if not is_poly else "polygon"][i] + role = to_load_from.pop("role") + density = to_load_from.pop("density") + if "highlighted" in to_load_from: + _ = to_load_from.pop("highlighted") + new_obj = flax.serialization.from_state_dict( + jax.tree.map(lambda x: x[i], env_state_target.circle if not is_poly else env_state_target.polygon), + {k: normalise(k, v) for k, v in to_load_from.items()}, + ) + + if is_poly: + env_state_target = env_state_target.replace( + polygon_shape_roles=env_state_target.polygon_shape_roles.at[i].set(role), + polygon_densities=env_state_target.polygon_densities.at[i].set(density), + polygon=jax.tree.map( + lambda all, new: all.at[i].set(astype(new, all)), env_state_target.polygon, new_obj + ), + ) + else: + env_state_target = env_state_target.replace( + circle_shape_roles=env_state_target.circle_shape_roles.at[i].set(role), + circle_densities=env_state_target.circle_densities.at[i].set(density), + circle=jax.tree.map(lambda all, new: all.at[i].set(astype(new, all)), env_state_target.circle, new_obj), + ) + return env_state_target + + # Now load the env state: + for i in range(new_static_env_params.num_circles): + env_state_target = _load_rigidbody(env_state_target, i, False) + for i in range(new_static_env_params.num_polygons): + env_state_target = _load_rigidbody(env_state_target, i, True) + + for i in range(new_static_env_params.num_joints): + to_load_from = env_state["joint"][i] + motor_binding = to_load_from.pop("motor_binding") + new_obj = flax.serialization.from_state_dict( + jax.tree.map(lambda x: x[i], env_state_target.joint), {k: normalise(k, v) for k, v in to_load_from.items()} + ) + env_state_target = env_state_target.replace( + joint=jax.tree.map(lambda all, new: all.at[i].set(astype(new, all)), env_state_target.joint, new_obj), + motor_bindings=env_state_target.motor_bindings.at[i].set(motor_binding), + ) + + for i in range(new_static_env_params.num_thrusters): + to_load_from = env_state["thruster"][i] + thruster_binding = to_load_from.pop("thruster_binding") + new_obj = flax.serialization.from_state_dict( + jax.tree.map(lambda x: x[i], env_state_target.thruster), + {k: normalise(k, v) for k, v in to_load_from.items()}, + ) + + env_state_target = env_state_target.replace( + thruster=jax.tree.map(lambda all, new: all.at[i].set(astype(new, all)), env_state_target.thruster, new_obj), + thruster_bindings=env_state_target.thruster_bindings.at[i].set(thruster_binding), + ) + + env_state_target = env_state_target.replace( + collision_matrix=flax.serialization.from_state_dict( + env_state_target.collision_matrix, normalise("collision_matrix", env_state["collision_matrix"]) + ) + ) + + for i in range(env_state_target.acc_rr_manifolds.active.shape[0]): + a = flax.serialization.from_state_dict( + jax.tree.map(lambda x: x[i], env_state_target.acc_rr_manifolds), + {k: normalise(k, v) for k, v in env_state["acc_rr_manifolds"][i].items()}, + ) + b = flax.serialization.from_state_dict( + jax.tree.map(lambda x: x[i], env_state_target.acc_rr_manifolds), + {k: normalise(k, v) for k, v in env_state["acc_rr_manifolds"][i + 1].items()}, + ) + env_state_target = env_state_target.replace( + acc_rr_manifolds=jax.tree.map( + lambda all, new: all.at[i].set(astype(new, all)), env_state_target.acc_rr_manifolds, a + ), + ) + env_state_target.replace( + acc_rr_manifolds=jax.tree.map( + lambda all, new: all.at[i + 1].set(astype(new, all)), env_state_target.acc_rr_manifolds, b + ) + ) + for i in range(env_state_target.acc_cr_manifolds.active.shape[0]): + a = flax.serialization.from_state_dict( + jax.tree.map(lambda x: x[i], env_state_target.acc_cr_manifolds), + {k: normalise(k, v) for k, v in env_state["acc_cr_manifolds"][i].items()}, + ) + env_state_target = env_state_target.replace( + acc_cr_manifolds=jax.tree.map( + lambda all, new: all.at[i].set(astype(new, all)), env_state_target.acc_cr_manifolds, a + ), + ) + for i in range(env_state_target.acc_cc_manifolds.active.shape[0]): + a = flax.serialization.from_state_dict( + jax.tree.map(lambda x: x[i], env_state_target.acc_cc_manifolds), + {k: normalise(k, v) for k, v in env_state["acc_cc_manifolds"][i].items()}, + ) + env_state_target = env_state_target.replace( + acc_cc_manifolds=jax.tree.map( + lambda all, new: all.at[i].set(astype(new, all)), env_state_target.acc_cc_manifolds, a + ), + ) + + env_state_target = env_state_target.replace( + collision_matrix=calculate_collision_matrix(new_static_env_params, env_state_target.joint) + ) + + return ( + env_state_target, + new_static_env_params, + new_env_params.replace(max_timesteps=env_params_target.max_timesteps), + ) + + +def export_env_state_to_json( + filename: str, env_state: EnvState, static_env_params: StaticEnvParams, env_params: EnvParams +): + json_to_save = { + "polygon": [], + "circle": [], + "joint": [], + "thruster": [], + "collision_matrix": flax.serialization.to_state_dict(env_state.collision_matrix.tolist()), + "acc_rr_manifolds": [], + "acc_cr_manifolds": [], + "acc_cc_manifolds": [], + "gravity": flax.serialization.to_state_dict(env_state.gravity.tolist()), + } + + def _rigidbody_to_json(index: int, is_poly): + main_arr = env_state.polygon if is_poly else env_state.circle + c = jax.tree.map(lambda x: x[index].tolist(), main_arr) + roles = env_state.polygon_shape_roles if is_poly else env_state.circle_shape_roles + densities = env_state.polygon_densities if is_poly else env_state.circle_densities + highlighted = env_state.polygon_highlighted if is_poly else env_state.circle_highlighted + + d = flax.serialization.to_state_dict(c) + d["role"] = roles[index].tolist() + d["density"] = densities[index].tolist() + d["highlighted"] = highlighted[index].tolist() + return d + + def _joint_to_json(i): + joint = jax.tree.map(lambda x: x[i].tolist(), env_state.joint) + d = flax.serialization.to_state_dict(joint) + d["motor_binding"] = env_state.motor_bindings[i].tolist() + return d + + def _thruster_to_json(i): + thruster = jax.tree.map(lambda x: x[i].tolist(), env_state.thruster) + d = flax.serialization.to_state_dict(thruster) + d["thruster_binding"] = env_state.thruster_bindings[i].tolist() + return d + + for i in range(static_env_params.num_circles): + json_to_save["circle"].append(_rigidbody_to_json(i, False)) + for i in range(static_env_params.num_polygons): + json_to_save["polygon"].append(_rigidbody_to_json(i, True)) + for i in range(static_env_params.num_joints): + json_to_save["joint"].append(_joint_to_json(i)) + for i in range(static_env_params.num_thrusters): + json_to_save["thruster"].append(_thruster_to_json(i)) + + ncc, ncr, nrr, circle_circle_pairs, circle_rect_pairs, rect_rect_pairs = get_pairwise_interaction_indices( + static_env_params + ) + for i in range(nrr): + a = jax.tree.map(lambda x: x[i, 0].tolist(), env_state.acc_rr_manifolds) + b = jax.tree.map(lambda x: x[i, 1].tolist(), env_state.acc_rr_manifolds) + json_to_save["acc_rr_manifolds"].append(flax.serialization.to_state_dict(a)) + json_to_save["acc_rr_manifolds"].append(flax.serialization.to_state_dict(b)) + for i in range(ncr): + a = jax.tree.map(lambda x: x[i].tolist(), env_state.acc_cr_manifolds) + json_to_save["acc_cr_manifolds"].append(flax.serialization.to_state_dict(a)) + + for i in range(ncc): + a = jax.tree.map(lambda x: x[i].tolist(), env_state.acc_cc_manifolds) + json_to_save["acc_cc_manifolds"].append(flax.serialization.to_state_dict(a)) + + to_save = { + "env_state": json_to_save, + "env_params": flax.serialization.to_state_dict( + jax.tree.map(lambda x: x.tolist() if type(x) == jnp.ndarray else x, env_params) + ), + "static_env_params": flax.serialization.to_state_dict( + jax.tree.map(lambda x: x.tolist() if type(x) == jnp.ndarray else x, static_env_params) + ), + } + with open(filename, "w+") as f: + json.dump(to_save, f) + + return to_save + + +def load_from_json_file(filename): + with open(filename, "r") as f: + return import_env_state_from_json(json.load(f)) + + +if __name__ == "__main__": + pass diff --git a/Kinetix/kinetix/util/timing.py b/Kinetix/kinetix/util/timing.py new file mode 100644 index 0000000000000000000000000000000000000000..a9edc82c2b27b6ca4200e716fcf3b1d33a72b8c5 --- /dev/null +++ b/Kinetix/kinetix/util/timing.py @@ -0,0 +1,15 @@ +from timeit import default_timer as tmr + +counter = 0 + + +def time_function(f, name): + global counter + t = "\t" * counter + # print(f"{t}Starting... {name}") + ss = tmr() + counter += 1 + a = f() + counter -= 1 + print(f"{t}{name} took {tmr() - ss} seconds") + return a diff --git a/Kinetix/pyproject.toml b/Kinetix/pyproject.toml new file mode 100644 index 0000000000000000000000000000000000000000..221fd6cf1c7d4c3615a7d844a6a0533dea01ec63 --- /dev/null +++ b/Kinetix/pyproject.toml @@ -0,0 +1,51 @@ +[build-system] +requires = ["setuptools>=64.0"] +build-backend = "setuptools.build_meta" + +[project] +name = "kinetix" +version = "1.0.0" +authors = [ + { name="Michael Matthews", email="michael.matthews@eng.ox.ac.uk" }, + { name="Michael Beukman", email="michael.beukman@eng.ox.ac.uk" }, +] +description = "An open-ended space of 2D physics-based RL environments" +readme = "README.md" +requires-python = ">=3.10" +classifiers = [ + "Programming Language :: Python :: 3", + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", +] +dependencies = [ + "jax[cuda12_pip]==0.4.26", + "distrax", + "optax", + "flax", + "numpy==1.26.4", + "black", + "pre-commit", + "argparse", + "wandb", + "orbax-checkpoint", + "pygame", + "gymnax", + "chex", + "matplotlib", + "imageio", + "seaborn", + "hydra-core", + "safetensors", + "pygame_widgets", + "jaxgl", + "jax2d", + "jaxued @ git+https://github.com/DramaCow/jaxued.git@main" +] + + +[project.urls] +Homepage = "https://github.com/FLAIROx/Kinetix" +Issues = "https://github.com/FLAIROx/Kinetix/Issues" + +[tool.setuptools.packages.find] +include=["kinetix*"] \ No newline at end of file diff --git a/Kinetix/worlds/l/car_launch.json b/Kinetix/worlds/l/car_launch.json new file mode 100644 index 0000000000000000000000000000000000000000..c575abf893bb56164f8958d91e4ed16b3dea3957 --- /dev/null +++ b/Kinetix/worlds/l/car_launch.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.1749999523162842, "1": 2.5774998664855957}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.6200000047683716, "1": 0.1325000524520874}, "1": {"0": 0.6200000047683716, "1": -0.1325000524520874}, "2": {"0": -0.6200000047683716, "1": -0.1325000524520874}, "3": {"0": -0.6200000047683716, "1": 0.1325000524520874}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.3749988079071045, "1": 2.1775002479553223}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.6200000047683716, "1": 0.1325000524520874}, "1": {"0": 0.6200000047683716, "1": -0.1325000524520874}, "2": {"0": -0.6200000047683716, "1": -0.1325000524520874}, "3": {"0": -0.6200000047683716, "1": 0.1325000524520874}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.0824999809265137, "1": 2.8199996948242188}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 12.232426643371582, "inverse_inertia": 459.3979187011719, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.27250000834465027, "1": 0.07499992847442627}, "1": {"0": 0.27250000834465027, "1": -0.07499992847442627}, "2": {"0": -0.27250000834465027, "1": -0.07499992847442627}, "3": {"0": -0.27250000834465027, "1": 0.07499992847442627}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.0674998760223389, "1": 3.0874996185302734}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 15.748034477233887, "inverse_inertia": 457.3209533691406, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.04999999701976776, "1": 0.31749996542930603}, "1": {"0": 0.04999999701976776, "1": -0.31749996542930603}, "2": {"0": -0.04999999701976776, "1": -0.31749996542930603}, "3": {"0": -0.04999999701976776, "1": 0.31749996542930603}}, "radius": 0.10000000149011612, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 3.879999876022339, "1": 2.552499771118164}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 12.610349655151367, "inverse_inertia": 942.0965576171875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.12999987602233887, "1": 0.15250003337860107}, "1": {"0": 0.12999987602233887, "1": -0.15250003337860107}, "2": {"0": -0.12999987602233887, "1": -0.15250003337860107}, "3": {"0": -0.12999987602233887, "1": 0.15250003337860107}}, "radius": 0.10000000149011612, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.6985920071601868, "1": 4.285279273986816}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 7.860458850860596, "inverse_inertia": 184.29478454589844, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.09200851619243622, "1": 0.3456719219684601}, "1": {"0": 0.09200851619243622, "1": -0.3456719219684601}, "2": {"0": -0.09200851619243622, "1": -0.3456719219684601}, "3": {"0": -0.09200851619243622, "1": 0.3456719219684601}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.8848819732666016, "1": 2.6214592456817627}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.015984535217285, "inverse_inertia": 35.087406158447266, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.1737148016691208, "1": 0.47717100381851196}, "1": {"0": 0.1737148016691208, "1": -0.47717100381851196}, "2": {"0": -0.1737148016691208, "1": -0.47717100381851196}, "3": {"0": -0.1737148016691208, "1": 0.47717100381851196}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 1.3199999332427979, "1": 2.804999828338623}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 15.875794410705566, "inverse_inertia": 3167.239013671875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.14159806072711945, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.8199998140335083, "1": 2.804999828338623}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 15.875794410705566, "inverse_inertia": 3167.239013671875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.14159806072711945, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.554999828338623, "1": 0.7899999618530273}, "rotation": 0.5017720460891724, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 13.930404663085938, "inverse_inertia": 2438.58203125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.15116219222545624, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 6, "b_index": 13, "a_relative_pos": {"0": -0.26250016689300537, "1": -0.014999866485595703}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 0.8199998140335083, "1": 2.804999828338623}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 2.049999952316284, "motor_power": 2.049999952316284, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 6, "b_index": 12, "a_relative_pos": {"0": 0.23749995231628418, "1": -0.014999866485595703}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 1.3199999332427979, "1": 2.804999828338623}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 2.049999952316284, "motor_power": 2.0999999046325684, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 6, "b_index": 7, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.015000104904174805, "1": -0.2674999237060547}, "global_position": {"0": 1.0824999809265137, "1": 2.8199996948242188}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 2.200000047683716, "motor_power": 2.299999952316284, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 1}, {"a_index": 4, "b_index": 5, "a_relative_pos": {"0": 0.47749996185302734, "1": -0.22499996423721313}, "b_relative_pos": {"0": -0.41750001907348633, "1": 0.02249997854232788}, "global_position": {"0": 1.6524999141693115, "1": 2.3524999618530273}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 1}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 9, "relative_position": {"0": -0.0902118906378746, "1": 0.040656208992004395}, "rotation": 3.370077133178711, "power": 0.21093875169754028, "global_position": {"0": 0.608380138874054, "1": 4.325935363769531}, "active": false, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": false, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": false, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": false, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": false, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/car_swing_around.json b/Kinetix/worlds/l/car_swing_around.json new file mode 100644 index 0000000000000000000000000000000000000000..f652c42c5ef28d2e1422ceb746d01f6c3a36c3af --- /dev/null +++ b/Kinetix/worlds/l/car_swing_around.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.6421067714691162, "1": 2.397500991821289}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7070910930633545, "1": 0.05749902501702309}, "1": {"0": 0.7070910930633545, "1": -0.05749902501702309}, "2": {"0": -0.7070910930633545, "1": -0.05749902501702309}, "3": {"0": -0.7070910930633545, "1": 0.05749902501702309}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.2421066761016846, "1": 3.059999942779541}, "rotation": 1.570796251296997, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.149089813232422, "inverse_inertia": 36.6544303894043, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7070848941802979, "1": 0.057498637586832047}, "1": {"0": 0.7070848941802979, "1": -0.057498637586832047}, "2": {"0": -0.7070848941802979, "1": -0.057498637586832047}, "3": {"0": -0.7070848941802979, "1": 0.057498637586832047}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.8874998092651367, "1": 3.8849992752075195}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 26.66666603088379, "inverse_inertia": 2124.48095703125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1875, "1": 0.05000000074505806}, "1": {"0": 0.1875, "1": -0.05000000074505806}, "2": {"0": -0.1875, "1": -0.05000000074505806}, "3": {"0": -0.1875, "1": 0.05000000074505806}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.6421067714691162, "1": 3.059999942779541}, "rotation": 1.570796251296997, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.1491618156433105, "inverse_inertia": 36.65534210205078, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7070802450180054, "1": 0.057498347014188766}, "1": {"0": 0.7070802450180054, "1": -0.057498347014188766}, "2": {"0": -0.7070802450180054, "1": -0.057498347014188766}, "3": {"0": -0.7070802450180054, "1": 0.057498347014188766}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.742106556892395, "1": 3.6974997520446777}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.707088053226471, "1": 0.057498835027217865}, "1": {"0": 0.707088053226471, "1": -0.057498835027217865}, "2": {"0": -0.707088053226471, "1": -0.057498835027217865}, "3": {"0": -0.707088053226471, "1": 0.057498835027217865}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.9524999856948853, "1": 3.7074999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 14.814812660217285, "inverse_inertia": 381.8044738769531, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.33750003576278687, "1": 0.05000000074505806}, "1": {"0": 0.33750003576278687, "1": -0.05000000074505806}, "2": {"0": -0.33750003576278687, "1": -0.05000000074505806}, "3": {"0": -0.33750003576278687, "1": 0.05000000074505806}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.742106556892395, "1": 1.0975010395050049}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7070859670639038, "1": 0.05749870464205742}, "1": {"0": 0.7070859670639038, "1": -0.05749870464205742}, "2": {"0": -0.7070859670639038, "1": -0.05749870464205742}, "3": {"0": -0.7070859670639038, "1": 0.05749870464205742}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.409999966621399, "1": 3.0399999618530273}, "rotation": 1.5707963705062866, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7070778608322144, "1": 0.05749819800257683}, "1": {"0": 0.7070778608322144, "1": -0.05749819800257683}, "2": {"0": -0.7070778608322144, "1": -0.05749819800257683}, "3": {"0": -0.7070778608322144, "1": 0.05749819800257683}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.7249997854232788, "1": 3.8849992752075195}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.03575897216797, "inverse_inertia": 3231.38623046875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.14089004695415497, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.0249998569488525, "1": 3.8849992752075195}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.03575897216797, "inverse_inertia": 3231.38623046875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.14089004695415497, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.17000001668930054, "1": 1.3199999332427979}, "rotation": 0.5017720460891724, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 10.121148109436035, "inverse_inertia": 1287.269287109375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.17734141647815704, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 4.234999656677246, "1": 3.119999885559082}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 8.985466957092285, "inverse_inertia": 1014.5914306640625, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.1882152110338211, "role": 2, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 6, "b_index": 13, "a_relative_pos": {"0": 0.13750004768371582, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 1.0249998569488525, "1": 3.8849992752075195}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 2.0, "motor_power": 2.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 6, "b_index": 12, "a_relative_pos": {"0": -0.1625000238418579, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 0.7249997854232788, "1": 3.8849992752075195}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 2.0, "motor_power": 2.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 4, "b_index": 7, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": -0.662498950958252, "1": -5.001728098363856e-08}, "global_position": {"0": 1.6421067714691162, "1": 2.397500991821289}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 1.570796251296997, "motor_binding": 1}, {"a_index": 4, "b_index": 5, "a_relative_pos": {"0": 0.6028931140899658, "1": -0.0025010108947753906}, "b_relative_pos": {"0": -0.6649999618530273, "1": -0.0028934981673955917}, "global_position": {"0": 2.244999885559082, "1": 2.3949999809265137}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 1.570796251296997, "motor_binding": 0}, {"a_index": 5, "b_index": 9, "a_relative_pos": {"0": 0.6399998664855957, "1": 0.0021064765751361847}, "b_relative_pos": {"0": 0.28750014305114746, "1": -0.007500171661376953}, "global_position": {"0": 2.2400002479553223, "1": 3.6999998092651367}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": -1.570796251296997, "motor_binding": 0}, {"a_index": 7, "b_index": 9, "a_relative_pos": {"0": 0.6549999713897705, "1": -0.0028930408880114555}, "b_relative_pos": {"0": -0.3075000047683716, "1": 0.0074999332427978516}, "global_position": {"0": 1.6449998617172241, "1": 3.7149999141693115}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": -1.570796251296997, "motor_binding": 0}], "thruster": [{"object_index": 8, "relative_position": {"0": -0.44499996304512024, "1": -0.35000014305114746}, "rotation": 1.5406547784805298, "power": 0.7124999761581421, "global_position": {"0": 0.2971065938472748, "1": 3.3474996089935303}, "active": false, "thruster_binding": 0}, {"object_index": 8, "relative_position": {"0": 0.46000003814697266, "1": -0.35500001907348633}, "rotation": 1.5333606004714966, "power": 0.7124999761581421, "global_position": {"0": 1.2021065950393677, "1": 3.3424997329711914}, "active": false, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": false, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": false, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": false, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": false, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/chain_lander.json b/Kinetix/worlds/l/chain_lander.json new file mode 100644 index 0000000000000000000000000000000000000000..6e6a9ed25bfab860a80739a80c1c108863f966a2 --- /dev/null +++ b/Kinetix/worlds/l/chain_lander.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.7899999618530273, "1": 0.4949999749660492}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 4.4091715812683105, "inverse_inertia": 43.709266662597656, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.5399999618530273, "1": 0.10499998927116394}, "1": {"0": 0.5399999618530273, "1": -0.10499998927116394}, "2": {"0": -0.5399999618530273, "1": -0.10499998927116394}, "3": {"0": -0.5399999618530273, "1": 0.10499998927116394}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.7799999713897705, "1": 2.009999990463257}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.66666603088379, "inverse_inertia": 756.4296264648438, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.06000000238418579, "1": 0.25}, "1": {"0": 0.06000000238418579, "1": -0.25}, "2": {"0": -0.06000000238418579, "1": -0.25}, "3": {"0": -0.06000000238418579, "1": 0.25}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.7799999713897705, "1": 1.6099998950958252}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.66666603088379, "inverse_inertia": 756.4296264648438, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.06000000238418579, "1": 0.25}, "1": {"0": 0.06000000238418579, "1": -0.25}, "2": {"0": -0.06000000238418579, "1": -0.25}, "3": {"0": -0.06000000238418579, "1": 0.25}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.7799999713897705, "1": 1.2099997997283936}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.66666603088379, "inverse_inertia": 756.4296264648438, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.06000000238418579, "1": 0.25}, "1": {"0": 0.06000000238418579, "1": -0.25}, "2": {"0": -0.06000000238418579, "1": -0.25}, "3": {"0": -0.06000000238418579, "1": 0.25}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.7999999523162842, "1": 2.509999990463257}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 1.4035087823867798, "inverse_inertia": 11.496317863464355, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.4749999940395355, "1": 0.375}, "1": {"0": 0.4749999940395355, "1": -0.375}, "2": {"0": -0.4749999940395355, "1": -0.375}, "3": {"0": -0.4749999940395355, "1": 0.375}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.089998245239258, "1": 0.4949999749660492}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 4.4091715812683105, "inverse_inertia": 43.709266662597656, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.5399999618530273, "1": 0.10499998927116394}, "1": {"0": 0.5399999618530273, "1": -0.10499998927116394}, "2": {"0": -0.5399999618530273, "1": -0.10499998927116394}, "3": {"0": -0.5399999618530273, "1": 0.10499998927116394}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 1.8848819732666016, "1": 2.6214592456817627}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.015984535217285, "inverse_inertia": 35.087406158447266, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.1737148016691208, "1": 0.47717100381851196}, "1": {"0": 0.1737148016691208, "1": -0.47717100381851196}, "2": {"0": -0.1737148016691208, "1": -0.47717100381851196}, "3": {"0": -0.1737148016691208, "1": 0.47717100381851196}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.7899999618530273, "1": 0.9899999499320984}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 8.321826934814453, "inverse_inertia": 870.2564086914062, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.19557607173919678, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.8199998140335083, "1": 2.804999828338623}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 15.875794410705566, "inverse_inertia": 3167.239013671875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.14159806072711945, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.554999828338623, "1": 0.7899999618530273}, "rotation": 0.5017720460891724, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 13.930404663085938, "inverse_inertia": 2438.58203125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.15116219222545624, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 7, "b_index": 12, "a_relative_pos": {"0": 0.009999990463256836, "1": -0.21999984979629517}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 0.7899999618530273, "1": 0.9899999499320984}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 6, "b_index": 7, "a_relative_pos": {"0": 0.009999990463256836, "1": -0.18999993801116943}, "b_relative_pos": {"0": 0.009999990463256836, "1": 0.2100001573562622}, "global_position": {"0": 0.7899999618530273, "1": 1.4199999570846558}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 5, "b_index": 6, "a_relative_pos": {"0": 0.0, "1": -0.1700000762939453}, "b_relative_pos": {"0": 0.0, "1": 0.23000001907348633}, "global_position": {"0": 0.7799999713897705, "1": 1.8399999141693115}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 1}, {"a_index": 5, "b_index": 8, "a_relative_pos": {"0": 0.0, "1": 0.18000006675720215}, "b_relative_pos": {"0": -0.019999980926513672, "1": -0.31999993324279785}, "global_position": {"0": 0.7799999713897705, "1": 2.190000057220459}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 8, "relative_position": {"0": -0.44499996304512024, "1": -0.35000014305114746}, "rotation": 1.5406547784805298, "power": 0.7124999761581421, "global_position": {"0": 0.35499998927116394, "1": 2.1599998474121094}, "active": true, "thruster_binding": 0}, {"object_index": 8, "relative_position": {"0": 0.46000003814697266, "1": -0.35500001907348633}, "rotation": 1.5333606004714966, "power": 0.7124999761581421, "global_position": {"0": 1.2599999904632568, "1": 2.1549999713897705}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": false, "7": false, "8": false, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": false, "7": false, "8": false, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": false, "7": false, "8": false, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": false, "7": false, "8": false, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": false, "7": false, "8": false, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/chain_thrust.json b/Kinetix/worlds/l/chain_thrust.json new file mode 100644 index 0000000000000000000000000000000000000000..d12a67ee778279f728b7cadc493e9f5bf5efaa26 --- /dev/null +++ b/Kinetix/worlds/l/chain_thrust.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.5300003290176392, "1": 2.697500228881836}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 14.383320808410645, "inverse_inertia": 608.9254760742188, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.25749993324279785, "1": 0.06749999523162842}, "1": {"0": 0.25749993324279785, "1": -0.06749999523162842}, "2": {"0": -0.25749993324279785, "1": -0.06749999523162842}, "3": {"0": -0.25749993324279785, "1": 0.06749999523162842}}, "radius": 0.10000000149011612, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 1.9300004243850708, "1": 2.697500228881836}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 14.383320808410645, "inverse_inertia": 608.9254760742188, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.25749993324279785, "1": 0.06749999523162842}, "1": {"0": 0.25749993324279785, "1": -0.06749999523162842}, "2": {"0": -0.25749993324279785, "1": -0.06749999523162842}, "3": {"0": -0.25749993324279785, "1": 0.06749999523162842}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.330000162124634, "1": 2.697500228881836}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 14.383320808410645, "inverse_inertia": 608.9254760742188, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.25749993324279785, "1": 0.06749999523162842}, "1": {"0": 0.25749993324279785, "1": -0.06749999523162842}, "2": {"0": -0.25749993324279785, "1": -0.06749999523162842}, "3": {"0": -0.25749993324279785, "1": 0.06749999523162842}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.7299997806549072, "1": 2.697500228881836}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 14.383320808410645, "inverse_inertia": 608.9254760742188, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.25749993324279785, "1": 0.06749999523162842}, "1": {"0": 0.25749993324279785, "1": -0.06749999523162842}, "2": {"0": -0.25749993324279785, "1": -0.06749999523162842}, "3": {"0": -0.25749993324279785, "1": 0.06749999523162842}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.1299993991851807, "1": 2.697500228881836}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 14.383320808410645, "inverse_inertia": 608.9254760742188, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.25749993324279785, "1": 0.06749999523162842}, "1": {"0": 0.25749993324279785, "1": -0.06749999523162842}, "2": {"0": -0.25749993324279785, "1": -0.06749999523162842}, "3": {"0": -0.25749993324279785, "1": 0.06749999523162842}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.529999256134033, "1": 2.697500228881836}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 14.383320808410645, "inverse_inertia": 608.9254760742188, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.25749993324279785, "1": 0.06749999523162842}, "1": {"0": 0.25749993324279785, "1": -0.06749999523162842}, "2": {"0": -0.25749993324279785, "1": -0.06749999523162842}, "3": {"0": -0.25749993324279785, "1": 0.06749999523162842}}, "radius": 0.10000000149011612, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 2.4774999618530273, "1": 2.2824997901916504}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.12249994277954102, "1": 0.23249995708465576}, "1": {"0": 0.12249994277954102, "1": -0.23249995708465576}, "2": {"0": -0.12249994277954102, "1": -0.23249995708465576}, "3": {"0": -0.12249994277954102, "1": 0.23249995708465576}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.17966890335083, "1": 1.945974588394165}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 5.895017147064209, "inverse_inertia": 190.0760040283203, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.25621160864830017, "1": 0.16552217304706573}, "1": {"0": 0.25621160864830017, "1": -0.16552217304706573}, "2": {"0": -0.25621160864830017, "1": -0.16552217304706573}, "3": {"0": -0.25621160864830017, "1": 0.16552217304706573}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 2.4700000286102295, "1": 2.509999990463257}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.12539935111999512, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5299999713897705, "1": 3.154999256134033}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.2920616865158081, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 1.3499876260757446, "1": 3.4217281341552734}, "rotation": 4.991886615753174, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 13.508587837219238, "inverse_inertia": 2293.135986328125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.10000000149011612, "1": 0.05000000074505806}, "1": {"0": 0.10000000149011612, "1": -0.05000000074505806}, "2": {"0": -0.10000000149011612, "1": -0.05000000074505806}, "3": {"0": -0.10000000149011612, "1": 0.05000000074505806}}, "radius": 0.1535041332244873, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 4.018556594848633, "1": 2.8474931716918945}, "rotation": 5.128097057342529, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.3141981065273285, "role": 1, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 5, "a_relative_pos": {"0": 0.17499995231628418, "1": -0.007500171661376953}, "b_relative_pos": {"0": -0.22499966621398926, "1": -0.007500171661376953}, "global_position": {"0": 1.7050002813339233, "1": 2.690000057220459}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 1}, {"a_index": 5, "b_index": 6, "a_relative_pos": {"0": 0.17500042915344238, "1": -0.002500295639038086}, "b_relative_pos": {"0": -0.22499918937683105, "1": -0.002500295639038086}, "global_position": {"0": 2.1050009727478027, "1": 2.694999933242798}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": -2.4832701683044434, "max_rotation": 0.13027115166187286, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 2}, {"a_index": 6, "b_index": 7, "a_relative_pos": {"0": 0.18500065803527832, "1": -0.007500171661376953}, "b_relative_pos": {"0": -0.21499896049499512, "1": -0.007500171661376953}, "global_position": {"0": 2.515000820159912, "1": 2.690000057220459}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 2}, {"a_index": 7, "b_index": 8, "a_relative_pos": {"0": 0.18000078201293945, "1": -0.002500295639038086}, "b_relative_pos": {"0": -0.21999883651733398, "1": -0.002500295639038086}, "global_position": {"0": 2.9100005626678467, "1": 2.694999933242798}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 3}, {"a_index": 8, "b_index": 9, "a_relative_pos": {"0": 0.1750011444091797, "1": -0.002500295639038086}, "b_relative_pos": {"0": -0.22499871253967285, "1": -0.002500295639038086}, "global_position": {"0": 3.3050005435943604, "1": 2.694999933242798}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 6, "b_index": 11, "a_relative_pos": {"0": -0.2833111882209778, "1": -0.14396227896213531}, "b_relative_pos": {"0": 0.2017212212085724, "1": -0.0778263658285141}, "global_position": {"0": 2.046689033508301, "1": 2.5535378456115723}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 2.5316052436828613, "motor_power": 1.6654388904571533, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 4, "relative_position": {"0": -0.22000038623809814, "1": 0.0}, "rotation": 3.1415927410125732, "power": 0.25, "global_position": {"0": 1.309999942779541, "1": 2.697500228881836}, "active": true, "thruster_binding": 0}, {"object_index": 9, "relative_position": {"0": 0.2350006103515625, "1": 0.0}, "rotation": 0.0, "power": 0.25, "global_position": {"0": 3.7649998664855957, "1": 2.697500228881836}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/gears.json b/Kinetix/worlds/l/gears.json new file mode 100644 index 0000000000000000000000000000000000000000..3fcf49a044fd23a71c8c437e34cfe2db84448949 --- /dev/null +++ b/Kinetix/worlds/l/gears.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 3.1700000762939453}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 7.474925518035889, "inverse_inertia": 95.32117462158203, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.06967740505933762, "1": 0.47999995946884155}, "1": {"0": 0.06967740505933762, "1": -0.47999995946884155}, "2": {"0": -0.06967740505933762, "1": -0.47999995946884155}, "3": {"0": -0.06967740505933762, "1": 0.47999995946884155}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 3.1700000762939453}, "rotation": 1.5707963705062866, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 7.964953899383545, "inverse_inertia": 108.2286605834961, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.06749999523162842, "1": 0.4650000333786011}, "1": {"0": 0.06749999523162842, "1": -0.4650000333786011}, "2": {"0": -0.06749999523162842, "1": -0.4650000333786011}, "3": {"0": -0.06749999523162842, "1": 0.4650000333786011}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 2.3700008392333984}, "rotation": 0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 7.964953899383545, "inverse_inertia": 108.2286605834961, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.06749999523162842, "1": 0.4650000333786011}, "1": {"0": 0.06749999523162842, "1": -0.4650000333786011}, "2": {"0": -0.06749999523162842, "1": -0.4650000333786011}, "3": {"0": -0.06749999523162842, "1": 0.4650000333786011}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 2.3700008392333984}, "rotation": -0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 7.964953899383545, "inverse_inertia": 108.2286605834961, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.06749999523162842, "1": 0.4650000333786011}, "1": {"0": 0.06749999523162842, "1": -0.4650000333786011}, "2": {"0": -0.06749999523162842, "1": -0.4650000333786011}, "3": {"0": -0.06749999523162842, "1": 0.4650000333786011}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5324995517730713, "1": 3.1500000953674316}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.11250001192092896, "1": 0.11499989032745361}, "1": {"0": 0.11250001192092896, "1": -0.11499989032745361}, "2": {"0": -0.11250001192092896, "1": -0.11499989032745361}, "3": {"0": -0.11250001192092896, "1": 0.11499989032745361}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5324995517730713, "1": 2.3700008392333984}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.11250001192092896, "1": 0.11499989032745361}, "1": {"0": 0.11250001192092896, "1": -0.11499989032745361}, "2": {"0": -0.11250001192092896, "1": -0.11499989032745361}, "3": {"0": -0.11250001192092896, "1": 0.11499989032745361}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.2328931093215942, "1": 0.38749998807907104}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071056365966797, "1": 0.09749985486268997}, "1": {"0": 0.7071056365966797, "1": -0.09749985486268997}, "2": {"0": -0.7071056365966797, "1": -0.09749985486268997}, "3": {"0": -0.7071056365966797, "1": 0.09749985486268997}}, "radius": 0.10000000149011612, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 3.3899989128112793, "1": 2.5299999713897705}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0549999475479126, "1": 0.5674999356269836}, "1": {"0": 0.0549999475479126, "1": -0.5674999356269836}, "2": {"0": -0.0549999475479126, "1": -0.5674999356269836}, "3": {"0": -0.0549999475479126, "1": 0.5674999356269836}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 2.5, "1": 3.169999837875366}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.2480616569519043, "inverse_inertia": 132.57398986816406, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.31304943561553955, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 2.3700006008148193}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.2480616569519043, "inverse_inertia": 132.57398986816406, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.31304943561553955, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 4.769999980926514}, "rotation": 2.337555408477783, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 9.908462524414062, "inverse_inertia": 1233.736572265625, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.10000000149011612}, "1": {"0": 0.05000000074505806, "1": -0.10000000149011612}, "2": {"0": -0.05000000074505806, "1": -0.10000000149011612}, "3": {"0": -0.05000000074505806, "1": 0.10000000149011612}}, "radius": 0.17923462390899658, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 1.9880660772323608, "1": 3.3269238471984863}, "rotation": 3.2386491298675537, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 10.456542015075684, "inverse_inertia": 1373.997802734375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.17447412014007568, "role": 1, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 12, "a_relative_pos": {"0": 0.0, "1": -2.384185791015625e-07}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": 3.169999837875366}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": true, "rotation": 0.0, "motor_binding": 0}, {"a_index": 4, "b_index": 5, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": 3.1700000762939453}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": true, "rotation": 1.5707963705062866, "motor_binding": 0}, {"a_index": 6, "b_index": 13, "a_relative_pos": {"0": -1.685874053691805e-07, "1": -1.6858739115832577e-07}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": 2.3700006008148193}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": true, "rotation": -0.7853981852531433, "motor_binding": 3}, {"a_index": 6, "b_index": 7, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": 2.3700008392333984}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": true, "rotation": -1.5707963705062866, "motor_binding": 0}, {"a_index": 8, "b_index": 12, "a_relative_pos": {"0": -0.03249955177307129, "1": -2.384185791015625e-07}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": 3.1499998569488525}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 3.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 9, "b_index": 13, "a_relative_pos": {"0": -0.03249955177307129, "1": -2.384185791015625e-07}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": 2.3700006008148193}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 15, "relative_position": {"0": 0.09165672212839127, "1": 0.0445665568113327}, "rotation": -2.689018964767456, "power": 0.24491387605667114, "global_position": {"0": 1.901159405708313, "1": 3.2736852169036865}, "active": false, "thruster_binding": 1}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": false, "8": true, "9": false, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": false, "8": true, "9": false, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": false, "8": true, "9": false, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": false, "8": true, "9": false, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/grasp_easy.json b/Kinetix/worlds/l/grasp_easy.json new file mode 100644 index 0000000000000000000000000000000000000000..7c5cc0e6584ae3f9500b5a226f1048866515f3a2 --- /dev/null +++ b/Kinetix/worlds/l/grasp_easy.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.6400001049041748, "1": 1.4278929233551025}, "rotation": 1.570796251296997, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.3671743869781494, "inverse_inertia": 19.767183303833008, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.10500001907348633, "1": 0.7071067690849304}, "1": {"0": 0.10500001907348633, "1": -0.7071067690849304}, "2": {"0": -0.10500001907348633, "1": -0.7071067690849304}, "3": {"0": -0.10500001907348633, "1": 0.7071067690849304}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.240000009536743, "1": 2.02789306640625}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.3671743869781494, "inverse_inertia": 19.767183303833008, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.10500001907348633, "1": 0.7071067690849304}, "1": {"0": 0.10500001907348633, "1": -0.7071067690849304}, "2": {"0": -0.10500001907348633, "1": -0.7071067690849304}, "3": {"0": -0.10500001907348633, "1": 0.7071067690849304}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.0199999809265137, "1": 1.6449999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.233766555786133, "inverse_inertia": 913.7201538085938, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.06999999284744263, "1": 0.2200000286102295}, "1": {"0": 0.06999999284744263, "1": -0.2200000286102295}, "2": {"0": -0.06999999284744263, "1": -0.2200000286102295}, "3": {"0": -0.06999999284744263, "1": 0.2200000286102295}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.0199999809265137, "1": 1.1449998617172241}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.233766555786133, "inverse_inertia": 913.7201538085938, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.06999999284744263, "1": 0.2200000286102295}, "1": {"0": 0.06999999284744263, "1": -0.2200000286102295}, "2": {"0": -0.06999999284744263, "1": -0.2200000286102295}, "3": {"0": -0.06999999284744263, "1": 0.2200000286102295}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.9199999570846558, "1": 1.9450000524520874}, "rotation": 0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.233766555786133, "inverse_inertia": 913.7201538085938, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.06999999284744263, "1": 0.2200000286102295}, "1": {"0": 0.06999999284744263, "1": -0.2200000286102295}, "2": {"0": -0.06999999284744263, "1": -0.2200000286102295}, "3": {"0": -0.06999999284744263, "1": 0.2200000286102295}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.9199999570846558, "1": 0.8449997901916504}, "rotation": -0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.233766555786133, "inverse_inertia": 913.7201538085938, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.06999999284744263, "1": 0.2200000286102295}, "1": {"0": 0.06999999284744263, "1": -0.2200000286102295}, "2": {"0": -0.06999999284744263, "1": -0.2200000286102295}, "3": {"0": -0.06999999284744263, "1": 0.2200000286102295}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.252500057220459, "1": 0.5249999761581421}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.35249996185302734, "1": 0.14000001549720764}, "1": {"0": 0.35249996185302734, "1": -0.14000001549720764}, "2": {"0": -0.35249996185302734, "1": -0.14000001549720764}, "3": {"0": -0.35249996185302734, "1": 0.14000001549720764}}, "radius": 0.10000000149011612, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.7375019788742065, "1": 1.697500228881836}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.006423950195312, "inverse_inertia": 1536.0047607421875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.12749981880187988, "1": 0.12250000238418579}, "1": {"0": 0.12749981880187988, "1": -0.12250000238418579}, "2": {"0": -0.12749981880187988, "1": -0.12250000238418579}, "3": {"0": -0.12749981880187988, "1": 0.12250000238418579}}, "radius": 0.10000000149011612, "role": 1, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 2.244999885559082, "1": 2.6700000762939453}, "rotation": 3.642449378967285, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.24459168314933777, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.4650000035762787, "1": 0.5649999976158142}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.20248454809188843, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 7, "b_index": 9, "a_relative_pos": {"0": 0.009999990463256836, "1": -0.17999988794326782}, "b_relative_pos": {"0": -0.0070711905136704445, "1": 0.1626347005367279}, "global_position": {"0": 1.0299999713897705, "1": 0.9649999737739563}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -1.1344640254974365, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": -0.7853981852531433, "motor_binding": 3}, {"a_index": 4, "b_index": 7, "a_relative_pos": {"0": -0.09289292991161346, "1": 0.6400001049041748}, "b_relative_pos": {"0": -0.019999980926513672, "1": 0.19000017642974854}, "global_position": {"0": 1.0, "1": 1.3350000381469727}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -1.0471975803375244, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": -1.570796251296997, "motor_binding": 3}, {"a_index": 4, "b_index": 6, "a_relative_pos": {"0": 0.0771070197224617, "1": 0.6500000953674316}, "b_relative_pos": {"0": -0.029999971389770508, "1": -0.13999998569488525}, "global_position": {"0": 0.9900000095367432, "1": 1.5049999952316284}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": 0.0, "max_rotation": 1.1344640254974365, "is_fixed_joint": false, "rotation": -1.570796251296997, "motor_binding": 0}, {"a_index": 6, "b_index": 8, "a_relative_pos": {"0": 0.004999995231628418, "1": 0.20000004768371582}, "b_relative_pos": {"0": 0.0035355340223759413, "1": -0.14495691657066345}, "global_position": {"0": 1.024999976158142, "1": 1.8450000286102295}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": 0.0, "max_rotation": 1.1344640254974365, "is_fixed_joint": false, "rotation": 0.7853981852531433, "motor_binding": 0}, {"a_index": 4, "b_index": 5, "a_relative_pos": {"0": 0.0021070679649710655, "1": -0.5799999237060547}, "b_relative_pos": {"0": -0.019999980926513672, "1": -0.5978931188583374}, "global_position": {"0": 2.2200000286102295, "1": 1.4299999475479126}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.5, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": -1.570796251296997, "motor_binding": 2}, {"a_index": 5, "b_index": 12, "a_relative_pos": {"0": 0.004999876022338867, "1": 0.6421070098876953}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.244999885559082, "1": 2.6700000762939453}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.5, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 3.642449378967285, "motor_binding": 1}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 5, "relative_position": {"0": -0.039592258632183075, "1": -0.13770951330661774}, "rotation": -1.850751280784607, "power": 0.26451635360717773, "global_position": {"0": 2.2004077434539795, "1": 1.8901835680007935}, "active": false, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/grasp_hard.json b/Kinetix/worlds/l/grasp_hard.json new file mode 100644 index 0000000000000000000000000000000000000000..c92df24d8963c41ae5f3c656e898ead6644acdb7 --- /dev/null +++ b/Kinetix/worlds/l/grasp_hard.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.6400001049041748, "1": 1.4278929233551025}, "rotation": 1.570796251296997, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.3671743869781494, "inverse_inertia": 19.767183303833008, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.10500001907348633, "1": 0.7071067690849304}, "1": {"0": 0.10500001907348633, "1": -0.7071067690849304}, "2": {"0": -0.10500001907348633, "1": -0.7071067690849304}, "3": {"0": -0.10500001907348633, "1": 0.7071067690849304}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.240000009536743, "1": 2.02789306640625}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.3671743869781494, "inverse_inertia": 19.767183303833008, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.10500001907348633, "1": 0.7071067690849304}, "1": {"0": 0.10500001907348633, "1": -0.7071067690849304}, "2": {"0": -0.10500001907348633, "1": -0.7071067690849304}, "3": {"0": -0.10500001907348633, "1": 0.7071067690849304}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.0199999809265137, "1": 1.6449999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.233766555786133, "inverse_inertia": 913.7201538085938, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.06999999284744263, "1": 0.2200000286102295}, "1": {"0": 0.06999999284744263, "1": -0.2200000286102295}, "2": {"0": -0.06999999284744263, "1": -0.2200000286102295}, "3": {"0": -0.06999999284744263, "1": 0.2200000286102295}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.0199999809265137, "1": 1.1449998617172241}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.233766555786133, "inverse_inertia": 913.7201538085938, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.06999999284744263, "1": 0.2200000286102295}, "1": {"0": 0.06999999284744263, "1": -0.2200000286102295}, "2": {"0": -0.06999999284744263, "1": -0.2200000286102295}, "3": {"0": -0.06999999284744263, "1": 0.2200000286102295}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.9199999570846558, "1": 1.9450000524520874}, "rotation": 0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.233766555786133, "inverse_inertia": 913.7201538085938, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.06999999284744263, "1": 0.2200000286102295}, "1": {"0": 0.06999999284744263, "1": -0.2200000286102295}, "2": {"0": -0.06999999284744263, "1": -0.2200000286102295}, "3": {"0": -0.06999999284744263, "1": 0.2200000286102295}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.9199999570846558, "1": 0.8449997901916504}, "rotation": -0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.233766555786133, "inverse_inertia": 913.7201538085938, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.06999999284744263, "1": 0.2200000286102295}, "1": {"0": 0.06999999284744263, "1": -0.2200000286102295}, "2": {"0": -0.06999999284744263, "1": -0.2200000286102295}, "3": {"0": -0.06999999284744263, "1": 0.2200000286102295}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.252500057220459, "1": 0.5249999761581421}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.35249996185302734, "1": 0.14000001549720764}, "1": {"0": 0.35249996185302734, "1": -0.14000001549720764}, "2": {"0": -0.35249996185302734, "1": -0.14000001549720764}, "3": {"0": -0.35249996185302734, "1": 0.14000001549720764}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.237500190734863, "1": 0.7975000143051147}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.006423950195312, "inverse_inertia": 1536.0047607421875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.12749981880187988, "1": 0.12250000238418579}, "1": {"0": 0.12749981880187988, "1": -0.12250000238418579}, "2": {"0": -0.12749981880187988, "1": -0.12250000238418579}, "3": {"0": -0.12749981880187988, "1": 0.12250000238418579}}, "radius": 0.10000000149011612, "role": 1, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 2.244999885559082, "1": 2.6700000762939453}, "rotation": 3.642449378967285, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.24459168314933777, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.4650000035762787, "1": 0.5649999976158142}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.20248454809188843, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 7, "b_index": 9, "a_relative_pos": {"0": 0.009999990463256836, "1": -0.17999988794326782}, "b_relative_pos": {"0": -0.0070711905136704445, "1": 0.1626347005367279}, "global_position": {"0": 1.0299999713897705, "1": 0.9649999737739563}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -1.1344640254974365, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": -0.7853981852531433, "motor_binding": 3}, {"a_index": 4, "b_index": 7, "a_relative_pos": {"0": -0.09289292991161346, "1": 0.6400001049041748}, "b_relative_pos": {"0": -0.019999980926513672, "1": 0.19000017642974854}, "global_position": {"0": 1.0, "1": 1.3350000381469727}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -1.0471975803375244, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": -1.570796251296997, "motor_binding": 3}, {"a_index": 4, "b_index": 6, "a_relative_pos": {"0": 0.0771070197224617, "1": 0.6500000953674316}, "b_relative_pos": {"0": -0.029999971389770508, "1": -0.13999998569488525}, "global_position": {"0": 0.9900000095367432, "1": 1.5049999952316284}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": 0.0, "max_rotation": 1.1344640254974365, "is_fixed_joint": false, "rotation": -1.570796251296997, "motor_binding": 0}, {"a_index": 6, "b_index": 8, "a_relative_pos": {"0": 0.004999995231628418, "1": 0.20000004768371582}, "b_relative_pos": {"0": 0.0035355340223759413, "1": -0.14495691657066345}, "global_position": {"0": 1.024999976158142, "1": 1.8450000286102295}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": 0.0, "max_rotation": 1.1344640254974365, "is_fixed_joint": false, "rotation": 0.7853981852531433, "motor_binding": 0}, {"a_index": 4, "b_index": 5, "a_relative_pos": {"0": 0.0021070679649710655, "1": -0.5799999237060547}, "b_relative_pos": {"0": -0.019999980926513672, "1": -0.5978931188583374}, "global_position": {"0": 2.2200000286102295, "1": 1.4299999475479126}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.5, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": -1.570796251296997, "motor_binding": 2}, {"a_index": 5, "b_index": 12, "a_relative_pos": {"0": 0.004999876022338867, "1": 0.6421070098876953}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.244999885559082, "1": 2.6700000762939453}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.5, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 3.642449378967285, "motor_binding": 1}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 5, "relative_position": {"0": -0.039592258632183075, "1": -0.13770951330661774}, "rotation": -1.850751280784607, "power": 0.26451635360717773, "global_position": {"0": 2.2004077434539795, "1": 1.8901835680007935}, "active": false, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/h0_angrybirds.json b/Kinetix/worlds/l/h0_angrybirds.json new file mode 100644 index 0000000000000000000000000000000000000000..a9c0dff55ea163b73726f79f2268fb8250586990 --- /dev/null +++ b/Kinetix/worlds/l/h0_angrybirds.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.7999999523162842, "1": 1.0950000286102295}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 8.196721076965332, "inverse_inertia": 65.6437759399414, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.6100000143051147, "1": 0.05000000074505806}, "1": {"0": 0.6100000143051147, "1": -0.05000000074505806}, "2": {"0": -0.6100000143051147, "1": -0.05000000074505806}, "3": {"0": -0.6100000143051147, "1": 0.05000000074505806}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.4700000286102295, "1": 0.7724999785423279}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 26.14379119873047, "inverse_inertia": 527.0704345703125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.3824999928474426}, "1": {"0": 0.05000000074505806, "1": -0.3824999928474426}, "2": {"0": -0.05000000074505806, "1": -0.3824999928474426}, "3": {"0": -0.05000000074505806, "1": 0.3824999928474426}}, "radius": 0.0, "role": 0, "density": 0.5, "highlighted": false}, {"position": {"0": 2.969999313354492, "1": 0.7724999785423279}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 26.14379119873047, "inverse_inertia": 527.0704345703125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.3824999928474426}, "1": {"0": 0.05000000074505806, "1": -0.3824999928474426}, "2": {"0": -0.05000000074505806, "1": -0.3824999928474426}, "3": {"0": -0.05000000074505806, "1": 0.3824999928474426}}, "radius": 0.0, "role": 0, "density": 0.5, "highlighted": false}, {"position": {"0": 2.7274999618530273, "1": 1.2549998760223389}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 15.151510238647461, "inverse_inertia": 488.6268310546875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.30000007152557373, "1": 0.05500000715255737}, "1": {"0": 0.30000007152557373, "1": -0.05500000715255737}, "2": {"0": -0.30000007152557373, "1": -0.05500000715255737}, "3": {"0": -0.30000007152557373, "1": 0.05500000715255737}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}], "circle": [{"position": {"0": 1.3849999904632568, "1": 1.100000023841858}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.187416672706604, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.4949999749660492, "1": 1.3450000286102295}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 14.178596496582031, "inverse_inertia": 2526.25, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.1498333364725113, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.950000047683716, "1": 0.6499999761581421}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 11.317682266235352, "inverse_inertia": 1609.62548828125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.16770511865615845, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 12, "a_relative_pos": {"0": 0.5850000381469727, "1": 0.004999995231628418}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 1.3849999904632568, "1": 1.100000023841858}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": 0.0872664600610733, "max_rotation": 1.919862151145935, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 256.0, "1": 256.0}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 256.0, "1": 256.0}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 256.0, "1": 256.0}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 256.0, "1": 256.0}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 256.0, "1": 256.0}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 0.0, "1": 0.0}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 0.0, "1": 0.0}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/h10_morph_direction_2.json b/Kinetix/worlds/l/h10_morph_direction_2.json new file mode 100644 index 0000000000000000000000000000000000000000..8881af5e28b7198b5d8c79810abdc814e96d3e67 --- /dev/null +++ b/Kinetix/worlds/l/h10_morph_direction_2.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.507499933242798, "1": 1.0474998950958252}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.2825000286102295, "1": 0.6574999690055847}, "1": {"0": 0.2825000286102295, "1": -0.6574999690055847}, "2": {"0": -0.2825000286102295, "1": -0.6574999690055847}, "3": {"0": -0.2825000286102295, "1": 0.6574999690055847}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5174999237060547, "1": 1.8199999332427979}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.70250004529953, "1": 0.18000000715255737}, "1": {"0": 0.70250004529953, "1": -0.18000000715255737}, "2": {"0": -0.70250004529953, "1": -0.18000000715255737}, "3": {"0": -0.70250004529953, "1": 0.18000000715255737}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5850000381469727, "1": 2.4049999713897705}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 7.7399373054504395, "inverse_inertia": 357.227783203125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.16999995708465576, "1": 0.19000005722045898}, "1": {"0": 0.16999995708465576, "1": -0.19000005722045898}, "2": {"0": -0.16999995708465576, "1": -0.19000005722045898}, "3": {"0": -0.16999995708465576, "1": 0.19000005722045898}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.4625000953674316, "1": 1.097500205039978}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 11.544015884399414, "inverse_inertia": 792.2689208984375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1575000286102295, "1": 0.13749992847442627}, "1": {"0": 0.1575000286102295, "1": -0.13749992847442627}, "2": {"0": -0.1575000286102295, "1": -0.13749992847442627}, "3": {"0": -0.1575000286102295, "1": 0.13749992847442627}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}], "circle": [{"position": {"0": 0.30000001192092896, "1": 0.8849999904632568}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.8759195804595947, "inverse_inertia": 188.7814483642578, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.2865746021270752, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.30000001192092896, "1": 0.9850000143051147}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.8759195804595947, "inverse_inertia": 188.7814483642578, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.2865746021270752, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 2.549999952316284, "1": 1.1299999952316284}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.546218395233154, "inverse_inertia": 538.50634765625, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.22051078081130981, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 7, "b_index": 14, "a_relative_pos": {"0": 0.08749985694885254, "1": 0.03249979019165039}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.549999952316284, "1": 1.1299999952316284}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/h11_obstacle_avoidance.json b/Kinetix/worlds/l/h11_obstacle_avoidance.json new file mode 100644 index 0000000000000000000000000000000000000000..5641d3b9100f0f1fabad23a09a82c64e4f2053fc --- /dev/null +++ b/Kinetix/worlds/l/h11_obstacle_avoidance.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.8125, "1": 4.755000114440918}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.22249996662139893, "1": 0.17499995231628418}, "1": {"0": 0.22249996662139893, "1": -0.17499995231628418}, "2": {"0": -0.22249996662139893, "1": -0.17499995231628418}, "3": {"0": -0.22249996662139893, "1": 0.17499995231628418}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 2.25, "1": 3.7274999618530273}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.2175000011920929, "1": 0.22249996662139893}, "1": {"0": 0.2175000011920929, "1": -0.22249996662139893}, "2": {"0": -0.2175000011920929, "1": -0.22249996662139893}, "3": {"0": -0.2175000011920929, "1": 0.22249996662139893}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.46000000834465027, "1": 2.802500009536743}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.252500057220459, "1": 0.23749995231628418}, "1": {"0": 0.252500057220459, "1": -0.23749995231628418}, "2": {"0": -0.252500057220459, "1": -0.23749995231628418}, "3": {"0": -0.252500057220459, "1": 0.23749995231628418}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 2.6524999141693115, "1": 1.7200000286102295}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 21.052635192871094, "inverse_inertia": 1072.177001953125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.23749995231628418, "1": 0.05000000074505806}, "1": {"0": 0.23749995231628418, "1": -0.05000000074505806}, "2": {"0": -0.23749995231628418, "1": -0.05000000074505806}, "3": {"0": -0.23749995231628418, "1": 0.05000000074505806}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}], "circle": [{"position": {"0": 2.359999895095825, "1": 1.850000023841858}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.524245023727417, "inverse_inertia": 249.72500610351562, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.23759211599826813, "role": 1, "density": 1.600000023841858, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 12, "relative_position": {"0": 0.0, "1": -0.23759210109710693}, "rotation": 1.5707963705062866, "power": 0.10000000149011612, "global_position": {"0": 2.359999895095825, "1": 1.612407922744751}, "active": true, "thruster_binding": 0}, {"object_index": 12, "relative_position": {"0": 0.23759222030639648, "1": 0.0}, "rotation": 3.1415927410125732, "power": 0.10000000149011612, "global_position": {"0": 2.5975921154022217, "1": 1.850000023841858}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -1.600000023841858}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/h12_platformer_1.json b/Kinetix/worlds/l/h12_platformer_1.json new file mode 100644 index 0000000000000000000000000000000000000000..a6ef82c235d47ddb956dcbcbdb738160fc4ee5f2 --- /dev/null +++ b/Kinetix/worlds/l/h12_platformer_1.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.7200000286102295, "1": 0.8799997568130493}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.5999999642372131, "1": 0.17500001192092896}, "1": {"0": 0.5999999642372131, "1": -0.17500001192092896}, "2": {"0": -0.5999999642372131, "1": -0.17500001192092896}, "3": {"0": -0.5999999642372131, "1": 0.17500001192092896}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.1321067810058594, "1": 1.5549999475479126}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071065902709961, "1": 0.12999995052814484}, "1": {"0": 0.7071065902709961, "1": -0.12999995052814484}, "2": {"0": -0.7071065902709961, "1": -0.12999995052814484}, "3": {"0": -0.7071065902709961, "1": 0.12999995052814484}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.36000001430511475, "1": 1.399999976158142}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 5.040322780609131, "inverse_inertia": 304.70465087890625, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1550000011920929, "1": 0.1599999964237213}, "1": {"0": 0.1550000011920929, "1": -0.1599999964237213}, "2": {"0": -0.1550000011920929, "1": -0.1599999964237213}, "3": {"0": -0.1550000011920929, "1": 0.1599999964237213}}, "radius": 0.0, "role": 1, "density": 2.0, "highlighted": false}, {"position": {"0": 0.7321066856384277, "1": 2.0999999046325684}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.707097053527832, "1": 0.09999880939722061}, "1": {"0": 0.707097053527832, "1": -0.09999880939722061}, "2": {"0": -0.707097053527832, "1": -0.09999880939722061}, "3": {"0": -0.707097053527832, "1": 0.09999880939722061}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}], "circle": [{"position": {"0": 4.659999847412109, "1": 0.85999995470047}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.2577303946018219, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 3.115000009536743, "1": 2.939999580383301}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.6519201397895813, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 2.6100001335144043, "1": 1.1349999904632568}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.20500001311302185, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 6, "relative_position": {"0": 0.0, "1": -0.14000004529953003}, "rotation": 1.5707963705062866, "power": 0.09919999539852142, "global_position": {"0": 0.36000001430511475, "1": 1.2599999904632568}, "active": true, "thruster_binding": 0}, {"object_index": 6, "relative_position": {"0": -0.14000001549720764, "1": 0.0}, "rotation": 6.283185005187988, "power": 0.09919999539852142, "global_position": {"0": 0.2199999988079071, "1": 1.399999976158142}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -1.7999999523162842}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/h13_platformer_2.json b/Kinetix/worlds/l/h13_platformer_2.json new file mode 100644 index 0000000000000000000000000000000000000000..cd82c5f3adb0b780c49a8c3c59f1f419685d3ff9 --- /dev/null +++ b/Kinetix/worlds/l/h13_platformer_2.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.7200000286102295, "1": 0.8799997568130493}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.5999999642372131, "1": 0.17500001192092896}, "1": {"0": 0.5999999642372131, "1": -0.17500001192092896}, "2": {"0": -0.5999999642372131, "1": -0.17500001192092896}, "3": {"0": -0.5999999642372131, "1": 0.17500001192092896}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.1321067810058594, "1": 1.5549999475479126}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071065902709961, "1": 0.12999995052814484}, "1": {"0": 0.7071065902709961, "1": -0.12999995052814484}, "2": {"0": -0.7071065902709961, "1": -0.12999995052814484}, "3": {"0": -0.7071065902709961, "1": 0.12999995052814484}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.36000001430511475, "1": 1.399999976158142}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 5.040322780609131, "inverse_inertia": 304.70465087890625, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1550000011920929, "1": 0.1599999964237213}, "1": {"0": 0.1550000011920929, "1": -0.1599999964237213}, "2": {"0": -0.1550000011920929, "1": -0.1599999964237213}, "3": {"0": -0.1550000011920929, "1": 0.1599999964237213}}, "radius": 0.0, "role": 1, "density": 2.0, "highlighted": false}, {"position": {"0": 0.2199999988079071, "1": 2.0999999046325684}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7070906758308411, "1": 0.09999801218509674}, "1": {"0": 0.7070906758308411, "1": -0.09999801218509674}, "2": {"0": -0.7070906758308411, "1": -0.09999801218509674}, "3": {"0": -0.7070906758308411, "1": 0.09999801218509674}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}], "circle": [{"position": {"0": 4.659999847412109, "1": 0.85999995470047}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.2577303946018219, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 1.8799999952316284, "1": 2.939999580383301}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.6519201397895813, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 2.6100001335144043, "1": 1.1349999904632568}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.20500001311302185, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 3.8450000286102295, "1": 1.100000023841858}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.2385372370481491, "role": 3, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 6, "relative_position": {"0": 0.0, "1": -0.14000004529953003}, "rotation": 1.5707963705062866, "power": 0.09919999539852142, "global_position": {"0": 0.36000001430511475, "1": 1.2599999904632568}, "active": true, "thruster_binding": 0}, {"object_index": 6, "relative_position": {"0": -0.14000001549720764, "1": 0.0}, "rotation": 6.283185005187988, "power": 0.09919999539852142, "global_position": {"0": 0.2199999988079071, "1": 1.399999976158142}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -1.7999999523162842}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/h14_simple_thruster.json b/Kinetix/worlds/l/h14_simple_thruster.json new file mode 100644 index 0000000000000000000000000000000000000000..8bac57ff79ccf9701fc89e2edb2de07ecd801bc2 --- /dev/null +++ b/Kinetix/worlds/l/h14_simple_thruster.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.6924999952316284, "1": 2.9625000953674316}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 2.4668517112731934, "inverse_inertia": 19.739418029785156, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.5874999761581421, "1": 0.17250001430511475}, "1": {"0": 0.5874999761581421, "1": -0.17250001430511475}, "2": {"0": -0.5874999761581421, "1": -0.17250001430511475}, "3": {"0": -0.5874999761581421, "1": 0.17250001430511475}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 4.567500114440918, "1": 2.9499998092651367}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 7.017543315887451, "inverse_inertia": 266.8055725097656, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.23750001192092896, "1": 0.15000000596046448}, "1": {"0": 0.23750001192092896, "1": -0.15000000596046448}, "2": {"0": -0.23750001192092896, "1": -0.15000000596046448}, "3": {"0": -0.23750001192092896, "1": 0.15000000596046448}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 2.7874999046325684, "1": 2.5}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 5.075499534606934, "inverse_inertia": 140.3202667236328, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.2774999141693115, "1": 0.17750000953674316}, "1": {"0": 0.2774999141693115, "1": -0.17750000953674316}, "2": {"0": -0.2774999141693115, "1": -0.17750000953674316}, "3": {"0": -0.2774999141693115, "1": 0.17750000953674316}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}], "circle": [{"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 4, "relative_position": {"0": 0.0, "1": -0.13250017166137695}, "rotation": 1.5707963705062866, "power": 0.40537500381469727, "global_position": {"0": 0.6924999952316284, "1": 2.8299999237060547}, "active": true, "thruster_binding": 1}, {"object_index": 4, "relative_position": {"0": -0.5475000143051147, "1": 0.0}, "rotation": 0.0, "power": 0.40537500381469727, "global_position": {"0": 0.14499998092651367, "1": 2.9625000953674316}, "active": true, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": 0.0}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/h15_swing_up.json b/Kinetix/worlds/l/h15_swing_up.json new file mode 100644 index 0000000000000000000000000000000000000000..3087397c389f4a9345fbbf5a84139858c3c29d5b --- /dev/null +++ b/Kinetix/worlds/l/h15_swing_up.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.434999942779541, "1": 2.6449999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.27500009536743164, "1": 0.10500001907348633}, "1": {"0": 0.27500009536743164, "1": -0.10500001907348633}, "2": {"0": -0.27500009536743164, "1": -0.10500001907348633}, "3": {"0": -0.27500009536743164, "1": 0.10500001907348633}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.4375, "1": 2.3975000381469727}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 10.813735961914062, "inverse_inertia": 266.21160888671875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.06749999523162842, "1": 0.3424999713897705}, "1": {"0": 0.06749999523162842, "1": -0.3424999713897705}, "2": {"0": -0.06749999523162842, "1": -0.3424999713897705}, "3": {"0": -0.06749999523162842, "1": 0.3424999713897705}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.440000057220459, "1": 1.7874999046325684}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 9.990002632141113, "inverse_inertia": 225.83712768554688, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.0700000524520874, "1": 0.35750001668930054}, "1": {"0": 0.0700000524520874, "1": -0.35750001668930054}, "2": {"0": -0.0700000524520874, "1": -0.35750001668930054}, "3": {"0": -0.0700000524520874, "1": 0.35750001668930054}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}], "circle": [{"position": {"0": 2.3999998569488525, "1": 3.75}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.18124566972255707, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 2.434999942779541, "1": 1.4800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 17.7702579498291, "inverse_inertia": 1984.116943359375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.18927498161792755, "role": 1, "density": 0.5, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 5, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": -0.0025000572204589844, "1": 0.24749994277954102}, "global_position": {"0": 2.434999942779541, "1": 2.6449999809265137}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.75, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 5, "b_index": 6, "a_relative_pos": {"0": 0.022500038146972656, "1": -0.32249999046325684}, "b_relative_pos": {"0": 0.019999980926513672, "1": 0.28750014305114746}, "global_position": {"0": 2.4600000381469727, "1": 2.075000047683716}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 6, "b_index": 13, "a_relative_pos": {"0": -0.005000114440917969, "1": -0.30749988555908203}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.434999942779541, "1": 1.4800000190734863}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": true, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/h16_thruster_goal.json b/Kinetix/worlds/l/h16_thruster_goal.json new file mode 100644 index 0000000000000000000000000000000000000000..e758bec1a484dcee0ac8daf8bc2069ef2e1c7cc0 --- /dev/null +++ b/Kinetix/worlds/l/h16_thruster_goal.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.572499752044678, "1": 4.604999542236328}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.27250003814697266, "1": 0.25999999046325684}, "1": {"0": 0.27250003814697266, "1": -0.25999999046325684}, "2": {"0": -0.27250003814697266, "1": -0.25999999046325684}, "3": {"0": -0.27250003814697266, "1": 0.25999999046325684}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}], "circle": [{"position": {"0": 1.0, "1": 2.6499998569488525}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 2.332495927810669, "inverse_inertia": 129.89883422851562, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.26800185441970825, "role": 1, "density": 1.899999976158142, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 12, "relative_position": {"0": 0.0, "1": -0.2680017948150635}, "rotation": 1.5707963705062866, "power": 0.22564490139484406, "global_position": {"0": 1.0, "1": 2.381998062133789}, "active": true, "thruster_binding": 0}, {"object_index": 12, "relative_position": {"0": -0.26800185441970825, "1": 0.0}, "rotation": 0.0, "power": 0.22564490139484406, "global_position": {"0": 0.7319981455802917, "1": 2.6499998569488525}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -4.400000095367432}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/h17_unicycle.json b/Kinetix/worlds/l/h17_unicycle.json new file mode 100644 index 0000000000000000000000000000000000000000..1a9c338909e299cae18eae02caaf5970e16d0735 --- /dev/null +++ b/Kinetix/worlds/l/h17_unicycle.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.1424999237060547, "1": 1.2124998569488525}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 5.378511905670166, "inverse_inertia": 61.80718231201172, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.09250003099441528, "1": 0.5024999380111694}, "1": {"0": 0.09250003099441528, "1": -0.5024999380111694}, "2": {"0": -0.09250003099441528, "1": -0.5024999380111694}, "3": {"0": -0.09250003099441528, "1": 0.5024999380111694}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.837499618530273, "1": 1.712499976158142}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.13249993324279785, "1": 0.1625000238418579}, "1": {"0": 0.13249993324279785, "1": -0.1625000238418579}, "2": {"0": -0.13249993324279785, "1": -0.1625000238418579}, "3": {"0": -0.13249993324279785, "1": 0.1625000238418579}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}], "circle": [{"position": {"0": 1.1449999809265137, "1": 0.7049999833106995}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.1191556453704834, "inverse_inertia": 122.2598876953125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.3194526731967926, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.149999976158142, "1": 1.6649999618530273}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 11.18840217590332, "inverse_inertia": 1573.0625, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.16867123544216156, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 12, "a_relative_pos": {"0": 0.0025000572204589844, "1": -0.5074998736381531}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 1.1449999809265137, "1": 0.7049999833106995}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 4, "b_index": 13, "a_relative_pos": {"0": 0.007500052452087402, "1": 0.4525001049041748}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 1.149999976158142, "1": 1.6649999618530273}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": true, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -1.2000000476837158}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/h1_car_left.json b/Kinetix/worlds/l/h1_car_left.json new file mode 100644 index 0000000000000000000000000000000000000000..1fb9f167b9da826f0abe0a61bd008eb09ff8dbef --- /dev/null +++ b/Kinetix/worlds/l/h1_car_left.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.23249998688697815, "1": 0.762499988079071}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.1498544216156006, "inverse_inertia": 49.9019775390625, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20749999582767487, "1": 0.3824999928474426}, "1": {"0": 0.20749999582767487, "1": -0.3824999928474426}, "2": {"0": -0.20749999582767487, "1": -0.3824999928474426}, "3": {"0": -0.20749999582767487, "1": 0.3824999928474426}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 4.262499809265137, "1": 0.7250000238418579}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.835271835327148, "inverse_inertia": 167.18118286132812, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.33249998092651367, "1": 0.10999998450279236}, "1": {"0": 0.33249998092651367, "1": -0.10999998450279236}, "2": {"0": -0.33249998092651367, "1": -0.10999998450279236}, "3": {"0": -0.33249998092651367, "1": 0.10999998450279236}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}], "circle": [{"position": {"0": 4.0, "1": 0.73499995470047}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.5732574462890625, "inverse_inertia": 542.9641723632812, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.22005677223205566, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 4.569999694824219, "1": 0.75}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.094965934753418, "inverse_inertia": 466.82318115234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.2285280078649521, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 5, "b_index": 13, "a_relative_pos": {"0": 0.30749988555908203, "1": 0.02499997615814209}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 4.569999694824219, "1": 0.75}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 5, "b_index": 12, "a_relative_pos": {"0": -0.2624998092651367, "1": 0.00999993085861206}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 4.0, "1": 0.73499995470047}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 256.0, "1": 256.0}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 256.0, "1": 256.0}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 256.0, "1": 256.0}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 256.0, "1": 256.0}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 0.0, "1": 0.0}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 0.0, "1": 0.0}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/h2_car_ramp.json b/Kinetix/worlds/l/h2_car_ramp.json new file mode 100644 index 0000000000000000000000000000000000000000..4ebffc6a653feff133d1d1eb01a8c908672e1d93 --- /dev/null +++ b/Kinetix/worlds/l/h2_car_ramp.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.23249998688697815, "1": 0.762499988079071}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.1498544216156006, "inverse_inertia": 49.9019775390625, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20749999582767487, "1": 0.3824999928474426}, "1": {"0": 0.20749999582767487, "1": -0.3824999928474426}, "2": {"0": -0.20749999582767487, "1": -0.3824999928474426}, "3": {"0": -0.20749999582767487, "1": 0.3824999928474426}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 2.799999952316284, "1": 0.7250000238418579}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.835271835327148, "inverse_inertia": 167.18118286132812, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.33249998092651367, "1": 0.10999998450279236}, "1": {"0": 0.33249998092651367, "1": -0.10999998450279236}, "2": {"0": -0.33249998092651367, "1": -0.10999998450279236}, "3": {"0": -0.33249998092651367, "1": 0.10999998450279236}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.2274999618530273, "1": 0.5575000047683716}, "rotation": 0.949999988079071, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.06749999523162842, "1": 0.35249999165534973}, "1": {"0": 0.06749999523162842, "1": -0.35249999165534973}, "2": {"0": -0.06749999523162842, "1": -0.35249999165534973}, "3": {"0": -0.06749999523162842, "1": 0.35249999165534973}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.622499942779541, "1": 0.4024999737739563}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.4424999952316284, "1": 0.05000000074505806}, "1": {"0": 0.4424999952316284, "1": -0.05000000074505806}, "2": {"0": -0.4424999952316284, "1": -0.05000000074505806}, "3": {"0": -0.4424999952316284, "1": 0.05000000074505806}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}], "circle": [{"position": {"0": 2.5374996662139893, "1": 0.73499995470047}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.5732574462890625, "inverse_inertia": 542.9641723632812, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.22005677223205566, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 3.107499837875366, "1": 0.75}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.094965934753418, "inverse_inertia": 466.82318115234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.2285280078649521, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 5, "b_index": 13, "a_relative_pos": {"0": 0.30749988555908203, "1": 0.02499997615814209}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 3.107499837875366, "1": 0.75}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 5, "b_index": 12, "a_relative_pos": {"0": -0.2624998092651367, "1": 0.00999993085861206}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5375001430511475, "1": 0.73499995470047}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/h3_car_right.json b/Kinetix/worlds/l/h3_car_right.json new file mode 100644 index 0000000000000000000000000000000000000000..0bdf4f17d7f76758d1bc8101dedd3def967180f1 --- /dev/null +++ b/Kinetix/worlds/l/h3_car_right.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.5525000095367432, "1": 0.6074999570846558}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 7.891102313995361, "inverse_inertia": 188.08865356445312, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.3425000011920929, "1": 0.0925000011920929}, "1": {"0": 0.3425000011920929, "1": -0.0925000011920929}, "2": {"0": -0.3425000011920929, "1": -0.0925000011920929}, "3": {"0": -0.3425000011920929, "1": 0.0925000011920929}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.78249979019165, "1": 0.6649999618530273}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.16750001907348633, "1": 0.3050000071525574}, "1": {"0": 0.16750001907348633, "1": -0.3050000071525574}, "2": {"0": -0.16750001907348633, "1": -0.3050000071525574}, "3": {"0": -0.16750001907348633, "1": 0.3050000071525574}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}], "circle": [{"position": {"0": 0.85999995470047, "1": 0.6150000095367432}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 7.642492294311523, "inverse_inertia": 733.9727172851562, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.20408333837985992, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.26999998092651367, "1": 0.6200000047683716}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.96520471572876, "inverse_inertia": 609.6459350585938, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.21377559006214142, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 13, "a_relative_pos": {"0": -0.2825000286102295, "1": 0.01250004768371582}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 0.26999998092651367, "1": 0.6200000047683716}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 2.25, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 4, "b_index": 12, "a_relative_pos": {"0": 0.3074999451637268, "1": 0.007500052452087402}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 0.85999995470047, "1": 0.6150000095367432}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 2.25, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 256.0, "1": 256.0}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 256.0, "1": 256.0}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 256.0, "1": 256.0}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 256.0, "1": 256.0}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 0.0, "1": 0.0}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 0.0, "1": 0.0}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/h4_cartpole.json b/Kinetix/worlds/l/h4_cartpole.json new file mode 100644 index 0000000000000000000000000000000000000000..28bc70102650eeee83cd8159bcc169be2350c109 --- /dev/null +++ b/Kinetix/worlds/l/h4_cartpole.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.1174999475479126, "1": 0.5974999666213989}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.848142623901367, "inverse_inertia": 101.39764404296875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.44249996542930603, "1": 0.08250001072883606}, "1": {"0": 0.44249996542930603, "1": -0.08250001072883606}, "2": {"0": -0.44249996542930603, "1": -0.08250001072883606}, "3": {"0": -0.44249996542930603, "1": 0.08250001072883606}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.1050000190734863, "1": 1.2074999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 8.81057071685791, "inverse_inertia": 81.43954467773438, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.050000011920928955, "1": 0.5674999952316284}, "1": {"0": 0.050000011920928955, "1": -0.5674999952316284}, "2": {"0": -0.050000011920928955, "1": -0.5674999952316284}, "3": {"0": -0.050000011920928955, "1": 0.5674999952316284}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.762499809265137, "1": 1.8924999237060547}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.2024998664855957, "1": 0.07749998569488525}, "1": {"0": 0.2024998664855957, "1": -0.07749998569488525}, "2": {"0": -0.2024998664855957, "1": -0.07749998569488525}, "3": {"0": -0.2024998664855957, "1": 0.07749998569488525}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}], "circle": [{"position": {"0": 1.5099999904632568, "1": 0.5949999690055847}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 11.327760696411133, "inverse_inertia": 1612.49365234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.16763049364089966, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.73499995470047, "1": 0.6049999594688416}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 9.908479690551758, "inverse_inertia": 1233.7408447265625, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.17923447489738464, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.100000023841858, "1": 1.7400000095367432}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 9.908473014831543, "inverse_inertia": 1233.7391357421875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.17923453450202942, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 13, "a_relative_pos": {"0": -0.3824999928474426, "1": 0.007499992847442627}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 0.73499995470047, "1": 0.6049999594688416}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 1.7000000476837158, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 4, "b_index": 12, "a_relative_pos": {"0": 0.39250004291534424, "1": -0.002499997615814209}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 1.5099999904632568, "1": 0.5949999690055847}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 1.75, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 5, "b_index": 14, "a_relative_pos": {"0": -0.004999995231628418, "1": 0.5325000286102295}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 1.100000023841858, "1": 1.7400000095367432}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": true, "rotation": 0.0, "motor_binding": 0}, {"a_index": 4, "b_index": 5, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.01249992847442627, "1": -0.6100000143051147}, "global_position": {"0": 1.1174999475479126, "1": 0.5974999666213989}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": false, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": false, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": false, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": false, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -2.200000047683716}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/h5_flappy_bird.json b/Kinetix/worlds/l/h5_flappy_bird.json new file mode 100644 index 0000000000000000000000000000000000000000..f11e915b70d85bde3748401bcad649dfa3d1c49e --- /dev/null +++ b/Kinetix/worlds/l/h5_flappy_bird.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.5374997854232788, "1": 1.8221068382263184}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.13749893009662628, "1": 0.7071025371551514}, "1": {"0": 0.13749893009662628, "1": -0.7071025371551514}, "2": {"0": -0.13749893009662628, "1": -0.7071025371551514}, "3": {"0": -0.13749893009662628, "1": 0.7071025371551514}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 3.005000114440918, "1": 3.192499876022339}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.2144802361726761, "1": 0.8800000548362732}, "1": {"0": 0.2144802361726761, "1": -0.8800000548362732}, "2": {"0": -0.2144802361726761, "1": -0.8800000548362732}, "3": {"0": -0.2144802361726761, "1": 0.8800000548362732}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 2.9850001335144043, "1": 4.529999732971191}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.2250000238418579, "1": 0.4649999141693115}, "1": {"0": 0.2250000238418579, "1": -0.4649999141693115}, "2": {"0": -0.2250000238418579, "1": -0.4649999141693115}, "3": {"0": -0.2250000238418579, "1": 0.4649999141693115}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 4.715000152587891, "1": 4.059999942779541}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.2050001621246338, "1": 0.25500011444091797}, "1": {"0": 0.2050001621246338, "1": -0.25500011444091797}, "2": {"0": -0.2050001621246338, "1": -0.25500011444091797}, "3": {"0": -0.2050001621246338, "1": 0.25500011444091797}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}], "circle": [{"position": {"0": 1.0, "1": 2.6499998569488525}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 8.863484382629395, "inverse_inertia": 493.6155700683594, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.26800185441970825, "role": 1, "density": 0.5, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 12, "relative_position": {"0": 0.0, "1": -0.2680017948150635}, "rotation": 1.5707963705062866, "power": 0.15000000596046448, "global_position": {"0": 1.0, "1": 2.381998062133789}, "active": true, "thruster_binding": 0}, {"object_index": 12, "relative_position": {"0": -0.26800185441970825, "1": 0.0}, "rotation": 0.0, "power": 0.05000000074505806, "global_position": {"0": 0.7319981455802917, "1": 2.6499998569488525}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -4.400000095367432}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/h6_lorry.json b/Kinetix/worlds/l/h6_lorry.json new file mode 100644 index 0000000000000000000000000000000000000000..62fd68be4cc1fb8a6733c45a1b264d9da67f0c9a --- /dev/null +++ b/Kinetix/worlds/l/h6_lorry.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.0374999046325684, "1": 0.6825000047683716}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 5.052419662475586, "inverse_inertia": 32.17674255371094, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.6825000047683716, "1": 0.07249999046325684}, "1": {"0": 0.6825000047683716, "1": -0.07249999046325684}, "2": {"0": -0.6825000047683716, "1": -0.07249999046325684}, "3": {"0": -0.6825000047683716, "1": 0.07249999046325684}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.38499999046325684, "1": 0.7174999713897705}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 68.96552276611328, "inverse_inertia": 26674.822265625, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.07249999046325684}, "1": {"0": 0.05000000074505806, "1": -0.07249999046325684}, "2": {"0": -0.05000000074505806, "1": -0.07249999046325684}, "3": {"0": -0.05000000074505806, "1": 0.07249999046325684}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.5499987602233887, "1": 0.27000001072883606}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.8800000548362732, "1": 0.13037043809890747}, "1": {"0": 0.8800000548362732, "1": -0.13037043809890747}, "2": {"0": -0.8800000548362732, "1": -0.13037043809890747}, "3": {"0": -0.8800000548362732, "1": 0.13037043809890747}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}], "circle": [{"position": {"0": 0.85999995470047, "1": 0.6549999713897705}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 13.720254898071289, "inverse_inertia": 2365.561279296875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.15231545269489288, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.5600000619888306, "1": 0.6549999713897705}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 13.720254898071289, "inverse_inertia": 2365.561279296875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.15231545269489288, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.6200000047683716, "1": 1.0449999570846558}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 14.435824394226074, "inverse_inertia": 2618.744384765625, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.14849241077899933, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 13, "a_relative_pos": {"0": 0.5225001573562622, "1": -0.027500033378601074}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 1.5600000619888306, "1": 0.6549999713897705}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 4, "b_index": 12, "a_relative_pos": {"0": -0.1774999499320984, "1": -0.027500033378601074}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 0.85999995470047, "1": 0.6549999713897705}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 1.0499999523162842, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 4, "b_index": 5, "a_relative_pos": {"0": -0.6524999141693115, "1": 0.034999966621398926}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 0.38499999046325684, "1": 0.7174999713897705}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": true, "rotation": 0.0, "motor_binding": 1}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/h7_maze_1.json b/Kinetix/worlds/l/h7_maze_1.json new file mode 100644 index 0000000000000000000000000000000000000000..63f6e160c085091c9921c1a77b98590e259f8ebe --- /dev/null +++ b/Kinetix/worlds/l/h7_maze_1.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.9100000262260437, "1": 3.0425000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071002721786499, "1": 0.11749913543462753}, "1": {"0": 0.7071002721786499, "1": -0.11749913543462753}, "2": {"0": -0.7071002721786499, "1": -0.11749913543462753}, "3": {"0": -0.7071002721786499, "1": 0.11749913543462753}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 1.0499999523162842, "1": 2.427500009536743}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071015238761902, "1": 0.09249931573867798}, "1": {"0": 0.7071015238761902, "1": -0.09249931573867798}, "2": {"0": -0.7071015238761902, "1": -0.09249931573867798}, "3": {"0": -0.7071015238761902, "1": 0.09249931573867798}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.46000000834465027, "1": 4.252500057220459}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071006298065186, "1": 0.12249917536973953}, "1": {"0": 0.7071006298065186, "1": -0.12249917536973953}, "2": {"0": -0.7071006298065186, "1": -0.12249917536973953}, "3": {"0": -0.7071006298065186, "1": 0.12249917536973953}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 2.862499952316284, "1": 2.9278931617736816}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.09749969094991684, "1": 0.7071036100387573}, "1": {"0": 0.09749969094991684, "1": -0.7071036100387573}, "2": {"0": -0.09749969094991684, "1": -0.7071036100387573}, "3": {"0": -0.09749969094991684, "1": 0.7071036100387573}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}], "circle": [{"position": {"0": 0.85999995470047, "1": 1.4249999523162842}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 7.2015838623046875, "inverse_inertia": 651.7272338867188, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.21023792028427124, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 4.704999923706055, "1": 4.619999885559082}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.23900841176509857, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 12, "relative_position": {"0": 0.0, "1": -0.21023797988891602}, "rotation": 1.5707963705062866, "power": 0.1388583481311798, "global_position": {"0": 0.85999995470047, "1": 1.2147619724273682}, "active": true, "thruster_binding": 0}, {"object_index": 12, "relative_position": {"0": -0.21023792028427124, "1": 0.0}, "rotation": 6.283185005187988, "power": 0.1388583481311798, "global_position": {"0": 0.6497620344161987, "1": 1.4249999523162842}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": 0.0}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/h8_maze_2.json b/Kinetix/worlds/l/h8_maze_2.json new file mode 100644 index 0000000000000000000000000000000000000000..e340dc8d4218ad35e0c5e511c65a5f019bd7b0fd --- /dev/null +++ b/Kinetix/worlds/l/h8_maze_2.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.5099999904632568, "1": 2.3949999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.24500000476837158, "1": 0.23500001430511475}, "1": {"0": 0.24500000476837158, "1": -0.23500001430511475}, "2": {"0": -0.24500000476837158, "1": -0.23500001430511475}, "3": {"0": -0.24500000476837158, "1": 0.23500001430511475}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 1.6100002527236938, "1": 4.194998264312744}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.24500000476837158, "1": 0.23500001430511475}, "1": {"0": 0.24500000476837158, "1": -0.23500001430511475}, "2": {"0": -0.24500000476837158, "1": -0.23500001430511475}, "3": {"0": -0.24500000476837158, "1": 0.23500001430511475}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 3.109999179840088, "1": 3.294999122619629}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.24500000476837158, "1": 0.23500001430511475}, "1": {"0": 0.24500000476837158, "1": -0.23500001430511475}, "2": {"0": -0.24500000476837158, "1": -0.23500001430511475}, "3": {"0": -0.24500000476837158, "1": 0.23500001430511475}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 3.0899999141693115, "1": 1.8300000429153442}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.24500000476837158, "1": 0.23500001430511475}, "1": {"0": 0.24500000476837158, "1": -0.23500001430511475}, "2": {"0": -0.24500000476837158, "1": -0.23500001430511475}, "3": {"0": -0.24500000476837158, "1": 0.23500001430511475}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}], "circle": [{"position": {"0": 0.85999995470047, "1": 1.4249999523162842}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.429325580596924, "inverse_inertia": 310.3463439941406, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.21023792028427124, "role": 1, "density": 2.0999999046325684, "highlighted": false}, {"position": {"0": 4.704999923706055, "1": 4.619999885559082}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.23900841176509857, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 12, "relative_position": {"0": 0.0, "1": -0.21023797988891602}, "rotation": 1.5707963705062866, "power": 0.1388583481311798, "global_position": {"0": 0.85999995470047, "1": 1.2147619724273682}, "active": true, "thruster_binding": 0}, {"object_index": 12, "relative_position": {"0": -0.21023792028427124, "1": 0.0}, "rotation": 6.283185005187988, "power": 0.1388583481311798, "global_position": {"0": 0.6497620344161987, "1": 1.4249999523162842}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": 0.0}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/h9_morph_direction.json b/Kinetix/worlds/l/h9_morph_direction.json new file mode 100644 index 0000000000000000000000000000000000000000..5622935fc5967d4437a1207111640fbe1ac6b174 --- /dev/null +++ b/Kinetix/worlds/l/h9_morph_direction.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.507499933242798, "1": 1.0474998950958252}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.2825000286102295, "1": 0.6574999690055847}, "1": {"0": 0.2825000286102295, "1": -0.6574999690055847}, "2": {"0": -0.2825000286102295, "1": -0.6574999690055847}, "3": {"0": -0.2825000286102295, "1": 0.6574999690055847}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5174999237060547, "1": 1.8199999332427979}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.70250004529953, "1": 0.18000000715255737}, "1": {"0": 0.70250004529953, "1": -0.18000000715255737}, "2": {"0": -0.70250004529953, "1": -0.18000000715255737}, "3": {"0": -0.70250004529953, "1": 0.18000000715255737}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5850000381469727, "1": 2.4049999713897705}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 7.7399373054504395, "inverse_inertia": 357.227783203125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.16999995708465576, "1": 0.19000005722045898}, "1": {"0": 0.16999995708465576, "1": -0.19000005722045898}, "2": {"0": -0.16999995708465576, "1": -0.19000005722045898}, "3": {"0": -0.16999995708465576, "1": 0.19000005722045898}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.4674999713897705, "1": 2.3575000762939453}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 11.544015884399414, "inverse_inertia": 792.2689208984375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1575000286102295, "1": 0.13749992847442627}, "1": {"0": 0.1575000286102295, "1": -0.13749992847442627}, "2": {"0": -0.1575000286102295, "1": -0.13749992847442627}, "3": {"0": -0.1575000286102295, "1": 0.13749992847442627}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}], "circle": [{"position": {"0": 0.30000001192092896, "1": 0.8849999904632568}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.8759195804595947, "inverse_inertia": 188.7814483642578, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.2865746021270752, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.6000000238418579, "1": 0.8849999904632568}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.8759195804595947, "inverse_inertia": 188.7814483642578, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.2865746021270752, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 2.554999828338623, "1": 2.3899998664855957}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.546218395233154, "inverse_inertia": 538.50634765625, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.22051078081130981, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 7, "b_index": 14, "a_relative_pos": {"0": 0.08749985694885254, "1": 0.03249979019165039}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.554999828338623, "1": 2.3899998664855957}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/hard_beam_balance.json b/Kinetix/worlds/l/hard_beam_balance.json new file mode 100644 index 0000000000000000000000000000000000000000..dd03e09726556411441d7987c18b38d59db34fa0 --- /dev/null +++ b/Kinetix/worlds/l/hard_beam_balance.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.9871068000793457, "1": 2.7024998664855957}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.0089664459228516, "inverse_inertia": 17.56868553161621, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071067690849304, "1": 0.1174999475479126}, "1": {"0": 0.7071067690849304, "1": -0.1174999475479126}, "2": {"0": -0.7071067690849304, "1": -0.1174999475479126}, "3": {"0": -0.7071067690849304, "1": 0.1174999475479126}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.9800000190734863, "1": 2.6675000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.10000000149011612, "1": 0.07222229242324829}, "1": {"0": 0.10000000149011612, "1": -0.07222229242324829}, "2": {"0": -0.10000000149011612, "1": -0.07222229242324829}, "3": {"0": -0.10000000149011612, "1": 0.07222229242324829}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.9774999618530273, "1": 4.862500190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.12249994277954102, "1": 0.09750008583068848}, "1": {"0": 0.12249994277954102, "1": -0.09750008583068848}, "2": {"0": -0.12249994277954102, "1": -0.09750008583068848}, "3": {"0": -0.12249994277954102, "1": 0.09750008583068848}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 2.125, "1": 3.2149999141693115}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 11.033270835876465, "inverse_inertia": 1529.7427978515625, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.16985288262367249, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 5, "a_relative_pos": {"0": -0.007106781005859375, "1": -0.034999847412109375}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 1.9800000190734863, "1": 2.6675000190734863}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.4000000059604645, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/hard_cartpole_thrust.json b/Kinetix/worlds/l/hard_cartpole_thrust.json new file mode 100644 index 0000000000000000000000000000000000000000..836b812a91ffac6825081ecf92571fcadc9e5a30 --- /dev/null +++ b/Kinetix/worlds/l/hard_cartpole_thrust.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.1449999809265137, "1": 0.5724999904632568}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.280302047729492, "inverse_inertia": 41.86173629760742, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.4549999237060547, "1": 0.16750000417232513}, "1": {"0": 0.4549999237060547, "1": -0.16750000417232513}, "2": {"0": -0.4549999237060547, "1": -0.16750000417232513}, "3": {"0": -0.4549999237060547, "1": 0.16750000417232513}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.127500057220459, "1": 1.2200000286102295}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 5.7870378494262695, "inverse_inertia": 41.91923141479492, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.06749999523162842, "1": 0.6399999856948853}, "1": {"0": 0.06749999523162842, "1": -0.6399999856948853}, "2": {"0": -0.06749999523162842, "1": -0.6399999856948853}, "3": {"0": -0.06749999523162842, "1": 0.6399999856948853}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 1.1021068096160889}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.7071067690849304}, "1": {"0": 0.05000000074505806, "1": -0.7071067690849304}, "2": {"0": -0.05000000074505806, "1": -0.7071067690849304}, "3": {"0": -0.05000000074505806, "1": 0.7071067690849304}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 5.0, "1": 1.1021068096160889}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.7071067690849304}, "1": {"0": 0.05000000074505806, "1": -0.7071067690849304}, "2": {"0": -0.05000000074505806, "1": -0.7071067690849304}, "3": {"0": -0.05000000074505806, "1": 0.7071067690849304}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 2.174999952316284, "1": 4.712500095367432}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.3349999785423279, "1": 0.1725001335144043}, "1": {"0": 0.3349999785423279, "1": -0.1725001335144043}, "2": {"0": -0.3349999785423279, "1": -0.1725001335144043}, "3": {"0": -0.3349999785423279, "1": 0.1725001335144043}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 5, "a_relative_pos": {"0": -0.009999990463256836, "1": 0.06749999523162842}, "b_relative_pos": {"0": 0.0074999332427978516, "1": -0.5800000429153442}, "global_position": {"0": 2.134999990463257, "1": 0.6399999856948853}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 4, "relative_position": {"0": 0.4200000762939453, "1": 0.012499988079071045}, "rotation": 3.111839771270752, "power": 0.5, "global_position": {"0": 2.565000057220459, "1": 0.5849999785423279}, "active": true, "thruster_binding": 0}, {"object_index": 4, "relative_position": {"0": -0.4099999666213989, "1": 0.012499988079071045}, "rotation": 0.030478477478027344, "power": 0.5, "global_position": {"0": 1.7350000143051147, "1": 0.5849999785423279}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/hard_cartpole_wheels.json b/Kinetix/worlds/l/hard_cartpole_wheels.json new file mode 100644 index 0000000000000000000000000000000000000000..24ab86eed6cff16e6092a90b572aae6bce261e83 --- /dev/null +++ b/Kinetix/worlds/l/hard_cartpole_wheels.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.0950000286102295, "1": 0.6625000238418579}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 4.387888431549072, "inverse_inertia": 65.01976776123047, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.43000006675720215, "1": 0.13250002264976501}, "1": {"0": 0.43000006675720215, "1": -0.13250002264976501}, "2": {"0": -0.43000006675720215, "1": -0.13250002264976501}, "3": {"0": -0.43000006675720215, "1": 0.13250002264976501}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.112499952316284, "1": 1.2621067762374878}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 5.656854152679443, "inverse_inertia": 33.678016662597656, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.0625, "1": 0.7071067690849304}, "1": {"0": 0.0625, "1": -0.7071067690849304}, "2": {"0": -0.0625, "1": -0.7071067690849304}, "3": {"0": -0.0625, "1": 0.7071067690849304}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 1.1021068096160889}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.7071067690849304}, "1": {"0": 0.05000000074505806, "1": -0.7071067690849304}, "2": {"0": -0.05000000074505806, "1": -0.7071067690849304}, "3": {"0": -0.05000000074505806, "1": 0.7071067690849304}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 5.0, "1": 1.1021068096160889}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.7071067690849304}, "1": {"0": 0.05000000074505806, "1": -0.7071067690849304}, "2": {"0": -0.05000000074505806, "1": -0.7071067690849304}, "3": {"0": -0.05000000074505806, "1": 0.7071067690849304}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 2.1649999618530273, "1": 4.792500019073486}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.5199999809265137, "1": 0.1574997901916504}, "1": {"0": 0.5199999809265137, "1": -0.1574997901916504}, "2": {"0": -0.5199999809265137, "1": -0.1574997901916504}, "3": {"0": -0.5199999809265137, "1": 0.1574997901916504}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 1.7649999856948853, "1": 0.675000011920929}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.943135976791382, "inverse_inertia": 195.38600158691406, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.2841215431690216, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.4649996757507324, "1": 0.675000011920929}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.943135976791382, "inverse_inertia": 195.38600158691406, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.2841215431690216, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 12, "a_relative_pos": {"0": -0.33000004291534424, "1": 0.012499988079071045}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 1.7649999856948853, "1": 0.675000011920929}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.100000023841858, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 4, "b_index": 13, "a_relative_pos": {"0": 0.36999964714050293, "1": 0.012499988079071045}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.4649996757507324, "1": 0.675000011920929}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0499999523162842, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 4, "b_index": 5, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": -0.017499923706054688, "1": -0.5996067523956299}, "global_position": {"0": 2.0950000286102295, "1": 0.6625000238418579}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 4, "relative_position": {"0": 0.4200000762939453, "1": 0.012499988079071045}, "rotation": 3.111839771270752, "power": 0.5, "global_position": {"0": 2.515000104904175, "1": 0.675000011920929}, "active": false, "thruster_binding": 0}, {"object_index": 4, "relative_position": {"0": -0.4099999666213989, "1": 0.012499988079071045}, "rotation": 0.030478477478027344, "power": 0.5, "global_position": {"0": 1.6850000619888306, "1": 0.675000011920929}, "active": false, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/hard_lunar_lander.json b/Kinetix/worlds/l/hard_lunar_lander.json new file mode 100644 index 0000000000000000000000000000000000000000..b208738104ba44342ee2a2634fac877f7b0644af --- /dev/null +++ b/Kinetix/worlds/l/hard_lunar_lander.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.7699999809265137, "1": 0.36500000953674316}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.47499990463256836, "1": 0.06000000238418579}, "1": {"0": 0.47499990463256836, "1": -0.06000000238418579}, "2": {"0": -0.47499990463256836, "1": -0.06000000238418579}, "3": {"0": -0.47499990463256836, "1": 0.06000000238418579}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.5799999237060547, "1": 3.802499771118164}, "rotation": 2.356194496154785, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.9800000190734863, "1": 3.802499771118164}, "rotation": 0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.5799999237060547, "1": 3.802499771118164}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.7875000238418579, "1": 3.819999933242798}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 9.962638854980469, "inverse_inertia": 572.4282836914062, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.13750001788139343, "1": 0.18250000476837158}, "1": {"0": 0.13750001788139343, "1": -0.18250000476837158}, "2": {"0": -0.13750001788139343, "1": -0.18250000476837158}, "3": {"0": -0.13750001788139343, "1": 0.18250000476837158}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 5, "b_index": 8, "a_relative_pos": {"0": -0.008838744834065437, "1": -0.16793803870677948}, "b_relative_pos": {"0": -0.08250004053115845, "1": 0.09500002861022949}, "global_position": {"0": 0.7049999833106995, "1": 3.9149999618530273}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": true, "rotation": -2.356194496154785, "motor_binding": 0}, {"a_index": 6, "b_index": 8, "a_relative_pos": {"0": 0.012374568730592728, "1": 0.12551170587539673}, "b_relative_pos": {"0": 0.11249995231628418, "1": 0.08000016212463379}, "global_position": {"0": 0.8999999761581421, "1": 3.9000000953674316}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.8726646304130554, "is_fixed_joint": true, "rotation": -0.7853981852531433, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 8, "relative_position": {"0": -0.10250002145767212, "1": -0.125}, "rotation": 1.2454358339309692, "power": 0.15000000596046448, "global_position": {"0": 0.6850000023841858, "1": 3.694999933242798}, "active": true, "thruster_binding": 0}, {"object_index": 8, "relative_position": {"0": 0.10749995708465576, "1": -0.11999988555908203}, "rotation": 1.858579397201538, "power": 0.15000000596046448, "global_position": {"0": 0.8949999809265137, "1": 3.700000047683716}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": false, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": false, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": false, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/hard_pinball.json b/Kinetix/worlds/l/hard_pinball.json new file mode 100644 index 0000000000000000000000000000000000000000..a95c9a6f9e24724849494f38d9996da82042b87d --- /dev/null +++ b/Kinetix/worlds/l/hard_pinball.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.5421067476272583, "1": 1.5149998664855957}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.928372383117676, "inverse_inertia": 23.19448471069336, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071067690849304, "1": 0.0899999737739563}, "1": {"0": 0.7071067690849304, "1": -0.0899999737739563}, "2": {"0": -0.7071067690849304, "1": -0.0899999737739563}, "3": {"0": -0.7071067690849304, "1": 0.0899999737739563}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.4421065151691437, "1": 1.9149998426437378}, "rotation": -0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071067690849304, "1": 0.0899999737739563}, "1": {"0": 0.7071067690849304, "1": -0.0899999737739563}, "2": {"0": -0.7071067690849304, "1": -0.0899999737739563}, "3": {"0": -0.7071067690849304, "1": 0.0899999737739563}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.442105531692505, "1": 1.5149998664855957}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.928372383117676, "inverse_inertia": 23.19448471069336, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071067690849304, "1": 0.0899999737739563}, "1": {"0": 0.7071067690849304, "1": -0.0899999737739563}, "2": {"0": -0.7071067690849304, "1": -0.0899999737739563}, "3": {"0": -0.7071067690849304, "1": 0.0899999737739563}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.542104721069336, "1": 1.9149998426437378}, "rotation": 0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071067690849304, "1": 0.0899999737739563}, "1": {"0": 0.7071067690849304, "1": -0.0899999737739563}, "2": {"0": -0.7071067690849304, "1": -0.0899999737739563}, "3": {"0": -0.7071067690849304, "1": 0.0899999737739563}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 2.4049999713897705, "1": 3.1649999618530273}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.4571925103664398, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.5199999809265137, "1": 4.239999771118164}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.269536554813385, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.8399999737739563, "1": 3.630000114440918}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.1856071501970291, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.3400012254714966, "1": 2.9549999237060547}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 10.393803596496582, "inverse_inertia": 1357.559326171875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.1749999076128006, "role": 1, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 5, "a_relative_pos": {"0": -0.6421067714691162, "1": -0.014999866485595703}, "b_relative_pos": {"0": 0.6172287464141846, "1": 0.03033035434782505}, "global_position": {"0": 0.8999999761581421, "1": 1.5}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.2999999523162842, "motor_power": 1.7999999523162842, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": -0.7853981852531433, "motor_binding": 0}, {"a_index": 6, "b_index": 7, "a_relative_pos": {"0": 0.7028944492340088, "1": 1.1920928955078125e-07}, "b_relative_pos": {"0": -0.5636380910873413, "1": -0.0020471515599638224}, "global_position": {"0": 4.144999980926514, "1": 1.5149999856948853}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.2999999523162842, "motor_power": 1.7999999523162842, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.7853981852531433, "motor_binding": 1}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/lever_puzzle.json b/Kinetix/worlds/l/lever_puzzle.json new file mode 100644 index 0000000000000000000000000000000000000000..38438749667dfa9bfffb4fa61f4de427dc3a7e12 --- /dev/null +++ b/Kinetix/worlds/l/lever_puzzle.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.5421067476272583, "1": 2.897500514984131}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071001529693604, "1": 0.05749959126114845}, "1": {"0": 0.7071001529693604, "1": -0.05749959126114845}, "2": {"0": -0.7071001529693604, "1": -0.05749959126114845}, "3": {"0": -0.7071001529693604, "1": 0.05749959126114845}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.8324999809265137, "1": 3.6700000762939453}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 8.064516067504883, "inverse_inertia": 62.53178024291992, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.6200000047683716}, "1": {"0": 0.05000000074505806, "1": -0.6200000047683716}, "2": {"0": -0.05000000074505806, "1": -0.6200000047683716}, "3": {"0": -0.05000000074505806, "1": 0.6200000047683716}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.4874999523162842, "1": 3.0850000381469727}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 26.66666603088379, "inverse_inertia": 2124.48095703125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1875, "1": 0.05000000074505806}, "1": {"0": 0.1875, "1": -0.05000000074505806}, "2": {"0": -0.1875, "1": -0.05000000074505806}, "3": {"0": -0.1875, "1": 0.05000000074505806}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.4421067237854004, "1": 4.097499370574951}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071002125740051, "1": 0.05749959498643875}, "1": {"0": 0.7071002125740051, "1": -0.05749959498643875}, "2": {"0": -0.7071002125740051, "1": -0.05749959498643875}, "3": {"0": -0.7071002125740051, "1": 0.05749959498643875}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.6421053409576416, "1": 2.897500514984131}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7070991396903992, "1": 0.05749952793121338}, "1": {"0": 0.7070991396903992, "1": -0.05749952793121338}, "2": {"0": -0.7070991396903992, "1": -0.05749952793121338}, "3": {"0": -0.7070991396903992, "1": 0.05749952793121338}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.1974997520446777, "1": 2.572499990463257}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.372499942779541}, "1": {"0": 0.05000000074505806, "1": -0.372499942779541}, "2": {"0": -0.05000000074505806, "1": -0.372499942779541}, "3": {"0": -0.05000000074505806, "1": 0.372499942779541}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.56499981880188, "1": 2.257499933242798}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.41499996185302734, "1": 0.052500009536743164}, "1": {"0": 0.41499996185302734, "1": -0.052500009536743164}, "2": {"0": -0.41499996185302734, "1": -0.052500009536743164}, "3": {"0": -0.41499996185302734, "1": 0.052500009536743164}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.9974989891052246, "1": 2.572499990463257}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.372499942779541}, "1": {"0": 0.05000000074505806, "1": -0.372499942779541}, "2": {"0": -0.05000000074505806, "1": -0.372499942779541}, "3": {"0": -0.05000000074505806, "1": 0.372499942779541}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 1.3249999284744263, "1": 3.0850000381469727}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.03575897216797, "inverse_inertia": 3231.38623046875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.14089004695415497, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.625, "1": 3.0850000381469727}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.03575897216797, "inverse_inertia": 3231.38623046875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.14089004695415497, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 1.159999966621399, "1": 4.534999847412109}, "rotation": 0.5017720460891724, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 2.816901445388794, "inverse_inertia": 99.71331787109375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.3361547291278839, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.234999656677246, "1": 3.119999885559082}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 8.985466957092285, "inverse_inertia": 1014.5914306640625, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.1882152110338211, "role": 2, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 6, "b_index": 13, "a_relative_pos": {"0": 0.13750004768371582, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 1.625, "1": 3.0850000381469727}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 2.0, "motor_power": 2.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 6, "b_index": 12, "a_relative_pos": {"0": -0.1625000238418579, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 1.3249999284744263, "1": 3.0850000381469727}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 2.0, "motor_power": 2.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 5, "b_index": 7, "a_relative_pos": {"0": 0.012499988079071045, "1": 0.4199998378753662}, "b_relative_pos": {"0": -0.5971067547798157, "1": -0.0074994564056396484}, "global_position": {"0": 0.8449999690055847, "1": 4.090000152587891}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 1}, {"a_index": 5, "b_index": 8, "a_relative_pos": {"0": 0.0, "1": 0.18000006675720215}, "b_relative_pos": {"0": -0.019999980926513672, "1": -0.31999993324279785}, "global_position": {"0": 0.8324999809265137, "1": 3.8500001430511475}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 8, "relative_position": {"0": -0.44499996304512024, "1": -0.35000014305114746}, "rotation": 1.5406547784805298, "power": 0.7124999761581421, "global_position": {"0": 3.1971054077148438, "1": 2.5475003719329834}, "active": false, "thruster_binding": 0}, {"object_index": 8, "relative_position": {"0": 0.46000003814697266, "1": -0.35500001907348633}, "rotation": 1.5333606004714966, "power": 0.7124999761581421, "global_position": {"0": 4.102105140686035, "1": 2.5425004959106445}, "active": false, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/mjc_half_cheetah.json b/Kinetix/worlds/l/mjc_half_cheetah.json new file mode 100644 index 0000000000000000000000000000000000000000..90d03bae9b5ed063200540da5dd9fcb457bd585c --- /dev/null +++ b/Kinetix/worlds/l/mjc_half_cheetah.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.33000001311302185, "1": 0.8425000309944153}, "rotation": 0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 29.85074234008789, "inverse_inertia": 2930.733154296875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.16750001907348633}, "1": {"0": 0.05000000074505806, "1": -0.16750001907348633}, "2": {"0": -0.05000000074505806, "1": -0.16750001907348633}, "3": {"0": -0.05000000074505806, "1": 0.16750001907348633}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.6274999976158142, "1": 0.9625000357627869}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 10.296008110046387, "inverse_inertia": 142.5628662109375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.4625000059604645, "1": 0.052500009536743164}, "1": {"0": 0.4625000059604645, "1": -0.052500009536743164}, "2": {"0": -0.4625000059604645, "1": -0.052500009536743164}, "3": {"0": -0.4625000059604645, "1": 0.052500009536743164}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.33000001311302185, "1": 0.6424999833106995}, "rotation": -0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 29.85074234008789, "inverse_inertia": 2930.733154296875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.16750001907348633}, "1": {"0": 0.05000000074505806, "1": -0.16750001907348633}, "2": {"0": -0.05000000074505806, "1": -0.16750001907348633}, "3": {"0": -0.05000000074505806, "1": 0.16750001907348633}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.27000001072883606, "1": 0.5099999904632568}, "rotation": 0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 48.78049087524414, "inverse_inertia": 11251.6279296875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.10249999165534973}, "1": {"0": 0.05000000074505806, "1": -0.10249999165534973}, "2": {"0": -0.05000000074505806, "1": -0.10249999165534973}, "3": {"0": -0.05000000074505806, "1": 0.10249999165534973}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.87999963760376, "1": 0.9775000214576721}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000004768371582, "1": 0.5975000262260437}, "1": {"0": 0.20000004768371582, "1": -0.5975000262260437}, "2": {"0": -0.20000004768371582, "1": -0.5975000262260437}, "3": {"0": -0.20000004768371582, "1": 0.5975000262260437}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 1.0199999809265137, "1": 0.8299999833106995}, "rotation": -0.4699999988079071, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 29.85074234008789, "inverse_inertia": 2930.733154296875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.16750001907348633}, "1": {"0": 0.05000000074505806, "1": -0.16750001907348633}, "2": {"0": -0.05000000074505806, "1": -0.16750001907348633}, "3": {"0": -0.05000000074505806, "1": 0.16750001907348633}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.03000009059906, "1": 0.6499999761581421}, "rotation": 0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 29.85074234008789, "inverse_inertia": 2930.733154296875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.16750001907348633}, "1": {"0": 0.05000000074505806, "1": -0.16750001907348633}, "2": {"0": -0.05000000074505806, "1": -0.16750001907348633}, "3": {"0": -0.05000000074505806, "1": 0.16750001907348633}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.1299999952316284, "1": 0.5099999904632568}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 48.78049087524414, "inverse_inertia": 11251.6279296875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.10249999165534973}, "1": {"0": 0.05000000074505806, "1": -0.10249999165534973}, "2": {"0": -0.05000000074505806, "1": -0.10249999165534973}, "3": {"0": -0.05000000074505806, "1": 0.10249999165534973}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 5, "b_index": 9, "a_relative_pos": {"0": 0.4375000596046448, "1": -0.007500052452087402}, "b_relative_pos": {"0": -0.016490142792463303, "1": 0.13182595372200012}, "global_position": {"0": 1.065000057220459, "1": 0.9549999833106995}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": -0.4699999988079071, "motor_binding": 0}, {"a_index": 4, "b_index": 5, "a_relative_pos": {"0": 0.030052032321691513, "1": 0.15026019513607025}, "b_relative_pos": {"0": -0.3824999928474426, "1": 0.007499992847442627}, "global_position": {"0": 0.24500000476837158, "1": 0.9700000286102295}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": -0.7853981852531433, "motor_binding": 1}, {"a_index": 4, "b_index": 6, "a_relative_pos": {"0": 0.0017677444266155362, "1": -0.13258254528045654}, "b_relative_pos": {"0": -0.008838847279548645, "1": 0.14318913221359253}, "global_position": {"0": 0.42500001192092896, "1": 0.75}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": -1.5707963705062866, "motor_binding": 2}, {"a_index": 9, "b_index": 10, "a_relative_pos": {"0": -0.01054093986749649, "1": -0.1006920337677002}, "b_relative_pos": {"0": 0.021213142201304436, "1": 0.11313718557357788}, "global_position": {"0": 0.9649999737739563, "1": 0.7450000047683716}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 1.255398154258728, "motor_binding": 3}, {"a_index": 10, "b_index": 11, "a_relative_pos": {"0": 0.02828420139849186, "1": -0.13435019552707672}, "b_relative_pos": {"0": 0.014999985694885254, "1": 0.06499999761581421}, "global_position": {"0": 1.1449999809265137, "1": 0.574999988079071}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": true, "rotation": -0.7853981852531433, "motor_binding": 0}, {"a_index": 6, "b_index": 7, "a_relative_pos": {"0": -0.008838861249387264, "1": -0.11844038963317871}, "b_relative_pos": {"0": 0.017677662894129753, "1": 0.060104090720415115}, "global_position": {"0": 0.23999999463558197, "1": 0.5649999976158142}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": true, "rotation": 1.5707963705062866, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 0.0, "1": 0.0}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/mjc_half_cheetah_easy.json b/Kinetix/worlds/l/mjc_half_cheetah_easy.json new file mode 100644 index 0000000000000000000000000000000000000000..85f25465722d011f1cb4d5990cf80b6bb4e68668 --- /dev/null +++ b/Kinetix/worlds/l/mjc_half_cheetah_easy.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.33000001311302185, "1": 0.8425000309944153}, "rotation": 0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 29.85074234008789, "inverse_inertia": 2930.733154296875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.16750001907348633}, "1": {"0": 0.05000000074505806, "1": -0.16750001907348633}, "2": {"0": -0.05000000074505806, "1": -0.16750001907348633}, "3": {"0": -0.05000000074505806, "1": 0.16750001907348633}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.6274999976158142, "1": 0.9625000357627869}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 10.296008110046387, "inverse_inertia": 142.5628662109375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.4625000059604645, "1": 0.052500009536743164}, "1": {"0": 0.4625000059604645, "1": -0.052500009536743164}, "2": {"0": -0.4625000059604645, "1": -0.052500009536743164}, "3": {"0": -0.4625000059604645, "1": 0.052500009536743164}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.33000001311302185, "1": 0.6424999833106995}, "rotation": -0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 29.85074234008789, "inverse_inertia": 2930.733154296875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.16750001907348633}, "1": {"0": 0.05000000074505806, "1": -0.16750001907348633}, "2": {"0": -0.05000000074505806, "1": -0.16750001907348633}, "3": {"0": -0.05000000074505806, "1": 0.16750001907348633}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.27000001072883606, "1": 0.5099999904632568}, "rotation": 0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 48.78049087524414, "inverse_inertia": 11251.6279296875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.10249999165534973}, "1": {"0": 0.05000000074505806, "1": -0.10249999165534973}, "2": {"0": -0.05000000074505806, "1": -0.10249999165534973}, "3": {"0": -0.05000000074505806, "1": 0.10249999165534973}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.87999963760376, "1": 0.9775000214576721}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000004768371582, "1": 0.5975000262260437}, "1": {"0": 0.20000004768371582, "1": -0.5975000262260437}, "2": {"0": -0.20000004768371582, "1": -0.5975000262260437}, "3": {"0": -0.20000004768371582, "1": 0.5975000262260437}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 1.0199999809265137, "1": 0.8299999833106995}, "rotation": -0.4699999988079071, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 29.85074234008789, "inverse_inertia": 2930.733154296875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.16750001907348633}, "1": {"0": 0.05000000074505806, "1": -0.16750001907348633}, "2": {"0": -0.05000000074505806, "1": -0.16750001907348633}, "3": {"0": -0.05000000074505806, "1": 0.16750001907348633}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.03000009059906, "1": 0.6499999761581421}, "rotation": 0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 29.85074234008789, "inverse_inertia": 2930.733154296875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.16750001907348633}, "1": {"0": 0.05000000074505806, "1": -0.16750001907348633}, "2": {"0": -0.05000000074505806, "1": -0.16750001907348633}, "3": {"0": -0.05000000074505806, "1": 0.16750001907348633}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.1299999952316284, "1": 0.5099999904632568}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 48.78049087524414, "inverse_inertia": 11251.6279296875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.10249999165534973}, "1": {"0": 0.05000000074505806, "1": -0.10249999165534973}, "2": {"0": -0.05000000074505806, "1": -0.10249999165534973}, "3": {"0": -0.05000000074505806, "1": 0.10249999165534973}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 5, "b_index": 9, "a_relative_pos": {"0": 0.4375000596046448, "1": -0.007500052452087402}, "b_relative_pos": {"0": -0.016490142792463303, "1": 0.13182595372200012}, "global_position": {"0": 1.065000057220459, "1": 0.9549999833106995}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": -0.4699999988079071, "motor_binding": 0}, {"a_index": 4, "b_index": 5, "a_relative_pos": {"0": 0.030052032321691513, "1": 0.15026019513607025}, "b_relative_pos": {"0": -0.3824999928474426, "1": 0.007499992847442627}, "global_position": {"0": 0.24500000476837158, "1": 0.9700000286102295}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": -0.7853981852531433, "motor_binding": 1}, {"a_index": 4, "b_index": 6, "a_relative_pos": {"0": 0.0017677444266155362, "1": -0.13258254528045654}, "b_relative_pos": {"0": -0.008838847279548645, "1": 0.14318913221359253}, "global_position": {"0": 0.42500001192092896, "1": 0.75}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": -1.5707963705062866, "motor_binding": 2}, {"a_index": 9, "b_index": 10, "a_relative_pos": {"0": -0.01054093986749649, "1": -0.1006920337677002}, "b_relative_pos": {"0": 0.021213142201304436, "1": 0.11313718557357788}, "global_position": {"0": 0.9649999737739563, "1": 0.7450000047683716}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 1.255398154258728, "motor_binding": 3}, {"a_index": 10, "b_index": 11, "a_relative_pos": {"0": 0.02828420139849186, "1": -0.13435019552707672}, "b_relative_pos": {"0": 0.014999985694885254, "1": 0.06499999761581421}, "global_position": {"0": 1.1449999809265137, "1": 0.574999988079071}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": true, "rotation": -0.7853981852531433, "motor_binding": 0}, {"a_index": 6, "b_index": 7, "a_relative_pos": {"0": -0.008838861249387264, "1": -0.11844038963317871}, "b_relative_pos": {"0": 0.017677662894129753, "1": 0.060104090720415115}, "global_position": {"0": 0.23999999463558197, "1": 0.5649999976158142}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": true, "rotation": 1.5707963705062866, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 0.0, "1": 0.0}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/mjc_hopper.json b/Kinetix/worlds/l/mjc_hopper.json new file mode 100644 index 0000000000000000000000000000000000000000..5a44e38e6d0a855da9dcd7fa0c69d0f0f0c52bad --- /dev/null +++ b/Kinetix/worlds/l/mjc_hopper.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3199999928474426, "1": 1.3225001096725464}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3199999928474426, "1": 1.0225000381469727}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3199999928474426, "1": 0.7224999666213989}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.4150000214576721, "1": 0.550000011920929}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.02564239501953, "inverse_inertia": 1082.2042236328125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.19500000774860382, "1": 0.07999999821186066}, "1": {"0": 0.19500000774860382, "1": -0.07999999821186066}, "2": {"0": -0.19500000774860382, "1": -0.07999999821186066}, "3": {"0": -0.19500000774860382, "1": 0.07999999821186066}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.87999963760376, "1": 0.9775000214576721}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000004768371582, "1": 0.5975000262260437}, "1": {"0": 0.20000004768371582, "1": -0.5975000262260437}, "2": {"0": -0.20000004768371582, "1": -0.5975000262260437}, "3": {"0": -0.20000004768371582, "1": 0.5975000262260437}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 6, "b_index": 7, "a_relative_pos": {"0": 0.004999995231628418, "1": -0.13749998807907104}, "b_relative_pos": {"0": -0.09000003337860107, "1": 0.034999966621398926}, "global_position": {"0": 0.32499998807907104, "1": 0.5849999785423279}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 5, "b_index": 6, "a_relative_pos": {"0": 0.010000020265579224, "1": -0.1325000524520874}, "b_relative_pos": {"0": 0.010000020265579224, "1": 0.16750001907348633}, "global_position": {"0": 0.33000001311302185, "1": 0.8899999856948853}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 1}, {"a_index": 4, "b_index": 5, "a_relative_pos": {"0": 0.010000020265579224, "1": -0.1725001335144043}, "b_relative_pos": {"0": 0.010000020265579224, "1": 0.12749993801116943}, "global_position": {"0": 0.33000001311302185, "1": 1.149999976158142}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 2}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 0.0, "1": 0.0}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/mjc_hopper_easy.json b/Kinetix/worlds/l/mjc_hopper_easy.json new file mode 100644 index 0000000000000000000000000000000000000000..e7c914dc889c800a4cbb924a14ade2c21a895d58 --- /dev/null +++ b/Kinetix/worlds/l/mjc_hopper_easy.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3199999928474426, "1": 1.3225001096725464}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3199999928474426, "1": 1.0225000381469727}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3199999928474426, "1": 0.7224999666213989}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.4150000214576721, "1": 0.550000011920929}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.02564239501953, "inverse_inertia": 1082.2042236328125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.19500000774860382, "1": 0.07999999821186066}, "1": {"0": 0.19500000774860382, "1": -0.07999999821186066}, "2": {"0": -0.19500000774860382, "1": -0.07999999821186066}, "3": {"0": -0.19500000774860382, "1": 0.07999999821186066}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.87999963760376, "1": 0.9775000214576721}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000004768371582, "1": 0.5975000262260437}, "1": {"0": 0.20000004768371582, "1": -0.5975000262260437}, "2": {"0": -0.20000004768371582, "1": -0.5975000262260437}, "3": {"0": -0.20000004768371582, "1": 0.5975000262260437}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 6, "b_index": 7, "a_relative_pos": {"0": 0.004999995231628418, "1": -0.13749998807907104}, "b_relative_pos": {"0": -0.09000003337860107, "1": 0.034999966621398926}, "global_position": {"0": 0.32499998807907104, "1": 0.5849999785423279}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 5, "b_index": 6, "a_relative_pos": {"0": 0.010000020265579224, "1": -0.1325000524520874}, "b_relative_pos": {"0": 0.010000020265579224, "1": 0.16750001907348633}, "global_position": {"0": 0.33000001311302185, "1": 0.8899999856948853}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 1}, {"a_index": 4, "b_index": 5, "a_relative_pos": {"0": 0.010000020265579224, "1": -0.1725001335144043}, "b_relative_pos": {"0": 0.010000020265579224, "1": 0.12749993801116943}, "global_position": {"0": 0.33000001311302185, "1": 1.149999976158142}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 2}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 0.0, "1": 0.0}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/mjc_swimmer.json b/Kinetix/worlds/l/mjc_swimmer.json new file mode 100644 index 0000000000000000000000000000000000000000..b338d015333143883c2ec1af74624aa1d910e3de --- /dev/null +++ b/Kinetix/worlds/l/mjc_swimmer.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3475000262260437, "1": 0.550000011920929}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 20.576128005981445, "inverse_inertia": 1383.8504638671875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20250001549720764, "1": 0.06000000238418579}, "1": {"0": 0.20250001549720764, "1": -0.06000000238418579}, "2": {"0": -0.20250001549720764, "1": -0.06000000238418579}, "3": {"0": -0.20250001549720764, "1": 0.06000000238418579}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.6475000381469727, "1": 0.550000011920929}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 20.576128005981445, "inverse_inertia": 1383.8504638671875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20250001549720764, "1": 0.06000000238418579}, "1": {"0": 0.20250001549720764, "1": -0.06000000238418579}, "2": {"0": -0.20250001549720764, "1": -0.06000000238418579}, "3": {"0": -0.20250001549720764, "1": 0.06000000238418579}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.9475001096725464, "1": 0.550000011920929}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 20.576128005981445, "inverse_inertia": 1383.8504638671875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20250001549720764, "1": 0.06000000238418579}, "1": {"0": 0.20250001549720764, "1": -0.06000000238418579}, "2": {"0": -0.20250001549720764, "1": -0.06000000238418579}, "3": {"0": -0.20250001549720764, "1": 0.06000000238418579}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.4150000214576721, "1": 0.550000011920929}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 23.8037109375, "inverse_inertia": 2387.634033203125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.1599999964237213, "1": 0.06564102321863174}, "1": {"0": 0.1599999964237213, "1": -0.06564102321863174}, "2": {"0": -0.1599999964237213, "1": -0.06564102321863174}, "3": {"0": -0.1599999964237213, "1": 0.06564102321863174}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.87999963760376, "1": 0.9775000214576721}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000004768371582, "1": 0.5975000262260437}, "1": {"0": 0.20000004768371582, "1": -0.5975000262260437}, "2": {"0": -0.20000004768371582, "1": -0.5975000262260437}, "3": {"0": -0.20000004768371582, "1": 0.5975000262260437}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.41499999165534973, "1": 0.550000011920929}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 23.8037109375, "inverse_inertia": 2387.634033203125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.1599999964237213, "1": 0.06564102321863174}, "1": {"0": 0.1599999964237213, "1": -0.06564102321863174}, "2": {"0": -0.1599999964237213, "1": -0.06564102321863174}, "3": {"0": -0.1599999964237213, "1": 0.06564102321863174}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3199999928474426, "1": 0.7224999666213989}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3199999928474426, "1": 1.3225001096725464}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 5, "a_relative_pos": {"0": 0.13749998807907104, "1": 0.0}, "b_relative_pos": {"0": -0.1625000238418579, "1": 0.0}, "global_position": {"0": 0.48500001430511475, "1": 0.550000011920929}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 5, "b_index": 6, "a_relative_pos": {"0": 0.16249996423721313, "1": -0.004999995231628418}, "b_relative_pos": {"0": -0.1375001072883606, "1": -0.004999995231628418}, "global_position": {"0": 0.8100000023841858, "1": 0.5450000166893005}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 1}, {"a_index": 4, "b_index": 11, "a_relative_pos": {"0": 0.00999993085861206, "1": 0.17250001430511475}, "b_relative_pos": {"0": 0.00999993085861206, "1": -0.12750005722045898}, "global_position": {"0": 0.35749995708465576, "1": 0.7225000262260437}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 2}, {"a_index": 9, "b_index": 10, "a_relative_pos": {"0": -0.08500009775161743, "1": 0.059999942779541016}, "b_relative_pos": {"0": 0.00999993085861206, "1": -0.11250001192092896}, "global_position": {"0": 0.3299998939037323, "1": 0.60999995470047}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": true, "rotation": 0.0, "motor_binding": 0}, {"a_index": 5, "b_index": 11, "a_relative_pos": {"0": 0.0, "1": 0.17250001430511475}, "b_relative_pos": {"0": 0.0, "1": -0.12750005722045898}, "global_position": {"0": 0.6475000381469727, "1": 0.7225000262260437}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 4, "b_index": 10, "a_relative_pos": {"0": 0.004999935626983643, "1": -0.14750003814697266}, "b_relative_pos": {"0": 0.004999935626983643, "1": 0.15250003337860107}, "global_position": {"0": 0.35249996185302734, "1": 0.4024999737739563}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 3}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 0.0, "1": 0.0}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/mjc_walker.json b/Kinetix/worlds/l/mjc_walker.json new file mode 100644 index 0000000000000000000000000000000000000000..050aec64bd24f05cdd6decc6d69aa5ea941fdbc9 --- /dev/null +++ b/Kinetix/worlds/l/mjc_walker.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3199999928474426, "1": 1.0225000381469727}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3199999928474426, "1": 1.0225000381469727}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3199999928474426, "1": 0.7224999666213989}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.4150000214576721, "1": 0.550000011920929}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 23.8037109375, "inverse_inertia": 2387.634033203125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1599999964237213, "1": 0.06564102321863174}, "1": {"0": 0.1599999964237213, "1": -0.06564102321863174}, "2": {"0": -0.1599999964237213, "1": -0.06564102321863174}, "3": {"0": -0.1599999964237213, "1": 0.06564102321863174}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.87999963760376, "1": 0.9775000214576721}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000004768371582, "1": 0.5975000262260437}, "1": {"0": 0.20000004768371582, "1": -0.5975000262260437}, "2": {"0": -0.20000004768371582, "1": -0.5975000262260437}, "3": {"0": -0.20000004768371582, "1": 0.5975000262260437}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.41499999165534973, "1": 0.550000011920929}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 23.8037109375, "inverse_inertia": 2387.634033203125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1599999964237213, "1": 0.06564102321863174}, "1": {"0": 0.1599999964237213, "1": -0.06564102321863174}, "2": {"0": -0.1599999964237213, "1": -0.06564102321863174}, "3": {"0": -0.1599999964237213, "1": 0.06564102321863174}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3199999928474426, "1": 0.7224999666213989}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3199999928474426, "1": 1.3225001096725464}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 6, "b_index": 7, "a_relative_pos": {"0": 0.004999995231628418, "1": -0.13749998807907104}, "b_relative_pos": {"0": -0.09000003337860107, "1": 0.034999966621398926}, "global_position": {"0": 0.32499998807907104, "1": 0.5849999785423279}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": true, "rotation": 0.0, "motor_binding": 0}, {"a_index": 5, "b_index": 6, "a_relative_pos": {"0": 0.010000020265579224, "1": -0.1325000524520874}, "b_relative_pos": {"0": 0.010000020265579224, "1": 0.16750001907348633}, "global_position": {"0": 0.33000001311302185, "1": 0.8899999856948853}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 1}, {"a_index": 4, "b_index": 11, "a_relative_pos": {"0": 0.00999993085861206, "1": 0.17250001430511475}, "b_relative_pos": {"0": 0.00999993085861206, "1": -0.12750005722045898}, "global_position": {"0": 0.3299999237060547, "1": 1.1950000524520874}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 2}, {"a_index": 9, "b_index": 10, "a_relative_pos": {"0": -0.08500009775161743, "1": 0.059999942779541016}, "b_relative_pos": {"0": 0.00999993085861206, "1": -0.11250001192092896}, "global_position": {"0": 0.3299998939037323, "1": 0.60999995470047}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": true, "rotation": 0.0, "motor_binding": 0}, {"a_index": 5, "b_index": 11, "a_relative_pos": {"0": 0.0, "1": 0.17250001430511475}, "b_relative_pos": {"0": 0.0, "1": -0.12750005722045898}, "global_position": {"0": 0.3199999928474426, "1": 1.1950000524520874}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 4, "b_index": 10, "a_relative_pos": {"0": 0.004999935626983643, "1": -0.14750003814697266}, "b_relative_pos": {"0": 0.004999935626983643, "1": 0.15250003337860107}, "global_position": {"0": 0.32499992847442627, "1": 0.875}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 3}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 0.0, "1": 0.0}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/mjc_walker_easy.json b/Kinetix/worlds/l/mjc_walker_easy.json new file mode 100644 index 0000000000000000000000000000000000000000..acecd0217528313b611b2e67b436666f1e647dab --- /dev/null +++ b/Kinetix/worlds/l/mjc_walker_easy.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3199999928474426, "1": 1.0225000381469727}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3199999928474426, "1": 1.0225000381469727}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3199999928474426, "1": 0.7224999666213989}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.4150000214576721, "1": 0.550000011920929}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 23.8037109375, "inverse_inertia": 2387.634033203125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1599999964237213, "1": 0.06564102321863174}, "1": {"0": 0.1599999964237213, "1": -0.06564102321863174}, "2": {"0": -0.1599999964237213, "1": -0.06564102321863174}, "3": {"0": -0.1599999964237213, "1": 0.06564102321863174}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.87999963760376, "1": 0.9775000214576721}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000004768371582, "1": 0.5975000262260437}, "1": {"0": 0.20000004768371582, "1": -0.5975000262260437}, "2": {"0": -0.20000004768371582, "1": -0.5975000262260437}, "3": {"0": -0.20000004768371582, "1": 0.5975000262260437}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.41499999165534973, "1": 0.550000011920929}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 23.8037109375, "inverse_inertia": 2387.634033203125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1599999964237213, "1": 0.06564102321863174}, "1": {"0": 0.1599999964237213, "1": -0.06564102321863174}, "2": {"0": -0.1599999964237213, "1": -0.06564102321863174}, "3": {"0": -0.1599999964237213, "1": 0.06564102321863174}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3199999928474426, "1": 0.7224999666213989}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3199999928474426, "1": 1.3225001096725464}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 6, "b_index": 7, "a_relative_pos": {"0": 0.004999995231628418, "1": -0.13749998807907104}, "b_relative_pos": {"0": -0.09000003337860107, "1": 0.034999966621398926}, "global_position": {"0": 0.32499998807907104, "1": 0.5849999785423279}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": true, "rotation": 0.0, "motor_binding": 0}, {"a_index": 5, "b_index": 6, "a_relative_pos": {"0": 0.010000020265579224, "1": -0.1325000524520874}, "b_relative_pos": {"0": 0.010000020265579224, "1": 0.16750001907348633}, "global_position": {"0": 0.33000001311302185, "1": 0.8899999856948853}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 1}, {"a_index": 4, "b_index": 11, "a_relative_pos": {"0": 0.00999993085861206, "1": 0.17250001430511475}, "b_relative_pos": {"0": 0.00999993085861206, "1": -0.12750005722045898}, "global_position": {"0": 0.3299999237060547, "1": 1.1950000524520874}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 2}, {"a_index": 9, "b_index": 10, "a_relative_pos": {"0": -0.08500009775161743, "1": 0.059999942779541016}, "b_relative_pos": {"0": 0.00999993085861206, "1": -0.11250001192092896}, "global_position": {"0": 0.3299998939037323, "1": 0.60999995470047}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": true, "rotation": 0.0, "motor_binding": 0}, {"a_index": 5, "b_index": 11, "a_relative_pos": {"0": 0.0, "1": 0.17250001430511475}, "b_relative_pos": {"0": 0.0, "1": -0.12750005722045898}, "global_position": {"0": 0.3199999928474426, "1": 1.1950000524520874}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 4, "b_index": 10, "a_relative_pos": {"0": 0.004999935626983643, "1": -0.14750003814697266}, "b_relative_pos": {"0": 0.004999935626983643, "1": 0.15250003337860107}, "global_position": {"0": 0.32499992847442627, "1": 0.875}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 3}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 0.0, "1": 0.0}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/pr.json b/Kinetix/worlds/l/pr.json new file mode 100644 index 0000000000000000000000000000000000000000..0e88dab36465dcf67bc68b7fefc28389900144de --- /dev/null +++ b/Kinetix/worlds/l/pr.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.2071068286895752, "1": 0.8899999856948853}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.428299903869629, "inverse_inertia": 38.33823013305664, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071033120155334, "1": 0.05499979108572006}, "1": {"0": 0.7071033120155334, "1": -0.05499979108572006}, "2": {"0": -0.7071033120155334, "1": -0.05499979108572006}, "3": {"0": -0.7071033120155334, "1": 0.05499979108572006}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.807105541229248, "1": 0.8899999856948853}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.428343296051025, "inverse_inertia": 38.33877944946289, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071006298065186, "1": 0.05499962344765663}, "1": {"0": 0.7071006298065186, "1": -0.05499962344765663}, "2": {"0": -0.7071006298065186, "1": -0.05499962344765663}, "3": {"0": -0.7071006298065186, "1": 0.05499962344765663}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.5799999833106995, "1": 1.0225000381469727}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 43.0107536315918, "inverse_inertia": 11093.583984375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.07499998807907104, "1": 0.07750001549720764}, "1": {"0": 0.07499998807907104, "1": -0.07750001549720764}, "2": {"0": -0.07499998807907104, "1": -0.07750001549720764}, "3": {"0": -0.07499998807907104, "1": 0.07750001549720764}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.6775000095367432, "1": 0.6174999475479126}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.513596057891846, "inverse_inertia": 246.5325164794922, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.17249999940395355, "1": 0.2225000262260437}, "1": {"0": 0.17249999940395355, "1": -0.2225000262260437}, "2": {"0": -0.17249999940395355, "1": -0.2225000262260437}, "3": {"0": -0.17249999940395355, "1": 0.2225000262260437}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.429999828338623, "1": 1.092106819152832}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1299998164176941, "1": 0.7071060538291931}, "1": {"0": 0.1299998164176941, "1": -0.7071060538291931}, "2": {"0": -0.1299998164176941, "1": -0.7071060538291931}, "3": {"0": -0.1299998164176941, "1": 0.7071060538291931}}, "radius": 0.10000000149011612, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 4.329999923706055, "1": 0.6174999475479126}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.513596057891846, "inverse_inertia": 246.5325164794922, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.17249999940395355, "1": 0.2225000262260437}, "1": {"0": 0.17249999940395355, "1": -0.2225000262260437}, "2": {"0": -0.17249999940395355, "1": -0.2225000262260437}, "3": {"0": -0.17249999940395355, "1": 0.2225000262260437}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.440000057220459, "1": 1.0225000381469727}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 43.0107536315918, "inverse_inertia": 11093.583984375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.07499998807907104, "1": 0.07750001549720764}, "1": {"0": 0.07499998807907104, "1": -0.07750001549720764}, "2": {"0": -0.07499998807907104, "1": -0.07750001549720764}, "3": {"0": -0.07499998807907104, "1": 0.07750001549720764}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 2.2571067810058594, "1": 3.652893304824829}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.5000000596046448, "inverse_inertia": 1.500000238418579, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.7071067690849304, "1": 0.7071067690849304}, "1": {"0": 0.7071067690849304, "1": -0.7071067690849304}, "2": {"0": -0.7071067690849304, "1": -0.7071067690849304}, "3": {"0": -0.7071067690849304, "1": 0.7071067690849304}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 1.2100000381469727, "1": 0.8899999856948853}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.16224978864192963, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.8099985122680664, "1": 0.8899999856948853}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.16224978864192963, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.424999952316284, "1": 1.96999990940094}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 8.545234680175781, "inverse_inertia": 917.6092529296875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.19300256669521332, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 12, "a_relative_pos": {"0": 0.002893209457397461, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 1.2100000381469727, "1": 0.8899999856948853}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 5, "b_index": 13, "a_relative_pos": {"0": 0.0028929710388183594, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 3.8099985122680664, "1": 0.8899999856948853}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 9, "b_index": 13, "a_relative_pos": {"0": 0.014305956661701202, "1": 0.025829315185546875}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 4.344305992126465, "1": 0.6433292627334595}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.363639235496521, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 3}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 14, "relative_position": {"0": 0.1926882266998291, "1": -0.01101076602935791}, "rotation": 3.1986734867095947, "power": 0.11702428758144379, "global_position": {"0": 2.6176881790161133, "1": 1.958989143371582}, "active": true, "thruster_binding": 1}, {"object_index": 14, "relative_position": {"0": -0.19300246238708496, "1": 0.0}, "rotation": 6.283185005187988, "power": 0.11702428758144379, "global_position": {"0": 2.231997489929199, "1": 1.96999990940094}, "active": true, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/l/rail.json b/Kinetix/worlds/l/rail.json new file mode 100644 index 0000000000000000000000000000000000000000..3b7d33da49cb88934749375110914df921ee63de --- /dev/null +++ b/Kinetix/worlds/l/rail.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.1421058177948, "1": 1.8975012302398682}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7070909738540649, "1": 0.05749901756644249}, "1": {"0": 0.7070909738540649, "1": -0.05749901756644249}, "2": {"0": -0.7070909738540649, "1": -0.05749901756644249}, "3": {"0": -0.7070909738540649, "1": 0.05749901756644249}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.427499771118164, "1": 2.8324999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 15.48586654663086, "inverse_inertia": 477.40631103515625, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.052500009536743164, "1": 0.3075000047683716}, "1": {"0": 0.052500009536743164, "1": -0.3075000047683716}, "2": {"0": -0.052500009536743164, "1": -0.3075000047683716}, "3": {"0": -0.052500009536743164, "1": 0.3075000047683716}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.7421067953109741, "1": 1.8975012302398682}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7070928812026978, "1": 0.05749913677573204}, "1": {"0": 0.7070928812026978, "1": -0.05749913677573204}, "2": {"0": -0.7070928812026978, "1": -0.05749913677573204}, "3": {"0": -0.7070928812026978, "1": 0.05749913677573204}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.242105722427368, "1": 1.8975012302398682}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.707089900970459, "1": 0.05749895051121712}, "1": {"0": 0.707089900970459, "1": -0.05749895051121712}, "2": {"0": -0.707089900970459, "1": -0.05749895051121712}, "3": {"0": -0.707089900970459, "1": 0.05749895051121712}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.6421053409576416, "1": 2.897500514984131}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.7070991396903992, "1": 0.05749952793121338}, "1": {"0": 0.7070991396903992, "1": -0.05749952793121338}, "2": {"0": -0.7070991396903992, "1": -0.05749952793121338}, "3": {"0": -0.7070991396903992, "1": 0.05749952793121338}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.1974997520446777, "1": 2.572499990463257}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.372499942779541}, "1": {"0": 0.05000000074505806, "1": -0.372499942779541}, "2": {"0": -0.05000000074505806, "1": -0.372499942779541}, "3": {"0": -0.05000000074505806, "1": 0.372499942779541}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.56499981880188, "1": 2.257499933242798}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.41499996185302734, "1": 0.052500009536743164}, "1": {"0": 0.41499996185302734, "1": -0.052500009536743164}, "2": {"0": -0.41499996185302734, "1": -0.052500009536743164}, "3": {"0": -0.41499996185302734, "1": 0.052500009536743164}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.9974989891052246, "1": 2.572499990463257}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.372499942779541}, "1": {"0": 0.05000000074505806, "1": -0.372499942779541}, "2": {"0": -0.05000000074505806, "1": -0.372499942779541}, "3": {"0": -0.05000000074505806, "1": 0.372499942779541}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 2.424999713897705, "1": 3.0850000381469727}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.03575897216797, "inverse_inertia": 3231.38623046875, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.14089004695415497, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.424999713897705, "1": 2.585000514984131}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.03575897216797, "inverse_inertia": 3231.38623046875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.14089004695415497, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 2.4549999237060547, "1": 1.3700000047683716}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.16378340125083923, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 4.234999656677246, "1": 3.119999885559082}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 8.985466957092285, "inverse_inertia": 1014.5914306640625, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.1882152110338211, "role": 2, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 5, "b_index": 13, "a_relative_pos": {"0": -0.0025000572204589844, "1": -0.2474994659423828}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.424999713897705, "1": 2.585000514984131}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 5, "b_index": 12, "a_relative_pos": {"0": -0.0025000572204589844, "1": 0.252500057220459}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.424999713897705, "1": 3.0850000381469727}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 2.0, "motor_power": 2.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 5, "b_index": 7, "a_relative_pos": {"0": 0.012499988079071045, "1": 0.4199998378753662}, "b_relative_pos": {"0": -0.5971067547798157, "1": -0.0074994564056396484}, "global_position": {"0": 2.43999981880188, "1": 3.25249981880188}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 1}, {"a_index": 5, "b_index": 8, "a_relative_pos": {"0": 0.0, "1": 0.18000006675720215}, "b_relative_pos": {"0": -0.019999980926513672, "1": -0.31999993324279785}, "global_position": {"0": 2.427499771118164, "1": 3.012500047683716}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 8, "relative_position": {"0": -0.44499996304512024, "1": -0.35000014305114746}, "rotation": 1.5406547784805298, "power": 0.7124999761581421, "global_position": {"0": 3.1971054077148438, "1": 2.5475003719329834}, "active": false, "thruster_binding": 0}, {"object_index": 8, "relative_position": {"0": 0.46000003814697266, "1": -0.35500001907348633}, "rotation": 1.5333606004714966, "power": 0.7124999761581421, "global_position": {"0": 4.102105140686035, "1": 2.5425004959106445}, "active": false, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/m/arm_hard.json b/Kinetix/worlds/m/arm_hard.json new file mode 100644 index 0000000000000000000000000000000000000000..b4c9e2dade8955704745c40897d1bf33fc888820 --- /dev/null +++ b/Kinetix/worlds/m/arm_hard.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.4674997329711914, "1": 2.1475000381469727}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.7379653453826904, "inverse_inertia": 25.704465866088867, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1025000810623169, "1": 0.6525000333786011}, "1": {"0": 0.1025000810623169, "1": -0.6525000333786011}, "2": {"0": -0.1025000810623169, "1": -0.6525000333786011}, "3": {"0": -0.1025000810623169, "1": 0.6525000333786011}}, "radius": 0.10000000149011612, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 2.867499351501465, "1": 1.147499918937683}, "rotation": 0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.7379653453826904, "inverse_inertia": 25.704465866088867, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1025000810623169, "1": 0.6525000333786011}, "1": {"0": 0.1025000810623169, "1": -0.6525000333786011}, "2": {"0": -0.1025000810623169, "1": -0.6525000333786011}, "3": {"0": -0.1025000810623169, "1": 0.6525000333786011}}, "radius": 0.10000000149011612, "role": 2, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 2.4699997901916504, "1": 2.625}, "rotation": 0.2842763066291809, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.34438350796699524, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5149998664855957, "1": 3.3350014686584473}, "rotation": 5.2330169677734375, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.19313198328018188, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 4.4149980545043945, "1": 4.035000801086426}, "rotation": 5.2330169677734375, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.19313198328018188, "role": 3, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 6, "a_relative_pos": {"0": 0.0025000572204589844, "1": 0.47749996185302734}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.4699997901916504, "1": 2.625}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.2842763066291809, "motor_binding": 0}, {"a_index": 4, "b_index": 5, "a_relative_pos": {"0": -0.017499923706054688, "1": -0.5775001049041748}, "b_relative_pos": {"0": 0.0035358965396881104, "1": 0.5939693450927734}, "global_position": {"0": 2.4499998092651367, "1": 1.5699999332427979}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.7853981852531433, "motor_binding": 1}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 5, "relative_position": {"0": -0.08777028322219849, "1": -0.258503258228302}, "rotation": -1.898115873336792, "power": 1.1007578372955322, "global_position": {"0": 2.9882256984710693, "1": 0.9026475548744202}, "active": false, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/m/arm_left.json b/Kinetix/worlds/m/arm_left.json new file mode 100644 index 0000000000000000000000000000000000000000..0b713730af6fc9f1f0981358d4b8c105e245d306 --- /dev/null +++ b/Kinetix/worlds/m/arm_left.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.4674997329711914, "1": 2.1475000381469727}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.7379653453826904, "inverse_inertia": 25.704465866088867, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1025000810623169, "1": 0.6525000333786011}, "1": {"0": 0.1025000810623169, "1": -0.6525000333786011}, "2": {"0": -0.1025000810623169, "1": -0.6525000333786011}, "3": {"0": -0.1025000810623169, "1": 0.6525000333786011}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.867499351501465, "1": 1.147499918937683}, "rotation": 0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.7379653453826904, "inverse_inertia": 25.704465866088867, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1025000810623169, "1": 0.6525000333786011}, "1": {"0": 0.1025000810623169, "1": -0.6525000333786011}, "2": {"0": -0.1025000810623169, "1": -0.6525000333786011}, "3": {"0": -0.1025000810623169, "1": 0.6525000333786011}}, "radius": 0.10000000149011612, "role": 1, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 2.4699997901916504, "1": 2.625}, "rotation": 0.2842763066291809, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.34438350796699524, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.5149999856948853, "1": 4.035000801086426}, "rotation": 5.2330169677734375, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.19313198328018188, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 4.4149980545043945, "1": 4.035000801086426}, "rotation": 5.2330169677734375, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.19313198328018188, "role": 3, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 6, "a_relative_pos": {"0": 0.0025000572204589844, "1": 0.47749996185302734}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.4699997901916504, "1": 2.625}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.2842763066291809, "motor_binding": 0}, {"a_index": 4, "b_index": 5, "a_relative_pos": {"0": -0.017499923706054688, "1": -0.5775001049041748}, "b_relative_pos": {"0": 0.0035358965396881104, "1": 0.5939693450927734}, "global_position": {"0": 2.4499998092651367, "1": 1.5699999332427979}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.7853981852531433, "motor_binding": 1}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 5, "relative_position": {"0": -0.08777028322219849, "1": -0.258503258228302}, "rotation": -1.898115873336792, "power": 1.1007578372955322, "global_position": {"0": 2.9882256984710693, "1": 0.9026475548744202}, "active": false, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/m/arm_right.json b/Kinetix/worlds/m/arm_right.json new file mode 100644 index 0000000000000000000000000000000000000000..a83a8e1a28d1935c8077cedc20e82a3ce287cc8e --- /dev/null +++ b/Kinetix/worlds/m/arm_right.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.4674997329711914, "1": 2.1475000381469727}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.7379653453826904, "inverse_inertia": 25.704465866088867, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1025000810623169, "1": 0.6525000333786011}, "1": {"0": 0.1025000810623169, "1": -0.6525000333786011}, "2": {"0": -0.1025000810623169, "1": -0.6525000333786011}, "3": {"0": -0.1025000810623169, "1": 0.6525000333786011}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.867499351501465, "1": 1.147499918937683}, "rotation": 0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.7379653453826904, "inverse_inertia": 25.704465866088867, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1025000810623169, "1": 0.6525000333786011}, "1": {"0": 0.1025000810623169, "1": -0.6525000333786011}, "2": {"0": -0.1025000810623169, "1": -0.6525000333786011}, "3": {"0": -0.1025000810623169, "1": 0.6525000333786011}}, "radius": 0.10000000149011612, "role": 1, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 2.4699997901916504, "1": 2.625}, "rotation": 0.2842763066291809, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.34438350796699524, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.5149999856948853, "1": 4.035000801086426}, "rotation": 5.2330169677734375, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.19313198328018188, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 4.4149980545043945, "1": 4.035000801086426}, "rotation": 5.2330169677734375, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.19313198328018188, "role": 2, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 6, "a_relative_pos": {"0": 0.0025000572204589844, "1": 0.47749996185302734}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.4699997901916504, "1": 2.625}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.2842763066291809, "motor_binding": 0}, {"a_index": 4, "b_index": 5, "a_relative_pos": {"0": -0.017499923706054688, "1": -0.5775001049041748}, "b_relative_pos": {"0": 0.0035358965396881104, "1": 0.5939693450927734}, "global_position": {"0": 2.4499998092651367, "1": 1.5699999332427979}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.7853981852531433, "motor_binding": 1}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 5, "relative_position": {"0": -0.08777028322219849, "1": -0.258503258228302}, "rotation": -1.898115873336792, "power": 1.1007578372955322, "global_position": {"0": 2.9882256984710693, "1": 0.9026475548744202}, "active": false, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/m/arm_up.json b/Kinetix/worlds/m/arm_up.json new file mode 100644 index 0000000000000000000000000000000000000000..bbca1c5559e911a1420cb6ddc840ba19f2223487 --- /dev/null +++ b/Kinetix/worlds/m/arm_up.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.4674997329711914, "1": 2.1475000381469727}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.7379653453826904, "inverse_inertia": 25.704465866088867, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1025000810623169, "1": 0.6525000333786011}, "1": {"0": 0.1025000810623169, "1": -0.6525000333786011}, "2": {"0": -0.1025000810623169, "1": -0.6525000333786011}, "3": {"0": -0.1025000810623169, "1": 0.6525000333786011}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.0674991607666016, "1": 1.5475000143051147}, "rotation": 1.5707963705062866, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.7379653453826904, "inverse_inertia": 25.704465866088867, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1025000810623169, "1": 0.6525000333786011}, "1": {"0": 0.1025000810623169, "1": -0.6525000333786011}, "2": {"0": -0.1025000810623169, "1": -0.6525000333786011}, "3": {"0": -0.1025000810623169, "1": 0.6525000333786011}}, "radius": 0.10000000149011612, "role": 1, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 2.4699997901916504, "1": 2.625}, "rotation": 0.2842763066291809, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.34438350796699524, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.4149999618530273, "1": 4.635000228881836}, "rotation": 5.2330169677734375, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.19313198328018188, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 4.4149980545043945, "1": 4.035000801086426}, "rotation": 5.2330169677734375, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.19313198328018188, "role": 2, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 6, "a_relative_pos": {"0": 0.0025000572204589844, "1": 0.47749996185302734}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.4699997901916504, "1": 2.625}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.2842763066291809, "motor_binding": 0}, {"a_index": 4, "b_index": 5, "a_relative_pos": {"0": -0.017499923706054688, "1": -0.5775001049041748}, "b_relative_pos": {"0": 0.0035358965396881104, "1": 0.5939693450927734}, "global_position": {"0": 2.4499998092651367, "1": 1.5699999332427979}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.7853981852531433, "motor_binding": 1}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 5, "relative_position": {"0": -0.08777028322219849, "1": -0.258503258228302}, "rotation": -1.898115873336792, "power": 1.1007578372955322, "global_position": {"0": 3.326002359390259, "1": 1.459729790687561}, "active": false, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/m/h0_unicycle.json b/Kinetix/worlds/m/h0_unicycle.json new file mode 100644 index 0000000000000000000000000000000000000000..d39033b97d37193599ca005018b5e5612bfbebed --- /dev/null +++ b/Kinetix/worlds/m/h0_unicycle.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.4474999904632568, "1": 1.2400000095367432}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 4.5075507164001465, "inverse_inertia": 80.81366729736328, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.3824999928474426, "1": 0.14499998092651367}, "1": {"0": 0.3824999928474426, "1": -0.14499998092651367}, "2": {"0": -0.3824999928474426, "1": -0.14499998092651367}, "3": {"0": -0.3824999928474426, "1": 0.14499998092651367}}, "radius": 0.20000000298023224, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 1.4175000190734863, "1": 0.8799999952316284}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 10.610082626342773, "inverse_inertia": 287.0661315917969, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.07249999046325684, "1": 0.32499995827674866}, "1": {"0": 0.07249999046325684, "1": -0.32499995827674866}, "2": {"0": -0.07249999046325684, "1": -0.32499995827674866}, "3": {"0": -0.07249999046325684, "1": 0.32499995827674866}}, "radius": 0.20000000298023224, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 1.409999966621399, "1": 0.5999999642372131}, "rotation": 1.9283374547958374, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.617667198181152, "inverse_inertia": 550.3255615234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.21931715309619904, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.2249999046325684, "1": 1.5649999380111694}, "rotation": 2.1468002796173096, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.3473110496997833, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 3.536154270172119, "1": 2.703278064727783}, "rotation": 2.237305164337158, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 1.5651425123214722, "inverse_inertia": 30.783475875854492, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.45097047090530396, "role": 2, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 5, "b_index": 6, "a_relative_pos": {"0": -0.007500052452087402, "1": -0.2800000309944153}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 1.409999966621399, "1": 0.5999999642372131}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.7999999523162842, "motor_power": 1.7999999523162842, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 1.5707963705062866, "is_fixed_joint": false, "rotation": 1.9283374547958374, "motor_binding": 0}, {"a_index": 4, "b_index": 5, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.029999971389770508, "1": 0.36000001430511475}, "global_position": {"0": 1.4474999904632568, "1": 1.2400000095367432}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 1.5707963705062866, "is_fixed_joint": true, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 4, "relative_position": {"0": -0.13755372166633606, "1": 0.11335179209709167}, "rotation": -0.6892372965812683, "power": 0.3028743267059326, "global_position": {"0": 1.3099462985992432, "1": 1.3533518314361572}, "active": false, "thruster_binding": 3}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/m/h10_thrust_right_easy.json b/Kinetix/worlds/m/h10_thrust_right_easy.json new file mode 100644 index 0000000000000000000000000000000000000000..8dc12d019c80a12dfa900f3c1cfc4936b6219af1 --- /dev/null +++ b/Kinetix/worlds/m/h10_thrust_right_easy.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.1899999380111694, "1": 0.6599999666213989}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 9.803923606872559, "inverse_inertia": 572.2134399414062, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1499999761581421, "1": 0.17000000178813934}, "1": {"0": 0.1499999761581421, "1": -0.17000000178813934}, "2": {"0": -0.1499999761581421, "1": -0.17000000178813934}, "3": {"0": -0.1499999761581421, "1": 0.17000000178813934}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 3.559999942779541, "1": 4.460000038146973}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.23000001907348633, "1": 0.25}, "1": {"0": 0.23000001907348633, "1": -0.25}, "2": {"0": -0.23000001907348633, "1": -0.25}, "3": {"0": -0.23000001907348633, "1": 0.25}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 4, "relative_position": {"0": 0.0, "1": -0.12999999523162842}, "rotation": 1.5707963705062866, "power": 0.20000000298023224, "global_position": {"0": 1.1899999380111694, "1": 0.5299999713897705}, "active": true, "thruster_binding": 0}, {"object_index": 4, "relative_position": {"0": -0.11500000953674316, "1": 0.0}, "rotation": 6.283185005187988, "power": 0.20000000298023224, "global_position": {"0": 1.0749999284744263, "1": 0.6599999666213989}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/m/h11_thrust_left_easy.json b/Kinetix/worlds/m/h11_thrust_left_easy.json new file mode 100644 index 0000000000000000000000000000000000000000..83bcfabf3743f81c257a6a003a199ad47fc190fa --- /dev/null +++ b/Kinetix/worlds/m/h11_thrust_left_easy.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.389997959136963, "1": 0.6599999666213989}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 9.803923606872559, "inverse_inertia": 572.2134399414062, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1499999761581421, "1": 0.17000000178813934}, "1": {"0": 0.1499999761581421, "1": -0.17000000178813934}, "2": {"0": -0.1499999761581421, "1": -0.17000000178813934}, "3": {"0": -0.1499999761581421, "1": 0.17000000178813934}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.7600010633468628, "1": 4.460000038146973}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.23000001907348633, "1": 0.25}, "1": {"0": 0.23000001907348633, "1": -0.25}, "2": {"0": -0.23000001907348633, "1": -0.25}, "3": {"0": -0.23000001907348633, "1": 0.25}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 4, "relative_position": {"0": 0.0, "1": -0.12999999523162842}, "rotation": 1.5707963705062866, "power": 0.20000000298023224, "global_position": {"0": 4.389997959136963, "1": 0.5299999713897705}, "active": true, "thruster_binding": 0}, {"object_index": 4, "relative_position": {"0": 0.10000181198120117, "1": 0.0}, "rotation": 3.1415927410125732, "power": 0.10199997574090958, "global_position": {"0": 4.489999771118164, "1": 0.6599999666213989}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/m/h12_thrustfall_left.json b/Kinetix/worlds/m/h12_thrustfall_left.json new file mode 100644 index 0000000000000000000000000000000000000000..071d512e47e0553923bdeb72b3dc732d287b95a5 --- /dev/null +++ b/Kinetix/worlds/m/h12_thrustfall_left.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.1475000381469727, "1": 4.760000228881836}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 11.337858200073242, "inverse_inertia": 765.9629516601562, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1575000286102295, "1": 0.1400001049041748}, "1": {"0": 0.1575000286102295, "1": -0.1400001049041748}, "2": {"0": -0.1575000286102295, "1": -0.1400001049041748}, "3": {"0": -0.1575000286102295, "1": 0.1400001049041748}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.7899999618530273, "1": 2.380000114440918}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.51041316986084, "inverse_inertia": 82.47988891601562, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.47999998927116394, "1": 0.08000004291534424}, "1": {"0": 0.47999998927116394, "1": -0.08000004291534424}, "2": {"0": -0.47999998927116394, "1": -0.08000004291534424}, "3": {"0": -0.47999998927116394, "1": 0.08000004291534424}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.73499995470047, "1": 2.5799999237060547}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.2704162895679474, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 3.9349982738494873, "1": 2.5799999237060547}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.2704162895679474, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 4, "relative_position": {"0": 0.13749980926513672, "1": 0.0}, "rotation": 3.1415927410125732, "power": 0.08820008486509323, "global_position": {"0": 2.2849998474121094, "1": 4.760000228881836}, "active": true, "thruster_binding": 0}, {"object_index": 4, "relative_position": {"0": -0.13750004768371582, "1": 0.0}, "rotation": 6.283185005187988, "power": 0.08820008486509323, "global_position": {"0": 2.009999990463257, "1": 4.760000228881836}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/m/h13_thrustfall_right.json b/Kinetix/worlds/m/h13_thrustfall_right.json new file mode 100644 index 0000000000000000000000000000000000000000..10a215bfa120bd19a70bc1fe98787a2198d81b67 --- /dev/null +++ b/Kinetix/worlds/m/h13_thrustfall_right.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.1475000381469727, "1": 4.760000228881836}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 11.337858200073242, "inverse_inertia": 765.9629516601562, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1575000286102295, "1": 0.1400001049041748}, "1": {"0": 0.1575000286102295, "1": -0.1400001049041748}, "2": {"0": -0.1575000286102295, "1": -0.1400001049041748}, "3": {"0": -0.1575000286102295, "1": 0.1400001049041748}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.7899999618530273, "1": 2.380000114440918}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.51041316986084, "inverse_inertia": 82.47988891601562, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.47999998927116394, "1": 0.08000004291534424}, "1": {"0": 0.47999998927116394, "1": -0.08000004291534424}, "2": {"0": -0.47999998927116394, "1": -0.08000004291534424}, "3": {"0": -0.47999998927116394, "1": 0.08000004291534424}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.73499995470047, "1": 2.5799999237060547}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.2704162895679474, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 3.9349982738494873, "1": 2.5799999237060547}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.2704162895679474, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 4, "relative_position": {"0": 0.13749980926513672, "1": 0.0}, "rotation": 3.1415927410125732, "power": 0.08820008486509323, "global_position": {"0": 2.2849998474121094, "1": 4.760000228881836}, "active": true, "thruster_binding": 0}, {"object_index": 4, "relative_position": {"0": -0.13750004768371582, "1": 0.0}, "rotation": 6.283185005187988, "power": 0.08820008486509323, "global_position": {"0": 2.009999990463257, "1": 4.760000228881836}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/m/h14_thrustblock.json b/Kinetix/worlds/m/h14_thrustblock.json new file mode 100644 index 0000000000000000000000000000000000000000..cea3f11b9d648b40f88298da46482e9ead24b822 --- /dev/null +++ b/Kinetix/worlds/m/h14_thrustblock.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.8675000667572021, "1": 0.6775000095367432}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 11.366864204406738, "inverse_inertia": 741.1158447265625, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.17250001430511475, "1": 0.1274999976158142}, "1": {"0": 0.17250001430511475, "1": -0.1274999976158142}, "2": {"0": -0.17250001430511475, "1": -0.1274999976158142}, "3": {"0": -0.17250001430511475, "1": 0.1274999976158142}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.9149999618530273, "1": 4.574999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 12.091570854187012, "inverse_inertia": 1837.27978515625, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.1622496247291565, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 4, "relative_position": {"0": 0.16250014305114746, "1": 0.0}, "rotation": 3.1415927410125732, "power": 0.08797501027584076, "global_position": {"0": 2.0300002098083496, "1": 0.6775000095367432}, "active": true, "thruster_binding": 0}, {"object_index": 4, "relative_position": {"0": -0.15249967575073242, "1": 0.0}, "rotation": 6.283185005187988, "power": 0.08797501027584076, "global_position": {"0": 1.7150003910064697, "1": 0.6775000095367432}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/m/h15_thrustshoot.json b/Kinetix/worlds/m/h15_thrustshoot.json new file mode 100644 index 0000000000000000000000000000000000000000..b2b71af80717f43546c9fa85f680f4813d341a36 --- /dev/null +++ b/Kinetix/worlds/m/h15_thrustshoot.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.8125, "1": 1.9700000286102295}, "rotation": 0.3400000035762787, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.42249998450279236, "1": 0.08500003069639206}, "1": {"0": 0.42249998450279236, "1": -0.08500003069639206}, "2": {"0": -0.42249998450279236, "1": -0.08500003069639206}, "3": {"0": -0.42249998450279236, "1": 0.08500003069639206}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.4300000071525574, "1": 2.0225000381469727}, "rotation": 0.3400000035762787, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 46.082881927490234, "inverse_inertia": 12676.0732421875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.07000000774860382, "1": 0.0775001049041748}, "1": {"0": 0.07000000774860382, "1": -0.0775001049041748}, "2": {"0": -0.07000000774860382, "1": -0.0775001049041748}, "3": {"0": -0.07000000774860382, "1": 0.0775001049041748}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.6949999928474426, "1": 2.1499998569488525}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 43.0148811340332, "inverse_inertia": 23251.3046875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.08602321892976761, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 2.7250001430511475, "1": 0.7999999523162842}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 4.59653377532959, "inverse_inertia": 265.50384521484375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.26315391063690186, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 5, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.10000000149011612, "global_position": {"0": 0.4300000071525574, "1": 2.0225000381469727}, "active": true, "thruster_binding": 0}, {"object_index": 4, "relative_position": {"0": -0.15249967575073242, "1": 0.0}, "rotation": 6.283185005187988, "power": 0.08797501027584076, "global_position": {"0": 0.6687301993370056, "1": 1.9191433191299438}, "active": false, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/m/h16_thrustcontrol_right.json b/Kinetix/worlds/m/h16_thrustcontrol_right.json new file mode 100644 index 0000000000000000000000000000000000000000..5c009dc975768d4bad765d40233a6e95d343f3b5 --- /dev/null +++ b/Kinetix/worlds/m/h16_thrustcontrol_right.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.9524998664855957, "1": 0.9599999785423279}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 8.080809593200684, "inverse_inertia": 388.6173095703125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.18749994039535522, "1": 0.16500002145767212}, "1": {"0": 0.18749994039535522, "1": -0.16500002145767212}, "2": {"0": -0.18749994039535522, "1": -0.16500002145767212}, "3": {"0": -0.18749994039535522, "1": 0.16500002145767212}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 2.3071067333221436, "1": 2.7174997329711914}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071059346199036, "1": 0.0774998813867569}, "1": {"0": 0.7071059346199036, "1": -0.0774998813867569}, "2": {"0": -0.7071059346199036, "1": -0.0774998813867569}, "3": {"0": -0.7071059346199036, "1": 0.0774998813867569}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 3.2699999809265137, "1": 1.2799999713897705}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.6148372888565063, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.494999885559082, "1": 2.3450000286102295}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.27499979734420776, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 4, "relative_position": {"0": 0.0, "1": -0.125}, "rotation": 1.5707963705062866, "power": 0.15000000596046448, "global_position": {"0": 1.9524998664855957, "1": 0.8349999785423279}, "active": true, "thruster_binding": 0}, {"object_index": 4, "relative_position": {"0": -0.16749989986419678, "1": 0.0}, "rotation": 6.283185005187988, "power": 0.15000000596046448, "global_position": {"0": 1.784999966621399, "1": 0.9599999785423279}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/m/h17_thrustcontrol_left.json b/Kinetix/worlds/m/h17_thrustcontrol_left.json new file mode 100644 index 0000000000000000000000000000000000000000..8bdbf856b5bbbdfe40196fdaeefb11b294ae5bc8 --- /dev/null +++ b/Kinetix/worlds/m/h17_thrustcontrol_left.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.2524986267089844, "1": 0.9599999785423279}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 8.080809593200684, "inverse_inertia": 388.6173095703125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.18749994039535522, "1": 0.16500002145767212}, "1": {"0": 0.18749994039535522, "1": -0.16500002145767212}, "2": {"0": -0.18749994039535522, "1": -0.16500002145767212}, "3": {"0": -0.18749994039535522, "1": 0.16500002145767212}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 3.1071059703826904, "1": 2.7174997329711914}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071046233177185, "1": 0.07749971747398376}, "1": {"0": 0.7071046233177185, "1": -0.07749971747398376}, "2": {"0": -0.7071046233177185, "1": -0.07749971747398376}, "3": {"0": -0.7071046233177185, "1": 0.07749971747398376}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 1.1700009107589722, "1": 1.2799999713897705}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.6148372888565063, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.2950018346309662, "1": 2.3450000286102295}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.27499979734420776, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 4, "relative_position": {"0": 0.0, "1": -0.125}, "rotation": 1.5707963705062866, "power": 0.15000000596046448, "global_position": {"0": 3.2524986267089844, "1": 0.8349999785423279}, "active": true, "thruster_binding": 1}, {"object_index": 4, "relative_position": {"0": 0.15250134468078613, "1": 0.0}, "rotation": 3.1415927410125732, "power": 0.1237499788403511, "global_position": {"0": 3.4049999713897705, "1": 0.9599999785423279}, "active": true, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/m/h18_thrust_right_very_easy.json b/Kinetix/worlds/m/h18_thrust_right_very_easy.json new file mode 100644 index 0000000000000000000000000000000000000000..4861b8b58aa343dcf8955cf5a61ed5491e0e0ba2 --- /dev/null +++ b/Kinetix/worlds/m/h18_thrust_right_very_easy.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.1899999380111694, "1": 0.6599999666213989}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 9.803923606872559, "inverse_inertia": 572.2134399414062, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1499999761581421, "1": 0.17000000178813934}, "1": {"0": 0.1499999761581421, "1": -0.17000000178813934}, "2": {"0": -0.1499999761581421, "1": -0.17000000178813934}, "3": {"0": -0.1499999761581421, "1": 0.17000000178813934}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 4.759998798370361, "1": 4.759999752044678}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.23000001907348633, "1": 0.25}, "1": {"0": 0.23000001907348633, "1": -0.25}, "2": {"0": -0.23000001907348633, "1": -0.25}, "3": {"0": -0.23000001907348633, "1": 0.25}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 4, "relative_position": {"0": 0.0, "1": -0.12999999523162842}, "rotation": 1.5707963705062866, "power": 0.20000000298023224, "global_position": {"0": 1.1899999380111694, "1": 0.5299999713897705}, "active": true, "thruster_binding": 0}, {"object_index": 4, "relative_position": {"0": -0.11500000953674316, "1": 0.0}, "rotation": 6.283185005187988, "power": 0.20000000298023224, "global_position": {"0": 1.0749999284744263, "1": 0.6599999666213989}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/m/h19_thrust_left_very_easy.json b/Kinetix/worlds/m/h19_thrust_left_very_easy.json new file mode 100644 index 0000000000000000000000000000000000000000..a2bfaabce47b628552ebdc1fc9dc1886a030a49a --- /dev/null +++ b/Kinetix/worlds/m/h19_thrust_left_very_easy.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.389997959136963, "1": 0.6599999666213989}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 9.803923606872559, "inverse_inertia": 572.2134399414062, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1499999761581421, "1": 0.17000000178813934}, "1": {"0": 0.1499999761581421, "1": -0.17000000178813934}, "2": {"0": -0.1499999761581421, "1": -0.17000000178813934}, "3": {"0": -0.1499999761581421, "1": 0.17000000178813934}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.2600010335445404, "1": 4.659999847412109}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.23000001907348633, "1": 0.25}, "1": {"0": 0.23000001907348633, "1": -0.25}, "2": {"0": -0.23000001907348633, "1": -0.25}, "3": {"0": -0.23000001907348633, "1": 0.25}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 4, "relative_position": {"0": 0.0, "1": -0.12999999523162842}, "rotation": 1.5707963705062866, "power": 0.20000000298023224, "global_position": {"0": 4.389997959136963, "1": 0.5299999713897705}, "active": true, "thruster_binding": 0}, {"object_index": 4, "relative_position": {"0": 0.10000181198120117, "1": 0.0}, "rotation": 3.1415927410125732, "power": 0.10199997574090958, "global_position": {"0": 4.489999771118164, "1": 0.6599999666213989}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/m/h1_car_left.json b/Kinetix/worlds/m/h1_car_left.json new file mode 100644 index 0000000000000000000000000000000000000000..bae6359acdacb38f803039d85551b31b28f7e7b5 --- /dev/null +++ b/Kinetix/worlds/m/h1_car_left.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.3975000381469727, "1": 0.6299999952316284}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 2.836310625076294, "inverse_inertia": 21.029903411865234, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.6200000047683716, "1": 0.14216560125350952}, "1": {"0": 0.6200000047683716, "1": -0.14216560125350952}, "2": {"0": -0.6200000047683716, "1": -0.14216560125350952}, "3": {"0": -0.6200000047683716, "1": 0.14216560125350952}}, "radius": 0.20000000298023224, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3050000071525574, "1": 0.6474999785423279}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 5.6593098640441895, "inverse_inertia": 188.3167266845703, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1899999976158142, "1": 0.23250000178813934}, "1": {"0": 0.1899999976158142, "1": -0.23250000178813934}, "2": {"0": -0.1899999976158142, "1": -0.23250000178813934}, "3": {"0": -0.1899999976158142, "1": 0.23250000178813934}}, "radius": 0.20000000298023224, "role": 2, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 2.0399999618530273, "1": 0.6399999856948853}, "rotation": 6.1973066329956055, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 7.347021579742432, "inverse_inertia": 678.3167724609375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.20814663171768188, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.7649998664855957, "1": 0.625}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 9.017271041870117, "inverse_inertia": 1021.786376953125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.18788300454616547, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.650000095367432, "1": 0.6349999904632568}, "rotation": 1.7606909275054932, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 4.492740154266357, "inverse_inertia": 253.6486053466797, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.26617631316185, "role": 3, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 7, "a_relative_pos": {"0": 0.36749982833862305, "1": -0.004999995231628418}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.7649998664855957, "1": 0.625}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 1.5707963705062866, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 4, "b_index": 6, "a_relative_pos": {"0": -0.3575000762939453, "1": 0.009999990463256836}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.0399999618530273, "1": 0.6399999856948853}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 1.5707963705062866, "is_fixed_joint": false, "rotation": 6.1973066329956055, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": false, "7": false, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": false, "7": false, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": false, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/m/h2_car_right.json b/Kinetix/worlds/m/h2_car_right.json new file mode 100644 index 0000000000000000000000000000000000000000..f7f89aaf20c80bf54bed9c2183b5e9370f636997 --- /dev/null +++ b/Kinetix/worlds/m/h2_car_right.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.3975000381469727, "1": 0.6299999952316284}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 2.836310625076294, "inverse_inertia": 21.029903411865234, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.6200000047683716, "1": 0.14216560125350952}, "1": {"0": 0.6200000047683716, "1": -0.14216560125350952}, "2": {"0": -0.6200000047683716, "1": -0.14216560125350952}, "3": {"0": -0.6200000047683716, "1": 0.14216560125350952}}, "radius": 0.20000000298023224, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3050000071525574, "1": 0.6474999785423279}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 5.6593098640441895, "inverse_inertia": 188.3167266845703, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1899999976158142, "1": 0.23250000178813934}, "1": {"0": 0.1899999976158142, "1": -0.23250000178813934}, "2": {"0": -0.1899999976158142, "1": -0.23250000178813934}, "3": {"0": -0.1899999976158142, "1": 0.23250000178813934}}, "radius": 0.20000000298023224, "role": 3, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 2.0399999618530273, "1": 0.6399999856948853}, "rotation": 6.1973066329956055, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 7.347021579742432, "inverse_inertia": 678.3167724609375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.20814663171768188, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.7649998664855957, "1": 0.625}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 9.017271041870117, "inverse_inertia": 1021.786376953125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.18788300454616547, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.650000095367432, "1": 0.6349999904632568}, "rotation": 1.7606909275054932, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 4.492740154266357, "inverse_inertia": 253.6486053466797, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.26617631316185, "role": 2, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 7, "a_relative_pos": {"0": 0.36749982833862305, "1": -0.004999995231628418}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.7649998664855957, "1": 0.625}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 1.5707963705062866, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 4, "b_index": 6, "a_relative_pos": {"0": -0.3575000762939453, "1": 0.009999990463256836}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.0399999618530273, "1": 0.6399999856948853}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 1.5707963705062866, "is_fixed_joint": false, "rotation": 6.1973066329956055, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": false, "7": false, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": false, "7": false, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": false, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/m/h3_car_thrust.json b/Kinetix/worlds/m/h3_car_thrust.json new file mode 100644 index 0000000000000000000000000000000000000000..c091132fcd91d5974313e99c27d6fd17dfe7afc8 --- /dev/null +++ b/Kinetix/worlds/m/h3_car_thrust.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.9199999570846558, "1": 0.6949999928474426}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 5.274261951446533, "inverse_inertia": 92.84310150146484, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.39499998092651367, "1": 0.12000000476837158}, "1": {"0": 0.39499998092651367, "1": -0.12000000476837158}, "2": {"0": -0.39499998092651367, "1": -0.12000000476837158}, "3": {"0": -0.39499998092651367, "1": 0.12000000476837158}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5374999046325684, "1": 0.6324999928474426}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 4.968327045440674, "inverse_inertia": 146.32452392578125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20749998092651367, "1": 0.24250000715255737}, "1": {"0": 0.20749998092651367, "1": -0.24250000715255737}, "2": {"0": -0.20749998092651367, "1": -0.24250000715255737}, "3": {"0": -0.20749998092651367, "1": 0.24250000715255737}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.6100000143051147, "1": 0.7199999690055847}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 4.10987663269043, "inverse_inertia": 212.2596435546875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.27829837799072266, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.2549999952316284, "1": 0.7149999737739563}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 4.4133100509643555, "inverse_inertia": 244.759033203125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.2685609459877014, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 4.480000019073486, "1": 0.7599999904632568}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.946805715560913, "inverse_inertia": 195.74984741210938, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.28398942947387695, "role": 2, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 7, "a_relative_pos": {"0": 0.33500003814697266, "1": 0.019999980926513672}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 1.2549999952316284, "1": 0.7149999737739563}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 4, "b_index": 6, "a_relative_pos": {"0": -0.309999942779541, "1": 0.02499997615814209}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 0.6100000143051147, "1": 0.7199999690055847}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 4, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 1.5707963705062866, "power": 1.2999999523162842, "global_position": {"0": 0.9199999570846558, "1": 0.6949999928474426}, "active": true, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": false, "7": false, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": false, "7": false, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": false, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/m/h4_thrust_the_needle.json b/Kinetix/worlds/m/h4_thrust_the_needle.json new file mode 100644 index 0000000000000000000000000000000000000000..ca31fa9955470f2e1bb98281aae1a115bda694f7 --- /dev/null +++ b/Kinetix/worlds/m/h4_thrust_the_needle.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.2699999809265137, "1": 4.457499980926514}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 2.5809788703918457, "inverse_inertia": 39.95710372924805, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.315000057220459, "1": 0.30749988555908203}, "1": {"0": 0.315000057220459, "1": -0.30749988555908203}, "2": {"0": -0.315000057220459, "1": -0.30749988555908203}, "3": {"0": -0.315000057220459, "1": 0.30749988555908203}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 4.579999923706055, "1": 2.7024998664855957}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.379583358764648, "inverse_inertia": 92.79109954833984, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.19000005722045898, "1": 0.4125000238418579}, "1": {"0": 0.19000005722045898, "1": -0.4125000238418579}, "2": {"0": -0.19000005722045898, "1": -0.4125000238418579}, "3": {"0": -0.19000005722045898, "1": 0.4125000238418579}}, "radius": 0.0, "role": 2, "density": 0.5, "highlighted": false}], "circle": [{"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 5, "relative_position": {"0": 0.1399998664855957, "1": 0.0}, "rotation": 3.1415927410125732, "power": 0.3135001063346863, "global_position": {"0": 4.71999979019165, "1": 2.7024998664855957}, "active": true, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/m/h5_angry_birds.json b/Kinetix/worlds/m/h5_angry_birds.json new file mode 100644 index 0000000000000000000000000000000000000000..6d937cc774b6cb3eb6bf7fdb02edc66db4694036 --- /dev/null +++ b/Kinetix/worlds/m/h5_angry_birds.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.9421067833900452, "1": 1.3350000381469727}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.428243160247803, "inverse_inertia": 38.33751678466797, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071067690849304, "1": 0.05500000715255737}, "1": {"0": 0.7071067690849304, "1": -0.05500000715255737}, "2": {"0": -0.7071067690849304, "1": -0.05500000715255737}, "3": {"0": -0.7071067690849304, "1": 0.05500000715255737}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.4649999141693115, "1": 0.8799999952316284}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.13499999046325684, "1": 0.49000000953674316}, "1": {"0": 0.13499999046325684, "1": -0.49000000953674316}, "2": {"0": -0.13499999046325684, "1": -0.49000000953674316}, "3": {"0": -0.13499999046325684, "1": 0.49000000953674316}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.5550000071525574, "1": 1.809999942779541}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 11.398747444152832, "inverse_inertia": 1632.7664794921875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.1671077162027359, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 3.43999981880188, "1": 1.2450000047683716}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.8356236219406128, "inverse_inertia": 8.774679183959961, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.6171911954879761, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 4.605000019073486, "1": 0.7749999761581421}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.839686393737793, "inverse_inertia": 185.26841735839844, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.28792354464530945, "role": 3, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 5, "a_relative_pos": {"0": 0.5078931450843811, "1": -1.1920928955078125e-07}, "b_relative_pos": {"0": -0.014999985694885254, "1": 0.4549999237060547}, "global_position": {"0": 1.4499999284744263, "1": 1.334999918937683}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 1}, {"a_index": 0, "b_index": 5, "a_relative_pos": {"0": -0.9700000286102295, "1": 5.190000057220459}, "b_relative_pos": {"0": 0.004999995231628418, "1": -0.48000001907348633}, "global_position": {"0": 1.5299999713897705, "1": 0.3899998664855957}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": true, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/m/h6_thrust_over.json b/Kinetix/worlds/m/h6_thrust_over.json new file mode 100644 index 0000000000000000000000000000000000000000..f2bf0302b7baec28a808c1b2a93102633affab9c --- /dev/null +++ b/Kinetix/worlds/m/h6_thrust_over.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.8899999856948853, "1": 1.0149999856948853}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 2.465130090713501, "inverse_inertia": 76.3641586303711, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.3593396544456482, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 2.6649999618530273, "1": 0.9249999523162842}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 1.1919491291046143, "inverse_inertia": 17.853580474853516, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.5167686939239502, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 4.34499979019165, "1": 0.9749999642372131}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 1.05663001537323, "inverse_inertia": 14.029939651489258, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.5488625168800354, "role": 2, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 6, "relative_position": {"0": -0.3593396544456482, "1": 0.0}, "rotation": 6.283185005187988, "power": 1.0, "global_position": {"0": 0.5306603312492371, "1": 1.0149999856948853}, "active": true, "thruster_binding": 0}, {"object_index": 6, "relative_position": {"0": 0.0, "1": -0.3593396544456482}, "rotation": 1.5707963705062866, "power": 1.0, "global_position": {"0": 0.8899999856948853, "1": 0.6556603312492371}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/m/h7_car_flip.json b/Kinetix/worlds/m/h7_car_flip.json new file mode 100644 index 0000000000000000000000000000000000000000..e08933abfad0a0a8bba5c57614e0f1ef7cfd1a95 --- /dev/null +++ b/Kinetix/worlds/m/h7_car_flip.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.3871067762374878, "1": 0.8224999904632568}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 2.318382740020752, "inverse_inertia": 13.2920503616333, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071067690849304, "1": 0.1525000035762787}, "1": {"0": 0.7071067690849304, "1": -0.1525000035762787}, "2": {"0": -0.7071067690849304, "1": -0.1525000035762787}, "3": {"0": -0.7071067690849304, "1": 0.1525000035762787}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.367499828338623, "1": 0.8924999237060547}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 1.950173258781433, "inverse_inertia": 22.32916259765625, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.32249999046325684, "1": 0.3974999785423279}, "1": {"0": 0.32249999046325684, "1": -0.3974999785423279}, "2": {"0": -0.32249999046325684, "1": -0.3974999785423279}, "3": {"0": -0.32249999046325684, "1": 0.3974999785423279}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 2.004999876022339, "1": 0.8449999690055847}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 2.7205970287323, "inverse_inertia": 93.01187133789062, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.3420526385307312, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.7400000095367432, "1": 0.8449999690055847}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 2.3856844902038574, "inverse_inertia": 71.5213851928711, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.3652738332748413, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 4.34499979019165, "1": 0.9749999642372131}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 1.05663001537323, "inverse_inertia": 14.029939651489258, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.5488625168800354, "role": 2, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 6, "a_relative_pos": {"0": 0.6178930997848511, "1": 0.02249997854232788}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.004999876022339, "1": 0.8449999690055847}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 4, "b_index": 7, "a_relative_pos": {"0": -0.6471067667007446, "1": 0.02249997854232788}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 0.7400000095367432, "1": 0.8449999690055847}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 4, "relative_position": {"0": -0.19710683822631836, "1": 0.0}, "rotation": 1.570796251296997, "power": 1.600000023841858, "global_position": {"0": 1.1899999380111694, "1": 0.8224999904632568}, "active": true, "thruster_binding": 1}, {"object_index": 4, "relative_position": {"0": 0.17289316654205322, "1": 0.0}, "rotation": 1.5707963705062866, "power": 1.600000023841858, "global_position": {"0": 1.559999942779541, "1": 0.8224999904632568}, "active": true, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": false, "7": false, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": false, "7": false, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": false, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/m/h8_weird_vehicle.json b/Kinetix/worlds/m/h8_weird_vehicle.json new file mode 100644 index 0000000000000000000000000000000000000000..96400134c3305433dad9f38132a12b10de003955 --- /dev/null +++ b/Kinetix/worlds/m/h8_weird_vehicle.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.9871066808700562, "1": 0.6875}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 1.9918535947799683, "inverse_inertia": 11.24271297454834, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071060538291931, "1": 0.17749983072280884}, "1": {"0": 0.7071060538291931, "1": -0.17749983072280884}, "2": {"0": -0.7071060538291931, "1": -0.17749983072280884}, "3": {"0": -0.7071060538291931, "1": 0.17749983072280884}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.9849997758865356, "1": 1.2574999332427979}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 4.105090618133545, "inverse_inertia": 45.28401565551758, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.12000000476837158, "1": 0.5074999928474426}, "1": {"0": 0.12000000476837158, "1": -0.5074999928474426}, "2": {"0": -0.12000000476837158, "1": -0.5074999928474426}, "3": {"0": -0.12000000476837158, "1": 0.5074999928474426}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.9949997663497925, "1": 1.6949999332427979}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.629530906677246, "inverse_inertia": 165.54302978515625, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.2961418628692627, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 4.299999713897705, "1": 1.2799999713897705}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 1.0310466289520264, "inverse_inertia": 13.358770370483398, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.5556302666664124, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 5, "a_relative_pos": {"0": -0.007106781005859375, "1": 0.14749997854232788}, "b_relative_pos": {"0": -0.004999876022338867, "1": -0.42249995470046997}, "global_position": {"0": 0.9799998998641968, "1": 0.8349999785423279}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 5, "b_index": 6, "a_relative_pos": {"0": 0.009999990463256836, "1": 0.4375}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 0.9949997663497925, "1": 1.6949999332427979}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/m/h9_spin_the_right_way.json b/Kinetix/worlds/m/h9_spin_the_right_way.json new file mode 100644 index 0000000000000000000000000000000000000000..d4a4fced8c216ab61e7aa8cbae32001fd1198983 --- /dev/null +++ b/Kinetix/worlds/m/h9_spin_the_right_way.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 0.4000000059604645, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 0.4000000059604645, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 0.4000000059604645, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 0.4000000059604645, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.234999895095825, "1": 3.4825000762939453}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.1293230056762695, "inverse_inertia": 46.20309066772461, "friction": 0.4000000059604645, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.06500005722045898, "1": 0.627500057220459}, "1": {"0": 0.06500005722045898, "1": -0.627500057220459}, "2": {"0": -0.06500005722045898, "1": -0.627500057220459}, "3": {"0": -0.06500005722045898, "1": 0.627500057220459}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.7174999713897705, "1": 0.550000011920929}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.646728038787842, "inverse_inertia": 98.2124252319336, "friction": 0.4000000059604645, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.44249993562698364, "1": 0.08499999344348907}, "1": {"0": 0.44249993562698364, "1": -0.08499999344348907}, "2": {"0": -0.44249993562698364, "1": -0.08499999344348907}, "3": {"0": -0.44249993562698364, "1": 0.08499999344348907}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 2.2300000190734863, "1": 2.8899998664855957}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 0.4000000059604645, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.26419684290885925, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.184999942779541, "1": 4.350000381469727}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 14.926586151123047, "inverse_inertia": 2799.82470703125, "friction": 0.4000000059604645, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.14603091776371002, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 4.5149993896484375, "1": 0.8449999690055847}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 1.4851720333099365, "inverse_inertia": 27.718095779418945, "friction": 0.4000000059604645, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.46295276284217834, "role": 2, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 6, "a_relative_pos": {"0": -0.004999876022338867, "1": -0.5925002098083496}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.2300000190734863, "1": 2.8899998664855957}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 5, "b_index": 7, "a_relative_pos": {"0": 0.4224998950958252, "1": 0.009999990463256836}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.1399998664855957, "1": 0.5600000023841858}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": false, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/s/h0_weak_thrust.json b/Kinetix/worlds/s/h0_weak_thrust.json new file mode 100644 index 0000000000000000000000000000000000000000..34ceec2c9001820406689e61ba7b25f18a545602 --- /dev/null +++ b/Kinetix/worlds/s/h0_weak_thrust.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.365000009536743, "1": 1.7300000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.662228107452393, "inverse_inertia": 121.09474182128906, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.39499998092651367, "1": 0.09499996900558472}, "1": {"0": 0.39499998092651367, "1": -0.09499996900558472}, "2": {"0": -0.39499998092651367, "1": -0.09499996900558472}, "3": {"0": -0.39499998092651367, "1": 0.09499996900558472}}, "radius": 0.20000000298023224, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 2.3399999141693115, "1": 2.559999942779541}, "rotation": 0.9381296634674072, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 2.442432403564453, "inverse_inertia": 74.96438598632812, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.3610054552555084, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 2.2699999809265137, "1": 4.835000038146973}, "rotation": 5.377682209014893, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 9.355156898498535, "inverse_inertia": 1099.7958984375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.18445885181427002, "role": 2, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 5, "a_relative_pos": {"0": -0.027500152587890625, "1": -0.07750004529953003}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 3.3374998569488525, "1": 1.6524999141693115}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 1.5707963705062866, "is_fixed_joint": false, "rotation": 0.9381296634674072, "motor_binding": 0}], "thruster": [{"object_index": 5, "relative_position": {"0": -0.25526928901672363, "1": -0.25526928901672363}, "rotation": 0.7853981256484985, "power": 0.25, "global_position": {"0": 2.3949227333068848, "1": 2.2031970024108887}, "active": true, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 5, "num_circles": 2, "num_joints": 1, "num_thrusters": 1, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/s/h1_thrust_over_ball.json b/Kinetix/worlds/s/h1_thrust_over_ball.json new file mode 100644 index 0000000000000000000000000000000000000000..29122e43f78fd65d41afb24ee5b0952a27d52fd5 --- /dev/null +++ b/Kinetix/worlds/s/h1_thrust_over_ball.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.052500009536743, "1": 0.7599999904632568}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 1.789709210395813, "inverse_inertia": 19.21792221069336, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.3725000023841858, "1": 0.375}, "1": {"0": 0.3725000023841858, "1": -0.375}, "2": {"0": -0.3725000023841858, "1": -0.375}, "3": {"0": -0.3725000023841858, "1": 0.375}}, "radius": 0.20000000298023224, "role": 3, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.625, "1": 3.5749998092651367}, "rotation": 4.029953479766846, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 4.756220817565918, "inverse_inertia": 284.2718811035156, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.25869858264923096, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 3.365000009536743, "1": 0.9199999570846558}, "rotation": 5.578516006469727, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 2.353494167327881, "inverse_inertia": 69.60430908203125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.3677634000778198, "role": 2, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 5, "a_relative_pos": {"0": -0.01249992847442627, "1": 0.17750000953674316}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.0399999618530273, "1": 0.9375}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 1.5707963705062866, "is_fixed_joint": false, "rotation": 4.029953479766846, "motor_binding": 0}], "thruster": [{"object_index": 5, "relative_position": {"0": 0.18292748928070068, "1": -0.18292760848999023}, "rotation": 2.3561949729919434, "power": 0.21025095880031586, "global_position": {"0": 0.3676714301109314, "1": 3.548410654067993}, "active": true, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 5, "num_circles": 2, "num_joints": 1, "num_thrusters": 1, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/s/h2_one_wheel_car.json b/Kinetix/worlds/s/h2_one_wheel_car.json new file mode 100644 index 0000000000000000000000000000000000000000..79b1975defa2d996d74e2774534ad94cde5e73c2 --- /dev/null +++ b/Kinetix/worlds/s/h2_one_wheel_car.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.297500133514404, "1": 0.625}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.060605525970459, "inverse_inertia": 100.92247009277344, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.4125000238418579, "1": 0.09999999403953552}, "1": {"0": 0.4125000238418579, "1": -0.09999999403953552}, "2": {"0": -0.4125000238418579, "1": -0.09999999403953552}, "3": {"0": -0.4125000238418579, "1": 0.09999999403953552}}, "radius": 0.20000000298023224, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 3.9549999237060547, "1": 0.6100000143051147}, "rotation": 4.029953479766846, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 10.402273178100586, "inverse_inertia": 1359.772705078125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.17492865025997162, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 2.2799999713897705, "1": 0.6399999856948853}, "rotation": 5.578516006469727, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.211197853088379, "inverse_inertia": 129.581787109375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.3148411810398102, "role": 1, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 5, "a_relative_pos": {"0": -0.3425002098083496, "1": -0.014999985694885254}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 3.9549999237060547, "1": 0.6100000143051147}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 1.5707963705062866, "is_fixed_joint": false, "rotation": 4.029953479766846, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 5, "num_circles": 2, "num_joints": 1, "num_thrusters": 1, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/s/h3_point_the_thruster.json b/Kinetix/worlds/s/h3_point_the_thruster.json new file mode 100644 index 0000000000000000000000000000000000000000..dbf0dd1bba024dbc105b5a7c9e19dd05ad8612a3 --- /dev/null +++ b/Kinetix/worlds/s/h3_point_the_thruster.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.9224998950958252, "1": 0.5874999761581421}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 5.391387939453125, "inverse_inertia": 162.70533752441406, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.25999999046325684, "1": 0.1783471256494522}, "1": {"0": 0.25999999046325684, "1": -0.1783471256494522}, "2": {"0": -0.25999999046325684, "1": -0.1783471256494522}, "3": {"0": -0.25999999046325684, "1": 0.1783471256494522}}, "radius": 0.20000000298023224, "role": 1, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 1.909999966621399, "1": 0.7649999856948853}, "rotation": 4.029953479766846, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 14.068947792053223, "inverse_inertia": 2487.328125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.1504160761833191, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.159999966621399, "1": 0.5849999785423279}, "rotation": 5.578516006469727, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.453315258026123, "inverse_inertia": 523.3300170898438, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.22209236025810242, "role": 2, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 5, "a_relative_pos": {"0": -0.01249992847442627, "1": 0.17750000953674316}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 1.909999966621399, "1": 0.7649999856948853}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 1.5707963705062866, "is_fixed_joint": false, "rotation": 4.029953479766846, "motor_binding": 0}], "thruster": [{"object_index": 5, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 3.1415927410125732, "power": 0.20000000298023224, "global_position": {"0": 1.909999966621399, "1": 0.7649999856948853}, "active": true, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 5, "num_circles": 2, "num_joints": 1, "num_thrusters": 1, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/s/h4_thrust_aim.json b/Kinetix/worlds/s/h4_thrust_aim.json new file mode 100644 index 0000000000000000000000000000000000000000..c2eeab5b201bad628973d7117e05db66566059f1 --- /dev/null +++ b/Kinetix/worlds/s/h4_thrust_aim.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.487500190734863, "1": 4.434999942779541}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.9753496646881104, "inverse_inertia": 83.96772766113281, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.32249999046325684, "1": 0.19500017166137695}, "1": {"0": 0.32249999046325684, "1": -0.19500017166137695}, "2": {"0": -0.32249999046325684, "1": -0.19500017166137695}, "3": {"0": -0.32249999046325684, "1": 0.19500017166137695}}, "radius": 0.20000000298023224, "role": 1, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 4.539999961853027, "1": 0.7299999594688416}, "rotation": 4.029953479766846, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 2.597919225692749, "inverse_inertia": 84.8127670288086, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.3500356078147888, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 3.680000066757202, "1": 0.7099999785423279}, "rotation": 5.578516006469727, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 5.5262131690979, "inverse_inertia": 383.7648010253906, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.23999999463558197, "role": 2, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 5, "a_relative_pos": {"0": -0.01249992847442627, "1": 0.17750000953674316}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 4.475000381469727, "1": 4.612500190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 1.5707963705062866, "is_fixed_joint": false, "rotation": 4.029953479766846, "motor_binding": 0}], "thruster": [{"object_index": 4, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 3.1415927410125732, "power": 0.25155019760131836, "global_position": {"0": 4.487500190734863, "1": 4.434999942779541}, "active": true, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 5, "num_circles": 2, "num_joints": 1, "num_thrusters": 1, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/s/h5_rotate_fall.json b/Kinetix/worlds/s/h5_rotate_fall.json new file mode 100644 index 0000000000000000000000000000000000000000..6d635376c1239654ccf216d572ee81b749b26ef3 --- /dev/null +++ b/Kinetix/worlds/s/h5_rotate_fall.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.534998655319214, "1": 0.5924999713897705}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 4.364907264709473, "inverse_inertia": 106.36929321289062, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.28999996185302734, "1": 0.19749999046325684}, "1": {"0": 0.28999996185302734, "1": -0.19749999046325684}, "2": {"0": -0.28999996185302734, "1": -0.19749999046325684}, "3": {"0": -0.28999996185302734, "1": 0.19749999046325684}}, "radius": 0.20000000298023224, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 1.4299999475479126, "1": 4.650000095367432}, "rotation": 4.029953479766846, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 5.611451148986816, "inverse_inertia": 395.6947021484375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.23817022144794464, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 1.4649999141693115, "1": 4.339999675750732}, "rotation": 5.578516006469727, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 7.987701416015625, "inverse_inertia": 801.7769165039062, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.19962464272975922, "role": 3, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 5, "b_index": 6, "a_relative_pos": {"0": 0.12780043482780457, "1": 0.13607794046401978}, "b_relative_pos": {"0": -0.08859099447727203, "1": 0.08875042200088501}, "global_position": {"0": 1.4549999237060547, "1": 4.464999675750732}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.9500000476837158, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 1.5707963705062866, "is_fixed_joint": false, "rotation": 1.5485625267028809, "motor_binding": 0}], "thruster": [{"object_index": 4, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 3.1415927410125732, "power": 0.25155019760131836, "global_position": {"0": 3.534998655319214, "1": 0.5924999713897705}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": false}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 5, "num_circles": 2, "num_joints": 1, "num_thrusters": 1, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/s/h6_unicycle_right.json b/Kinetix/worlds/s/h6_unicycle_right.json new file mode 100644 index 0000000000000000000000000000000000000000..ce856e7605ea55af8803eff8ce475528febb68d3 --- /dev/null +++ b/Kinetix/worlds/s/h6_unicycle_right.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.127500057220459, "1": 0.8025000095367432}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 4.574043273925781, "inverse_inertia": 77.56454467773438, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.3974998891353607, "1": 0.13750000298023224}, "1": {"0": 0.3974998891353607, "1": -0.13750000298023224}, "2": {"0": -0.3974998891353607, "1": -0.13750000298023224}, "3": {"0": -0.3974998891353607, "1": 0.13750000298023224}}, "radius": 0.20000000298023224, "role": 2, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 2.0999999046325684, "1": 0.7249999642372131}, "rotation": 0.9381296634674072, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 12.913182258605957, "inverse_inertia": 2095.446044921875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.15700316429138184, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.259999752044678, "1": 0.625}, "rotation": 5.377682209014893, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 9.036452293395996, "inverse_inertia": 1026.1380615234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.18768349289894104, "role": 1, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 5, "a_relative_pos": {"0": -0.027500152587890625, "1": -0.07750004529953003}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.0999999046325684, "1": 0.7249999642372131}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 1.5707963705062866, "is_fixed_joint": false, "rotation": 0.9381296634674072, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 5, "num_circles": 2, "num_joints": 1, "num_thrusters": 1, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/s/h7_unicycle_left.json b/Kinetix/worlds/s/h7_unicycle_left.json new file mode 100644 index 0000000000000000000000000000000000000000..c7ec73c03f0247d757c6ce11cc6d81d12a93035b --- /dev/null +++ b/Kinetix/worlds/s/h7_unicycle_left.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.127500057220459, "1": 0.8025000095367432}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 4.574043273925781, "inverse_inertia": 77.56454467773438, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.3974998891353607, "1": 0.13750000298023224}, "1": {"0": 0.3974998891353607, "1": -0.13750000298023224}, "2": {"0": -0.3974998891353607, "1": -0.13750000298023224}, "3": {"0": -0.3974998891353607, "1": 0.13750000298023224}}, "radius": 0.20000000298023224, "role": 2, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 2.0999999046325684, "1": 0.7249999642372131}, "rotation": 0.9381296634674072, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 12.913182258605957, "inverse_inertia": 2095.446044921875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.15700316429138184, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.36000150442123413, "1": 0.625}, "rotation": 5.377682209014893, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 9.036452293395996, "inverse_inertia": 1026.1380615234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.18768349289894104, "role": 1, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 5, "a_relative_pos": {"0": -0.027500152587890625, "1": -0.07750004529953003}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.0999999046325684, "1": 0.7249999642372131}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 1.5707963705062866, "is_fixed_joint": false, "rotation": 0.9381296634674072, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 5, "num_circles": 2, "num_joints": 1, "num_thrusters": 1, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/s/h8_unicycle_balance.json b/Kinetix/worlds/s/h8_unicycle_balance.json new file mode 100644 index 0000000000000000000000000000000000000000..7afaff0c3848ef304c30cd54c56d357ebf6db550 --- /dev/null +++ b/Kinetix/worlds/s/h8_unicycle_balance.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.5899999141693115, "1": 4.755000114440918}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 15.948962211608887, "inverse_inertia": 1319.9141845703125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.16499999165534973, "1": 0.0950000137090683}, "1": {"0": 0.16499999165534973, "1": -0.0950000137090683}, "2": {"0": -0.16499999165534973, "1": -0.0950000137090683}, "3": {"0": -0.16499999165534973, "1": 0.0950000137090683}}, "radius": 0.20000000298023224, "role": 2, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 1.5899999141693115, "1": 1.0549999475479126}, "rotation": 2.0572593212127686, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 2.0268056392669678, "inverse_inertia": 51.62192153930664, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.39629536867141724, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 1.5749999284744263, "1": 0.6949999928474426}, "rotation": 5.3746232986450195, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 10.70849323272705, "inverse_inertia": 1441.0089111328125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.17240937054157257, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 5, "b_index": 6, "a_relative_pos": {"0": -0.3112245500087738, "1": 0.18156062066555023}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 1.5749999284744263, "1": 0.6949999928474426}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 1.5707963705062866, "is_fixed_joint": false, "rotation": 3.317363977432251, "motor_binding": 1}], "thruster": [{"object_index": 6, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0793752670288086, "power": 0.4192001223564148, "global_position": {"0": 1.5749999284744263, "1": 0.6949999928474426}, "active": false, "thruster_binding": 3}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": false}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 5, "num_circles": 2, "num_joints": 1, "num_thrusters": 1, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file diff --git a/Kinetix/worlds/s/h9_explode_then_thrust_over.json b/Kinetix/worlds/s/h9_explode_then_thrust_over.json new file mode 100644 index 0000000000000000000000000000000000000000..b054724ad3d391e72b334c6ebd510098d81ad9a8 --- /dev/null +++ b/Kinetix/worlds/s/h9_explode_then_thrust_over.json @@ -0,0 +1 @@ +{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.8899999856948853, "1": 3.3874998092651367}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 8.91265869140625, "inverse_inertia": 413.54052734375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.2200000286102295, "1": 0.12749993801116943}, "1": {"0": 0.2200000286102295, "1": -0.12749993801116943}, "2": {"0": -0.2200000286102295, "1": -0.12749993801116943}, "3": {"0": -0.2200000286102295, "1": 0.12749993801116943}}, "radius": 0.20000000298023224, "role": 1, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 1.274999976158142, "1": 3.359999895095825}, "rotation": 0.4261845052242279, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.9906169772148132, "inverse_inertia": 12.331655502319336, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.566855251789093, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.7249999046325684, "1": 3.3949999809265137}, "rotation": 0.6725906729698181, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 2.677119731903076, "inverse_inertia": 90.06280517578125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.34481897950172424, "role": 2, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 6, "a_relative_pos": {"0": -0.06326837837696075, "1": -0.13369952142238617}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 0.8267316222190857, "1": 3.253800392150879}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.405390977859497, "motor_power": 1.1143150329589844, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 1.5707963705062866, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 1}], "thruster": [{"object_index": 6, "relative_position": {"0": 0.3447742462158203, "1": -0.005560874938964844}, "rotation": 3.1577203273773193, "power": 0.6000000238418579, "global_position": {"0": 1.99815034866333, "1": 3.605449676513672}, "active": true, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 5, "num_circles": 2, "num_joints": 1, "num_thrusters": 1, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}} \ No newline at end of file