Releases: hanruihua/ir-sim
Release list
ir-sim-v2.10.2
-
Fix:
- Apply body-frame circle-center offsets consistently across collision geometry, rendering, convex
G/hconstraints, and RVO neighbor state, and clamp the HRVO inverse-sine input. Keeps offset and Ackermann circles aligned across representations and prevents math-domain failures. (#344)
- Apply body-frame circle-center offsets consistently across collision geometry, rendering, convex
-
Refactor:
- Extract object rendering from
ObjectBaseinto a dedicatedObjectPlotclass and encapsulate plotting options in dataclasses while preserving the public API and option precedence. Separates rendering responsibilities without breaking existing callers. (#345)
- Extract object rendering from
-
Docs:
- Move 17 documentation GIFs (~64 MB) to the dedicated IR-SIM-GIFs repository and replace local paths with remote URLs. Keeps the source tree lightweight without losing visual examples. (#341)
- Align usage and YAML documentation with runtime defaults, expand public API docstrings, and improve API navigation in English and Chinese. Keeps documented behavior and entry points consistent with the implementation. (#343)
- Refresh Chinese translation catalogs, clarify
world.statussemantics, remove the undocumented"Done"value from the documented runtime-status list, and upgrade Ruff to 0.16.0 with reformatted Markdown code blocks. Keeps bilingual documentation and linted examples synchronized. (#347)
-
Tests:
- Consolidate 25 test files into 13, raise
irsim/coverage from 96.7% to 97.3%, and reduce the local suite runtime from 3:02 to 2:08. Route environment and world parameter module access through their bound instances to prevent leaked global state while making the suite smaller and more reliable. (#346)
- Consolidate 25 test files into 13, raise
ir-sim-v2.10.1
-
Features:
- Add
orcagroup behavior fordiffrobots (ORCA's holonomic velocity mapped to(linear, angular)viaomni_to_diff), extending reciprocal collision avoidance to differential-drive fleets; see the19orca_world/orca_diff_worldexample. (#333) - Add a fog-of-map overlay (
FogMap, enabled viaworld: {fog_map: true, fog_map_resolution: ...}) revealed by each robot's lidar orfovsector, for modeling exploration under partial observability; see the24fog_worldexample. (#337)
- Add
-
Performance:
- Speed up the lidar step ~2x when a dynamic obstacle overlaps a static map. (#332)
-
Fix:
- Fix
dashin-place yaw oscillation and stalling when the goal is behind the robot. (#331) - Fix
diffRVO freezing when the goal is directly behind the robot. (#331) - Fix the headless keyboard event-queue overflow when spawning many environments. (#331)
- Keep saved animation frames at a fixed size and pad video to even dimensions so the saved mp4/gif matches the on-screen figure. (#330)
- Suppress the default velocity arrow on static obstacles (regression from v2.9.2's kinematics-handler refactor). (#313)
- Fix
-
Refactor:
- Send warnings and errors to the logger instead of
print. (#326)
- Send warnings and errors to the logger instead of
-
Docs:
- Overhaul the documentation site for clarity and navigation, with full English/Chinese parity. (#325)
- Add the arXiv paper citation and badge to the README. (#320)
- Add the IRSIM-3DGS-Bridge community project link. (#317) (@Wayneyujie)
New Contributors
- @Wayneyujie made their first contribution in #317
Full Changelog: v2.10.0...v2.10.1
ir-sim-v2.10.0
2.10.0
Minor release adding two new perception/behavior capabilities — the Social Force Model (SFM) for pedestrian-style crowd avoidance and a simplified 2D FMCW LiDAR sensor with per-beam radial velocity.
-
Features:
- Add simplified 2D FMCW LiDAR sensor with range-and-velocity returns and a
22fmcw_lidar_worldusage example. (#293) (@KevinLADLee ) - Add Social Force Model (SFM) behavior for
diffandomnikinematics (anisotropic Moussaid-Helbing 2009 variant) with a23sfm_worldcross-corridor usage example. (#307)
- Add simplified 2D FMCW LiDAR sensor with range-and-velocity returns and a
-
Performance:
- Cache
velocity_xy,rvo_neighbor_state, andrvo_line_segmentsper-tick onObjectBase— ~4× faster SFM/RVO step. (#307)
- Cache
-
Docs:
-
Tests:
- Add
tests/test_sfm.pycovering the SFM algorithm and behavior registration. (#307)
- Add
ir-sim-v2.9.4
2.9.4
-
Features:
- Add
omni_angularkinematics and refactoromnito body-frame velocities, with redesigned keyboard control. (#270) @williamleong - Add
env.reset(random=True)to re-sample randomized scenes without re-reading the YAML. (#283) - Add
random_uniformsampler with pairwise min-distance and world-derived defaults forrandom/circledistributions. (#283) - Add
env.refresh()/ObjectBase.refresh()to sync geometry, sensors, and collision tree without stepping. (#284)
- Add
-
Performance:
- Replace circle-buffer obstacle-map geometry with vectorized
shapely.box+unary_union: ~3× fewer linestrings, ~24× fewer coordinates, ~3.8× faster lidar step, and closes diagonal ray-leak gaps. (#276)
- Replace circle-buffer obstacle-map geometry with vectorized
-
Fix:
-
Docs:
- Fix broken cross-references and update omni velocity description to body-frame (EN + zh_CN). (#278)
ir-sim-v2.9.3
2.9.3
-
Features:
- Add loop mode for waypoint navigation behavior. (#266)
- Add line obstacle support to RVO algorithm. (#250)
- Add CBF-QP and collision-cone usage examples. (#258) (@Lawliet9666)
-
Performance:
- Vectorize lidar range/origin filter and skip
union_all, ~48% faster lidar step on map-based arenas. (#257) (@williamleong) - Use STRtree intersects predicate for lidar map segment filtering, ~26% faster lidar step on PNG-map arenas. (#255) (@williamleong)
- Cache geometry validity and streamline lidar map ray intersection, ~18% faster lidar step on PNG-map arenas. (#254) (@williamleong)
- Vectorize lidar range/origin filter and skip
-
Fix:
- Prevent infinite loop in
WrapToPi/WrapTo2Pifor non-finite inputs. (#269)
- Prevent infinite loop in
-
Refactor:
- Simplify
file_checkandfind_filein util. (#256)
- Simplify
ir-sim-v2.9.2
-
Features:
- Add
env.create_robot()andenv.create_obstacle()for programmatic object creation, andenv.add_object()/env.add_objects()for adding them at runtime. (#251) - Add
check_arrive()method to check if an object has reached a given goal, and initialize plot for dynamically added objects. (#240) - Add
set_text()andset_goal_text()API for setting custom text on objects and goals. (#239) - Add typo detection and suggestions for invalid YAML configuration keys. (#227)
- Add
-
Refactor:
- Centralize kinematics metadata (default color, state_dim, description) in the handler registry to make the kinematics be added more easily. (#237)
-
Fix:
- Improve robustness of save animation by reading and saving frames one by one instead of loading all images into memory. (#230) (@williamleong)
-
Docs:
- Add "Dynamic Object Management" section to the Make Environment documentation. (#251)
- Fix and update Chinese translations.
ir-sim-v2.9.1
-
Features:
- Add Perlin noise and image-based grid map generators, new JPS (Jump Point Search) and Informed RRT* path planners, and refactor existing planners (A*, RRT, RRT*, PRM) to use the
EnvGridMapprotocol. see usage 20 #215 (@KevinLADLee) - Drop Python 3.9 support, add Python 3.14 support. Raise minimum Python version to 3.10, modernize type annotations (
Optional/UniontoX | Ysyntax). #216 - Add optional
reloadparameter toset_random_seed()that regenerates random obstacles with the new seed when set toTrue. #210 - Default animation filename to the world name when not explicitly specified. #221
- Add Perlin noise and image-based grid map generators, new JPS (Jump Point Search) and Informed RRT* path planners, and refactor existing planners (A*, RRT, RRT*, PRM) to use the
-
Fix:
- Add grid-based collision detection for obstacle maps using grid array lookup for faster detection, cache STRtree in
ObstacleMap. #205
- Add grid-based collision detection for obstacle maps using grid array lookup for faster detection, cache STRtree in
-
Refactor:
- Add input validation decorators (
validate_shape,validate_length,ensure_column_vector,ensure_numpy) for kinematics and utility functions.
- Add input validation decorators (
-
Docs:
- Refine README.
- Add grid map configuration and path planning documentation. #215
ir-sim-v2.9.0
Assistant by claude code, this version adds multi-environment support with instance-based parameters, allowing multiple independent simulation environments to run simultaneously. It also introduces 1D ToF sensor support and keyboard improvements.
-
Features:
- Add 1D ToF (Time-of-Flight) sensor support by setting lidar2d sensor
number: 1andangle_range: 0. (#200) by @williamleong - Add multi-environment keyboard switching support. Only one environment responds to keyboard input at a time; switching occurs via mouse click or focus events. (#192)
- Add
ykey to toggle display render window on/off. (#194)
- Add 1D ToF (Time-of-Flight) sensor support by setting lidar2d sensor
-
Refactor:
- Environment parameters (
env_param,world_param,path_param) are now instance-based rather than global, enabling proper multi-environment support. (#191)
- Environment parameters (
-
Fix:
- Fix
robotproperty to raiseIndexErrorwith clear message when no robots exist. (#188) - Fix
save_figureto handle filenames with multiple dots correctly. (#188) - Fix type annotations for
get_group_by_name,get_obstacle_info_list,get_robot_info_list, andrandom_obstacle_position. (#188) - Fix
set_ax_viewpointto handleNoneobjects parameter. (#188) - Add
NotImplementedErrorfor 3D state generation and uniform distribution (not yet implemented). (#188)
- Fix
-
Docs:
-
Tests:
- Refactor and improve test coverage from 94% to 97%. (#189)
- Add tests for multi-env keyboard switching and display toggle.
ir-sim-v2.8.2
-
- Add
group_nameYAML parameter to help user manage the objects in the same group. - Add
show_goal_textYAML parameter to decide whether to show the goal text on the plot. - Add
get_group_by_namefunction to get the objects in the same group by the group name. - Update related documentation
- Add
-
Fix:
ir-sim-v2.8.1
Hotfix: Fix the autoapi extension issue in the documentation. bfa0a4c