chassis-sim 0.2.0__tar.gz → 0.2.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. {chassis_sim-0.2.0/src/chassis_sim.egg-info → chassis_sim-0.2.1}/PKG-INFO +10 -10
  2. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/README.md +9 -9
  3. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/pyproject.toml +1 -1
  4. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/__init__.py +1 -1
  5. {chassis_sim-0.2.0 → chassis_sim-0.2.1/src/chassis_sim.egg-info}/PKG-INFO +10 -10
  6. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/LICENSE +0 -0
  7. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/setup.cfg +0 -0
  8. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/bridges/__init__.py +0 -0
  9. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/bridges/adapters.py +0 -0
  10. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/bridges/base.py +0 -0
  11. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/bridges/raycast.py +0 -0
  12. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/bridges/simple_bridge.py +0 -0
  13. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/chassis/__init__.py +0 -0
  14. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/chassis/ackermann.py +0 -0
  15. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/chassis/base.py +0 -0
  16. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/chassis/diff_drive.py +0 -0
  17. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/chassis/mecanum.py +0 -0
  18. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/chassis/registry.py +0 -0
  19. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/config/__init__.py +0 -0
  20. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/config/curriculum.yaml +0 -0
  21. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/config/env.yaml +0 -0
  22. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/config/reward.yaml +0 -0
  23. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/controllers/__init__.py +0 -0
  24. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/controllers/_geometry.py +0 -0
  25. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/controllers/base.py +0 -0
  26. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/controllers/dwa.py +0 -0
  27. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/controllers/pure_pursuit.py +0 -0
  28. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/envs/__init__.py +0 -0
  29. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/envs/chassis_env.py +0 -0
  30. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/envs/config.py +0 -0
  31. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/envs/dynamics.py +0 -0
  32. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/envs/observation.py +0 -0
  33. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/envs/path_extractor.py +0 -0
  34. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/envs/path_utils.py +0 -0
  35. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/envs/privileged.py +0 -0
  36. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/envs/reward.py +0 -0
  37. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/envs/safety_gate.py +0 -0
  38. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/eval/__init__.py +0 -0
  39. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/gym_registration.py +0 -0
  40. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/obs/__init__.py +0 -0
  41. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/obs/spec.py +0 -0
  42. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/planning/__init__.py +0 -0
  43. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/planning/hybrid_astar.py +0 -0
  44. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/planning/map_generator.py +0 -0
  45. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/planning/rs_curve.py +0 -0
  46. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/py.typed +0 -0
  47. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/render/__init__.py +0 -0
  48. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/render/animation.py +0 -0
  49. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/render/figure.py +0 -0
  50. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/render/recorder.py +0 -0
  51. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/render/scene.py +0 -0
  52. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/scenarios/__init__.py +0 -0
  53. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/scenarios/data/circle.yaml +0 -0
  54. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/scenarios/data/corridor.yaml +0 -0
  55. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/scenarios/data/dense_static.yaml +0 -0
  56. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/scenarios/data/dynamic_crossing.yaml +0 -0
  57. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/scenarios/data/foldback_reverse.yaml +0 -0
  58. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/scenarios/data/maze_grid.yaml +0 -0
  59. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/scenarios/data/obstacles_dense.yaml +0 -0
  60. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/scenarios/data/obstacles_dense_reverse.yaml +0 -0
  61. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/scenarios/data/obstacles_medium.yaml +0 -0
  62. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/scenarios/data/obstacles_sparse.yaml +0 -0
  63. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/scenarios/data/straight.yaml +0 -0
  64. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/scenarios/loader.py +0 -0
  65. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/scenarios/reset_options.py +0 -0
  66. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/scenarios/scenario.py +0 -0
  67. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/sensors/__init__.py +0 -0
  68. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/sensors/specs.py +0 -0
  69. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim/sensors/suite.py +0 -0
  70. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim.egg-info/SOURCES.txt +0 -0
  71. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim.egg-info/dependency_links.txt +0 -0
  72. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim.egg-info/requires.txt +0 -0
  73. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/src/chassis_sim.egg-info/top_level.txt +0 -0
  74. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_bridges_adapter.py +0 -0
  75. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_bridges_chassis_smoke.py +0 -0
  76. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_bridges_dynamic.py +0 -0
  77. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_bridges_parity.py +0 -0
  78. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_bridges_scan.py +0 -0
  79. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_bridges_sensor_integration.py +0 -0
  80. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_chassis_ackermann_parity.py +0 -0
  81. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_chassis_action_contract.py +0 -0
  82. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_chassis_action_space.py +0 -0
  83. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_chassis_actuator_lag.py +0 -0
  84. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_chassis_kinematics.py +0 -0
  85. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_chassis_registry.py +0 -0
  86. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_controllers_action_mapping.py +0 -0
  87. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_controllers_dwa.py +0 -0
  88. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_controllers_pure_pursuit.py +0 -0
  89. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_envs_chassis_env.py +0 -0
  90. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_envs_config.py +0 -0
  91. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_envs_diff_drive_limits.py +0 -0
  92. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_envs_dynamic.py +0 -0
  93. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_envs_dynamics.py +0 -0
  94. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_envs_obs_spec.py +0 -0
  95. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_envs_observation.py +0 -0
  96. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_envs_path_extractor_import.py +0 -0
  97. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_envs_reward.py +0 -0
  98. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_envs_reward_ordering.py +0 -0
  99. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_envs_sensor_obs_frames.py +0 -0
  100. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_envs_sensors_kwarg.py +0 -0
  101. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_eval_core.py +0 -0
  102. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_gym_registration.py +0 -0
  103. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_import_purity.py +0 -0
  104. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_obs_spec.py +0 -0
  105. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_planning_core.py +0 -0
  106. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_planning_parity.py +0 -0
  107. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_render_degrade.py +0 -0
  108. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_render_determinism.py +0 -0
  109. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_render_pixels.py +0 -0
  110. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_render_recorder.py +0 -0
  111. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_scenarios_dynamic.py +0 -0
  112. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_scenarios_loader.py +0 -0
  113. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_scenarios_reset.py +0 -0
  114. {chassis_sim-0.2.0 → chassis_sim-0.2.1}/tests/test_sensors_core.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: chassis-sim
3
- Version: 0.2.0
3
+ Version: 0.2.1
4
4
  Summary: Gymnasium environments for Ackermann, differential-drive and mecanum chassis
5
5
  Author-email: zhao6663 <30620187+zhao6663@users.noreply.github.com>
6
6
  License-Expression: MIT
@@ -47,7 +47,7 @@ steering, differential drive, and mecanum — with normalized actions, a pure-Nu
47
47
  simulator, a composable observation spec, declarative sensors, and reference
48
48
  controllers for reproducible evaluation.
49
49
 
50
- Version 0.2.0. Python 3.10+.
50
+ Version 0.2.1. Python 3.10+.
51
51
 
52
52
  ## At a glance
53
53
 
@@ -77,17 +77,17 @@ which is documented in [Observation and action contract](#observation-and-action
77
77
 
78
78
  ## Installation
79
79
 
80
- The package is not on PyPI yet. Install the `v0.2.0` release wheel — it is attached
81
- to the [GitHub release](https://github.com/zhao6663/chassis-sim/releases/tag/v0.2.0) —
82
- or work from a checkout:
80
+ Install it from PyPI:
83
81
 
84
82
  ```bash
85
- pip install "chassis-sim[viz] @ https://github.com/zhao6663/chassis-sim/releases/download/v0.2.0/chassis_sim-0.2.0-py3-none-any.whl"
83
+ pip install "chassis-sim[viz]"
86
84
  ```
87
85
 
88
86
  Drop the `[viz]` suffix for a core install, or use `[planning]` for the Hybrid-A*
89
- map generator. The 0.1.x line (tag `v0.1.4`) is the migration case: it still has
90
- the old 494-value observation and the old single-config sensor API.
87
+ map generator. Need a pinned source instead of PyPI? Every tag carries a wheel on its
88
+ [GitHub release](https://github.com/zhao6663/chassis-sim/releases) page. The 0.1.x line
89
+ (tag `v0.1.4`) is the migration case: it still has the old 494-value observation
90
+ and the old single-config sensor API.
91
91
 
92
92
  From a checkout, with the development tools:
93
93
 
@@ -109,7 +109,7 @@ The core install depends only on `numpy`, `gymnasium`, and `pyyaml`.
109
109
  `matplotlib` is needed only for rendering and `imageio` only for GIF export; both
110
110
  come with the `viz` extra, which is what `examples/gallery.py` needs.
111
111
 
112
- The 0.2.0 line ships exactly one built-in simulator: the pure-NumPy `SimpleBridge`.
112
+ The 0.2.x line ships exactly one built-in simulator: the pure-NumPy `SimpleBridge`.
113
113
  No external simulator is required, and there is no `irsim` extra: the ir-sim and
114
114
  ROS 2 backends are not part of this package (they remain in the upstream training
115
115
  repository). `PhysicalCommandBridge` is the documented seam for such a backend.
@@ -1230,7 +1230,7 @@ If you use this package in academic work, cite the repository:
1230
1230
  ---
1231
1231
 
1232
1232
  All numbers in this README were measured on 2026-11-04 (UTC) with Python 3.12.0,
1233
- NumPy 1.26.4, and Gymnasium 1.3.0, on version 0.2.0. The default observation is 128
1233
+ NumPy 1.26.4, and Gymnasium 1.3.0, on version 0.2.1. The default observation is 128
1234
1234
  values on the two 2-action chassis and 129 on the mecanum. The evaluation matrix
1235
1235
  uses ten independent maps, `max_steps=500`, and `base_seed=0`. The code blocks in
1236
1236
  this file are executed as written in the repository's verification pass.
@@ -11,7 +11,7 @@ steering, differential drive, and mecanum — with normalized actions, a pure-Nu
11
11
  simulator, a composable observation spec, declarative sensors, and reference
12
12
  controllers for reproducible evaluation.
13
13
 
14
- Version 0.2.0. Python 3.10+.
14
+ Version 0.2.1. Python 3.10+.
15
15
 
16
16
  ## At a glance
17
17
 
@@ -41,17 +41,17 @@ which is documented in [Observation and action contract](#observation-and-action
41
41
 
42
42
  ## Installation
43
43
 
44
- The package is not on PyPI yet. Install the `v0.2.0` release wheel — it is attached
45
- to the [GitHub release](https://github.com/zhao6663/chassis-sim/releases/tag/v0.2.0) —
46
- or work from a checkout:
44
+ Install it from PyPI:
47
45
 
48
46
  ```bash
49
- pip install "chassis-sim[viz] @ https://github.com/zhao6663/chassis-sim/releases/download/v0.2.0/chassis_sim-0.2.0-py3-none-any.whl"
47
+ pip install "chassis-sim[viz]"
50
48
  ```
51
49
 
52
50
  Drop the `[viz]` suffix for a core install, or use `[planning]` for the Hybrid-A*
53
- map generator. The 0.1.x line (tag `v0.1.4`) is the migration case: it still has
54
- the old 494-value observation and the old single-config sensor API.
51
+ map generator. Need a pinned source instead of PyPI? Every tag carries a wheel on its
52
+ [GitHub release](https://github.com/zhao6663/chassis-sim/releases) page. The 0.1.x line
53
+ (tag `v0.1.4`) is the migration case: it still has the old 494-value observation
54
+ and the old single-config sensor API.
55
55
 
56
56
  From a checkout, with the development tools:
57
57
 
@@ -73,7 +73,7 @@ The core install depends only on `numpy`, `gymnasium`, and `pyyaml`.
73
73
  `matplotlib` is needed only for rendering and `imageio` only for GIF export; both
74
74
  come with the `viz` extra, which is what `examples/gallery.py` needs.
75
75
 
76
- The 0.2.0 line ships exactly one built-in simulator: the pure-NumPy `SimpleBridge`.
76
+ The 0.2.x line ships exactly one built-in simulator: the pure-NumPy `SimpleBridge`.
77
77
  No external simulator is required, and there is no `irsim` extra: the ir-sim and
78
78
  ROS 2 backends are not part of this package (they remain in the upstream training
79
79
  repository). `PhysicalCommandBridge` is the documented seam for such a backend.
@@ -1194,7 +1194,7 @@ If you use this package in academic work, cite the repository:
1194
1194
  ---
1195
1195
 
1196
1196
  All numbers in this README were measured on 2026-11-04 (UTC) with Python 3.12.0,
1197
- NumPy 1.26.4, and Gymnasium 1.3.0, on version 0.2.0. The default observation is 128
1197
+ NumPy 1.26.4, and Gymnasium 1.3.0, on version 0.2.1. The default observation is 128
1198
1198
  values on the two 2-action chassis and 129 on the mecanum. The evaluation matrix
1199
1199
  uses ten independent maps, `max_steps=500`, and `base_seed=0`. The code blocks in
1200
1200
  this file are executed as written in the repository's verification pass.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "chassis-sim"
7
- version = "0.2.0"
7
+ version = "0.2.1"
8
8
  description = "Gymnasium environments for Ackermann, differential-drive and mecanum chassis"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -7,6 +7,6 @@ ChassisSim-Mecanum-v0)。注册逻辑在 gym_registration.py,只依赖 gymna
7
7
 
8
8
  from . import gym_registration as _gym_registration # noqa: F401 - 注册副作用
9
9
 
10
- __version__ = "0.2.0"
10
+ __version__ = "0.2.1"
11
11
 
12
12
  __all__ = ["__version__"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: chassis-sim
3
- Version: 0.2.0
3
+ Version: 0.2.1
4
4
  Summary: Gymnasium environments for Ackermann, differential-drive and mecanum chassis
5
5
  Author-email: zhao6663 <30620187+zhao6663@users.noreply.github.com>
6
6
  License-Expression: MIT
@@ -47,7 +47,7 @@ steering, differential drive, and mecanum — with normalized actions, a pure-Nu
47
47
  simulator, a composable observation spec, declarative sensors, and reference
48
48
  controllers for reproducible evaluation.
49
49
 
50
- Version 0.2.0. Python 3.10+.
50
+ Version 0.2.1. Python 3.10+.
51
51
 
52
52
  ## At a glance
53
53
 
@@ -77,17 +77,17 @@ which is documented in [Observation and action contract](#observation-and-action
77
77
 
78
78
  ## Installation
79
79
 
80
- The package is not on PyPI yet. Install the `v0.2.0` release wheel — it is attached
81
- to the [GitHub release](https://github.com/zhao6663/chassis-sim/releases/tag/v0.2.0) —
82
- or work from a checkout:
80
+ Install it from PyPI:
83
81
 
84
82
  ```bash
85
- pip install "chassis-sim[viz] @ https://github.com/zhao6663/chassis-sim/releases/download/v0.2.0/chassis_sim-0.2.0-py3-none-any.whl"
83
+ pip install "chassis-sim[viz]"
86
84
  ```
87
85
 
88
86
  Drop the `[viz]` suffix for a core install, or use `[planning]` for the Hybrid-A*
89
- map generator. The 0.1.x line (tag `v0.1.4`) is the migration case: it still has
90
- the old 494-value observation and the old single-config sensor API.
87
+ map generator. Need a pinned source instead of PyPI? Every tag carries a wheel on its
88
+ [GitHub release](https://github.com/zhao6663/chassis-sim/releases) page. The 0.1.x line
89
+ (tag `v0.1.4`) is the migration case: it still has the old 494-value observation
90
+ and the old single-config sensor API.
91
91
 
92
92
  From a checkout, with the development tools:
93
93
 
@@ -109,7 +109,7 @@ The core install depends only on `numpy`, `gymnasium`, and `pyyaml`.
109
109
  `matplotlib` is needed only for rendering and `imageio` only for GIF export; both
110
110
  come with the `viz` extra, which is what `examples/gallery.py` needs.
111
111
 
112
- The 0.2.0 line ships exactly one built-in simulator: the pure-NumPy `SimpleBridge`.
112
+ The 0.2.x line ships exactly one built-in simulator: the pure-NumPy `SimpleBridge`.
113
113
  No external simulator is required, and there is no `irsim` extra: the ir-sim and
114
114
  ROS 2 backends are not part of this package (they remain in the upstream training
115
115
  repository). `PhysicalCommandBridge` is the documented seam for such a backend.
@@ -1230,7 +1230,7 @@ If you use this package in academic work, cite the repository:
1230
1230
  ---
1231
1231
 
1232
1232
  All numbers in this README were measured on 2026-11-04 (UTC) with Python 3.12.0,
1233
- NumPy 1.26.4, and Gymnasium 1.3.0, on version 0.2.0. The default observation is 128
1233
+ NumPy 1.26.4, and Gymnasium 1.3.0, on version 0.2.1. The default observation is 128
1234
1234
  values on the two 2-action chassis and 129 on the mecanum. The evaluation matrix
1235
1235
  uses ten independent maps, `max_steps=500`, and `base_seed=0`. The code blocks in
1236
1236
  this file are executed as written in the repository's verification pass.
File without changes
File without changes