pysim models - maneuver model

Simulation model : Maneuver

Description

  • Simulate driver behavior

Modules summary

  • Driver module - driver characteristics
    • set_char - set parameters according to driver characteristics
      • set_driver_param - set parameters
  • Behavior module - contain driver module and simulate driver’s behavior
    • Driver_set - set driver control parameter from determined driver module
    • Maneuver_config - set maneuver configuration
    • Lon_behavior - determine longitudinal behavior
      • Static_state_recog - longitudinal state recognition for static objectives
      • Dynamic_state_recog - longitudinal state recognition for dynamic objectives
      • Lon_vel_set - determine longitudinal velocity set point
      • Lon_control - control acceleration and brake pedal for velocity set point
    • Lat_behavior - determine lateral behavior
      • Lateral_state_recog - lateral state recognition for road offset, heading angle
      • Lat_control - control steering for road offset, heading angle

Update

  • [18/05/31] - Initial release - Kyunghan
  • [18/06/05] - Modification of lon control - Kyunghan
class pysim.models.model_maneuver.Mod_Behavior(Driver)[source]

Bases: object

  • Behavior module: Set the driver model when initialization
Drver_set(DriverSet)[source]

Arrange driver parameters for behavior controller

Define PID controller for velocity, offset, yaw

Args:
  • DriverSet: driver parameter set
Dynamic_state_recog(pre_veh_speed, pre_veh_reldis=250)[source]

Daynamic state recognition for driving conditions

Determine current longitudinal state for preceding vehicle

Args:
  • pre_veh_speed: Velocity of preceding vehicle [m/s]
  • pre_veh_reldis: Relative distance of preceding vehicle [m]
Returns:
  • stDynamic: Dynamic state
    • Cf: Car-following state
    • Cruise: No specific object
Lat_behavior(veh_position_x, veh_position_y, veh_ang, road_x, road_y)[source]

Simulate driver’s lateral behaviors according to driving state

Args:
  • veh_position_x: Vehicle position x on environment
  • veh_position_y: Vehicle position y on environment
  • veh_ang: Vehicle heading angle
  • road_x: Horizontal geometric information of environment
  • road_y: Vertical geometric information of environment
Returns:
  • u_steer: Driver’s steering value [-]
Include:
  • Mod_Behavior(Lateral_state_recog): Determine static state
  • Mod_Behavior(Lat_control): Control driver action
Lat_control(lane_offset, angle_diff, offset_des=0, angle_diff_des=0)[source]

Determine driver’s steering according to lateral offset, heading angle

Args:
  • lat_offset: Road offset [m]
  • angle_diff: Heading angle difference [rad]
  • offset_des: Desired lateral offset (initial = 0) [m]
  • angle_diff_des: Desired angular offset (initial = 0) [rad]
Returns:
  • steer_out_filt: Driver’s steering value [-]
Lateral_state_recog(veh_position_x, veh_position_y, veh_ang, road_x, road_y)[source]

Lateral state recognition according to road offset and heading angle

Args:
  • veh_position_x: Vehicle position x on environment
  • veh_position_y: Vehicle position y on environment
  • veh_ang: Vehicle heading angle
  • road_x: Horizontal geometric information of environment
  • road_y: Vertical geometric information of environment
Returns:
  • stLateral: Lateral state
    • angle_diff: Heading angle difference [rad]
    • lat_offset: Road offset [m]
Lon_behavior(static_obj_in, veh_position_s, road_len, veh_speed, pre_veh_speed='None', pre_veh_reldis=250)[source]

Simulate driver’s longitudinal behaviors according to driving state

Args:
  • static_obj_in: Static object information of driving route
  • road_len: Road length of driving route
  • veh_position_s: Current vehicle position on environment
  • veh_speed: Current vehicle velocity [m/s]
  • pre_veh_speed: Preceding vehicle velocity [m/s]
  • pre_veh_reldis: Relative distance to preceding vehicle [m]
Returns:
  • acc_out: Acceleration pedal position [-]
  • brk_out: Brake pedal position [-]
Include:
  • Mod_Behavior(Static_state_recog) : Determine static state
  • Mod_Behavior(Dynamic_state_recog) : Determine dynamic state
  • Mod_Behavior(Lon_vel_set) : Set velocity set point
  • Mod_Behavior(Lon_control) : Control driver action
Lon_control(veh_vel_set, veh_vel)[source]

Determine driver’s acceleration and brake pedal position according to velocity set point

Args:
  • veh_vel_set: Velocity set point [m/s]
  • veh_vel: Current vehicle velocity [m/s]
Returns:
  • u_acc: Driver’s acceleration pedal position [-]
  • u_brk: Driver’s brake pedal position [-]
Lon_vel_set(stStatic, stDynamic)[source]

Determine vehicle velocity set point according to longitudinal state

Velocity set point algorithm:

vel_set = min(vel_set_static, vel_set_dynamic)
    # vel_set_static
    if tmp_state_step_static == 'Cruise':
        veh_speed_set_static = self.conf_cruise_speed_set
    elif tmp_state_step_static == 'Tl_stop':
        veh_speed_set_static = self.conf_cruise_speed_set - self.conf_cruise_speed_set*(self.conf_forecast_dis - stStatic.state_reldis)/self.conf_forecast_dis
    elif tmp_state_step_static == 'Curve':
        veh_speed_set_static = self.conf_cruise_speed_set - stStatic.state_param*self.conf_curve_speed_set_curvcoef + stStatic.state_reldis*self.conf_curve_speed_set_discoef
    else:
        veh_speed_set_static = 0

    # vel_set_dynamic
    if tmp_state_step_dynamic == 'Cruise':
        veh_speed_set_dynamic = self.conf_cruise_speed_set
    else:
        veh_speed_set_dynamic = sorted((0, stDynamic.state_param , self.conf_cruise_speed_set))[1]
Args:
  • stStatic: Static state information
  • stDynamic: Dynamic state information
Returns:
  • veh_speed_set_filt: Vehicle velocity set point [m/s]
Maneuver_config(cruise_speed_set=15, mincv_speed_set=5, conf_curve_speed_set_curvcoef=1000, conf_curve_speed_set_discoef=0.01, transition_dis=20, forecast_dis=200, cf_dis=120, lat_off=0.5, filtnum_pedal=0.1, filtnum_steer=0.1, filtnum_spdset=1)[source]

Configure driver’s maneuver

Parameters:
  • Cruise speed set
  • Configurable parameters for static objectives
  • Filter values for driver’s control input
Static_state_recog(static_obj_in, road_len, veh_position_s)[source]

Static state recognition for driving conditions

Determine current longitudinal state for driving conditions

Args:
  • static_obj_in: Static object information of driving route
  • road_len: Road length of driving route
  • veh_position_s: Current vehicle position on environment
Returns:
  • stStatic: Static state
    • Tl (Traffic light): Distance to traffic light and traffic light state (red, green)
    • Curve: Distance to curve and curvature
    • Cruise: No specific object
class pysim.models.model_maneuver.Mod_Driver[source]

Bases: object

  • Driver module
set_driver_char(DriverChar='Normal')[source]

Set driver parameter values according to characteristics

Characteristics:
  • Normal
  • Aggressive
  • Defensive
set_driver_param(P_gain_lon=2, I_gain_lon=0.5, D_gain_lon=0, P_gain_lat=0.001, I_gain_lat=0.0001, D_gain_lat=0, P_gain_yaw=0.1, I_gain_yaw=0.1, D_gain_yaw=0, shift_time=0.5, max_acc=4)[source]

Set driver parameter values

Parameters:
  • PID gains for lon control
  • PID gains for lat offset control
  • PID gains for yaw control
  • Shift time
  • Maximum acceleration value
pysim.models.model_maneuver.Ts = 0.01

global vairable: simulation sampling timeself.

you can declare other sampling time in application as vairable Ts