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 moduleand 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
- Behavior module - contain
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
drivermodel 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 stateMod_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 stateMod_Behavior(Dynamic_state_recog): Determine dynamic stateMod_Behavior(Lon_vel_set): Set velocity set pointMod_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
- Behavior module: Set the
-
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