Skip to content

Releases: hanruihua/ir-sim

ir-sim-v2.9.3

06 Apr 13:20

Choose a tag to compare

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)
  • Fix:

    • Prevent infinite loop in WrapToPi/WrapTo2Pi for non-finite inputs. (#269)
  • Refactor:

    • Simplify file_check and find_file in util. (#256)

ir-sim-v2.9.2

15 Mar 16:16

Choose a tag to compare

  • Features:

    • Add env.create_robot() and env.create_obstacle() for programmatic object creation, and env.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() and set_goal_text() API for setting custom text on objects and goals. (#239)
    • Add typo detection and suggestions for invalid YAML configuration keys. (#227)
  • 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

16 Feb 03:53

Choose a tag to compare

  • 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 EnvGridMap protocol. 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/Union to X | Y syntax). #216
    • Add optional reload parameter to set_random_seed() that regenerates random obstacles with the new seed when set to True. #210
    • Default animation filename to the world name when not explicitly specified. #221
  • Fix:

    • Add grid-based collision detection for obstacle maps using grid array lookup for faster detection, cache STRtree in ObstacleMap. #205
  • Refactor:

    • Add input validation decorators (validate_shape, validate_length, ensure_column_vector, ensure_numpy) for kinematics and utility functions.
  • Docs:

    • Refine README.
    • Add grid map configuration and path planning documentation. #215

ir-sim-v2.9.0

25 Jan 18:29

Choose a tag to compare

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: 1 and angle_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 y key to toggle display render window on/off. (#194)
  • Refactor:

    • Environment parameters (env_param, world_param, path_param) are now instance-based rather than global, enabling proper multi-environment support. (#191)
  • Fix:

    • Fix robot property to raise IndexError with clear message when no robots exist. (#188)
    • Fix save_figure to handle filenames with multiple dots correctly. (#188)
    • Fix type annotations for get_group_by_name, get_obstacle_info_list, get_robot_info_list, and random_obstacle_position. (#188)
    • Fix set_ax_viewpoint to handle None objects parameter. (#188)
    • Add NotImplementedError for 3D state generation and uniform distribution (not yet implemented). (#188)
  • Docs:

    • Add changelog and contributing pages to documentation. (#203)
    • Improve custom behavior tutorial and examples. (#193)
    • Fix formatting issues in documentation. (#190)
  • 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

05 Jan 05:32

Choose a tag to compare

  • Features #183 by @hfr2015 :

    • Add group_name YAML parameter to help user manage the objects in the same group.
    • Add show_goal_text YAML parameter to decide whether to show the goal text on the plot.
    • Add get_group_by_name function to get the objects in the same group by the group name.
    • Update related documentation
  • Fix:

ir-sim-v2.8.1

12 Dec 16:58

Choose a tag to compare

Hotfix: Fix the autoapi extension issue in the documentation. bfa0a4c

ir-sim-v2.8.0

12 Dec 15:48

Choose a tag to compare

This version add the feature of group_behavior to support group-level behavior for all objects within the same group, which is more efficient for coordinated behaviors (like swarm or crowd simulation) as it computes actions for all members in a single step. The chinese (中文) version documentation is also supported.

  • Features:

    • Add group_behavior YAML parameter to support group-level behavior for all objects within the same group. #169
    • Integrate GroupBehavior class to handle group-level logic, allowing for both function-based and class-based behaviors. #169
    • Add ORCA (Optimal Reciprocal Collision Avoidance) behavior support implemented by pyrvo library, this behavior can be configured in the YAML file. #169 see usage orca_behavior_world
    • Update behavior_registry to support registration of behavior classes and group behavior classes using decorators (@register_behavior_class, @register_group_behavior_class). #169
    • Add viewpoint YAML parameter for rendering the plot with the viewpoint of the object. #162 see keyboard_control
  • Docs:

    • Support chinese version documentation. by @hfr2015 #173
    • Update documentation for group_behavior configuration, including ORCA parameters. #169
  • Fix:

    • rng random in generate_polygon function. 051fb8d
    • Group index increment issue. #169

New Contributors

ir-sim-v2.7.5

26 Oct 08:57

Choose a tag to compare

  • Features:

    • Add features to set/fix the seed in random environment generation for reproducibility.
      Simply add the seed parameter to the make function (e.g., env = irsim.make("random_obstacle.yaml", seed=2)) or set the seed using the env.set_random_seed function followed by env.reload(). See usage random_obstacle_seed for details. #147 #148 (thank @atinfinity for suggestions)
    • Add ORCA example (behavior) in ir-sim, implemented by pyrvo, a Python binding of the classic ORCA algorithm (C++ version, high efficiency). See usage orca world for details. #149
  • Bug fixes:

    • Fix issue where sampling time did not work. #149
    • Fix documentation errors. #152

ir-sim-v2.7.4

06 Oct 13:20

Choose a tag to compare

  • Features:

    • Add state normalization and an input-checking decorator function. #135
    • Add new key F5 to debug the environment. In debug mode, the environment pauses and waits for the next F5 to continue; press Space to exit debug mode. #137 (thank @hfr2015 for suggestions)
    • Add new key v to save the current figure. #137
    • Add flags for reload, debug, and quit. #137
  • Bug fixes:

    • Fix keyboard issues. #137
    • Fix goal plot issues. #141
  • Style:

    • Organize plot function for patch plot. #141
    • Organize logger info. #138

ir-sim-v2.7.3

20 Sep 06:04

Choose a tag to compare

  • Features:

    • Switch the default keyboard backend to pynput (global keyboard hook), with automatic fallback to Matplotlib (mpl) when pynput is unavailable. Note: mpl keyboard event can introduce delays when plotting many objects. #130
    • Parity for the pynput keyboard backend with mpl #130 :
      1. Keyboard input is handled only when the figure window is focused.
      2. Add a global_hook option in the keyboard config to allow input when the figure window is unfocused.
      3. Implement env reload and quit for the pynput backend.
    • Add an environment-level quit function. #130
    • Rename keyboard handlers in keyboard_control.py: _on_release_on_pynput_release, _on_press_on_pynput_press. #130
  • Bug fixes:

    • Correct goal plot alpha handling. c4b238e
    • Set default sample time to match step time. f549b16
    • Fix random obstacle plotting. #126
    • Fix GUI YAML example in the usage docs. c77d47b
    • Resolve LiDAR step timing for dynamic objects (LiDAR updates after all object poses are updated). #127
    • Fix keyboard issue on macOS. #130
  • Docs:

    • Clarify sensor update order. #131
    • Document keyboard control using the pynput backend. #131