irsim.lib.behavior.group_behavior_methods#

Classes#

OrcaGroupBehavior

Class-based ORCA group behavior with one-time initialization.

SfmGroupBehavior

Class-based Social Force Model group behavior.

Functions#

beh_omni_orca(members, **kwargs)

Registered initializer returning a class-based handler for ORCA.

beh_diff_orca(members, **kwargs)

Registered initializer returning a class-based ORCA handler for

beh_omni_sfm_group(members, **kwargs)

Registered initializer returning a class-based SFM handler for

beh_diff_sfm_group(members, **kwargs)

Registered initializer returning a class-based SFM handler for

Module Contents#

irsim.lib.behavior.group_behavior_methods.beh_omni_orca(members: list[irsim.world.object_base.ObjectBase], **kwargs: Any)[源代码]#

Registered initializer returning a class-based handler for ORCA.

irsim.lib.behavior.group_behavior_methods.beh_diff_orca(members: list[irsim.world.object_base.ObjectBase], **kwargs: Any)[源代码]#

Registered initializer returning a class-based ORCA handler for differential-drive robots.

class irsim.lib.behavior.group_behavior_methods.OrcaGroupBehavior(members: list[irsim.world.object_base.ObjectBase], neighborDist: float = 15.0, maxNeighbors: int = 10, timeHorizon: float = 20.0, timeHorizonObst: float = 10.0, safe_radius: float = 0.1, maxSpeed: float | None = None, **kwargs: Any)[源代码]#

Class-based ORCA group behavior with one-time initialization.

ORCA plans a collision-free holonomic velocity (vx, vy) in the world frame for every member. omni members have it rotated into their body frame; diff members map it to a (linear, angular) command via vel_world2diff().

irsim.lib.behavior.group_behavior_methods.beh_omni_sfm_group(members: list[irsim.world.object_base.ObjectBase], **kwargs: Any)[源代码]#

Registered initializer returning a class-based SFM handler for omnidirectional robots.

irsim.lib.behavior.group_behavior_methods.beh_diff_sfm_group(members: list[irsim.world.object_base.ObjectBase], **kwargs: Any)[源代码]#

Registered initializer returning a class-based SFM handler for differential-drive robots.

class irsim.lib.behavior.group_behavior_methods.SfmGroupBehavior(members: list[irsim.world.object_base.ObjectBase], vmax: float = 1.5, neighbor_threshold: float = 10.0, relaxation_time: float = 0.5, force_factor_desired: float = 1.0, force_factor_social: float = 2.1, force_factor_obstacle: float = 10.0, sigma_obstacle: float = 0.8, lambda_importance: float = 2.0, gamma: float = 0.35, n_angular: float = 2.0, n_velocity: float = 3.0, safety_radius: float = 0.0, social_groups: list[list[int]] | None = None, force_factor_coherence: float = 2.0, force_factor_group_repulsion: float = 1.0, group_repulsion_threshold: float | None = None, force_factor_gaze: float = 3.0, gaze_vision_angle: float = 90.0, target_roles: str = 'all', **kwargs: Any)[源代码]#

Class-based Social Force Model group behavior.

Same physics and parameter names as the per-object sfm behavior, evaluated for every member at once by SocialForceModelBatch. All members read one state snapshot, so the crowd does not depend on the order objects are stepped in, and the pairwise social force is NumPy array math instead of a Python loop per member.

Objects outside the group still take part: linestring obstacles enter as walls, every other object as a circular neighbour that pushes members but is not moved by them. target_roles filters those outside objects exactly as it does for the per-object behavior.

social_groups optionally partitions the members into pedestrians walking together (Moussaid et al. 2010): those receive coherence, intra-group repulsion and gaze forces on top of the three base forces. Indices refer to the member order of the YAML group.

A member without a goal has zero desired velocity: it stands still but still yields to neighbours. omni members receive the planned world velocity rotated into their body frame; diff members get it mapped to (linear, angular) via vel_world2diff().

property sfm: irsim.lib.algorithm.social_force_model.SocialForceModelBatch#

The batch solver holding the tuned parameters.