irsim.lib.algorithm.rvo#

This file is the implementation of the Reciprocal Velocity Obstacle (RVO) algorithm for multi-robot collision avoidance.

Author: Ruihua Han

reference: MengGuo/RVO_Py_MAS

Classes#

reciprocal_vel_obs

A class to implement the Reciprocal Velocity Obstacle (RVO) algorithm for multi-robot collision avoidance.

Module Contents#

class irsim.lib.algorithm.rvo.reciprocal_vel_obs(state: list, obs_state_list=None, vxmax=1.5, vymax=1.5, acce=0.5, factor=1.0, line_obs_list=None)[源代码]#

A class to implement the Reciprocal Velocity Obstacle (RVO) algorithm for multi-robot collision avoidance.

参数:
  • state (list) -- The rvo state of the agent [x, y, vx, vy, radius, vx_des, vy_des].

  • obs_state_list (list) -- List of states of static obstacles [[x, y, vx, vy, radius]].

  • vxmax (float) -- Maximum velocity in the x direction.

  • vymax (float) -- Maximum velocity in the y direction.

  • acce (float) -- Acceleration limit.

  • factor (float) -- Penalty weighting factor for velocity selection.

  • line_obs_list (list) -- List of line segments [[x1, y1, x2, y2], ...].

state#
obs_state_list = None#
line_obs_list = None#
vxmax = 1.5#
vymax = 1.5#
acce = 0.5#
factor = 1.0#
update(state, obs_state_list, line_obs_list=None)[源代码]#
cal_vel(mode='rvo')[源代码]#

Calculate the velocity of the agent based on the Reciprocal Velocity Obstacle (RVO) algorithm.

参数:

mode (str) -- The vo configure to calculate the velocity. It can be "rvo", "hrvo", or "vo". - rvo: Reciprocal Velocity Obstacle (RVO) algorithm, for multi-robot collision avoidance. - hrvo: Hybrid Reciprocal Velocity Obstacle (HRVO) algorithm, for multi-robot collision avoidance. - vo: Velocity Obstacle (VO) algorithm, for obstacle-robot collision avoidance.

返回:

Selected velocity [vx, vy].

返回类型:

list[float]

config_rvo()[源代码]#
config_rvo_mode(obstacle)[源代码]#
config_hrvo()[源代码]#
config_hrvo_mode(obstacle)[源代码]#
config_vo()[源代码]#
config_vo_mode(obstacle)[源代码]#
config_vo_lines()[源代码]#

Compute VO cones for line segment obstacles.

For each segment, compute the angular span as seen from the agent, expanded by asin(r / dist) on each side to account for the agent radius. The apex is [0, 0] since line obstacles are static.

vel_candidate(rvo_list)[源代码]#
vo_out(vx, vy, rvo_list)[源代码]#
vel_select(vo_outside, vo_inside)[源代码]#
penalty(vel, vel_des, factor)[源代码]#
static between_vector(line_left_vector, line_right_vector, line_vector)[源代码]#
static cross_product(vector1, vector2)[源代码]#