云服务器内容精选

  • 动作(lane_offset) 动作主体:车辆vehicle 结束时间:当动作主体actor到达目标偏移offset处时,动作结束。 是否支持modifier:否 参数:参数如下表,支持位置参数和关键字参数。参数target非必选项,不设置target时采用绝对偏移,设置target时采用相对偏移。 表7 lane_offset参数 Parameter Type Mandatory Description offset length yes Signed number in meters the vehicle should respect as an offset from the center of the current lane rate_peak speed yes Target value for the peak lateral velocity that must be achieved during the action dynamics_shape dynamics_shape yes Geometrical shape of the LaneOffsetAction's dynamics target entity no Reference entity offset值不能超出当前所在lane的宽度范围。 绝对偏移 m_shape: dynamics_shape = step Ego.lane_offset(0.8m, 0.5mps, m_shape) 相对偏移 m_shape: dynamics_shape = linear side_vehicle.lane_offset(offset:1.0m, rate_peak: 1.5mps, dynamics_shape:m_shape, target: Ego)
  • 动作(acquire_position) 动作主体:车辆vehicle或行人pedestrian。 结束时间:当动作主体actor获取目标位置position时,动作结束。 是否支持modifier:否 参数表: 参数如下表,pose_3d是point和orientation的组合结构, point可以使用xyz_point或odr_point或road_point中的任意一个,orientation非必选项。 表8 acquire_position参数 Parameter Type Mandatory Description target pose_3d yes target position acquire_position与acquire_position_init的使用方法相同,但由于不是初始动作,可以设置触发条件。 仿真器B尚未支持acquire_position动作。 代码样例见初始动作(acquire_position_init)。
  • 初始动作(assign_init_position) 动作主体:车辆vehicle或行人pedestrian。 结束时间:当动作主体actor到达指定的位置坐标时,动作结束。 是否支持modifier:是 参数:参数如下表 表2 assign_init_position参数 Parameter Type Mandatory Description position pose_3d no Desired position assigned by the user assign_init_position支持设置绝对位置和相对位置,设置相对位置时使用修饰器(position)和修饰器(lane)来给出相对值。 当初始位置需要车辆转换朝向时,通过设置pose_3d的orientation来设定朝向,以与所在车道朝向一致,例如车辆所在车道和road0呈90°夹角时,设置orientation的yaw为1.57rad,否则车辆启动后会有转向行为,影响场景的正常执行。 设置初始位置时所采用的地图元素必须是对应的地图中有的元素,比如设置绝对位置create_odr_point('0', '-4', 5.0m, 0.0m)时,地图上必须有id为'0'的road,该road上必须有lane_id为 '-4'的lane,该lane至少有5.0m以上的长度。如果设置的初始位置找不到地图中的对应元素,将泛化出无效的场景。 绝对位置 m_odr: odr_point = map.create_odr_point('0', '-4', 5.0m, 0.0m) m_orientation: orientation_3d with: keep(it.roll == 0.0rad) keep(it.pitch == 0.0rad) keep(it.yaw == 1.57rad) init_position: pose_3d with: keep(it.odr_point == m_odr) keep(it.orientation == m_orientation) Ego.assign_init_position(position: init_position) 相对位置 cut_in_vehicle.assign_init_position() with: lane(lane: raletive_lane_id, side_of: Ego, side: left) position(distance: 85.0m, behind: Ego)
  • 初始动作(acquire_position_init) 动作主体:车辆vehicle或行人pedestrian。 结束时间:当动作主体actor获取目标位置position时,动作结束。 是否支持modifier:否 参数表: 参数如下表,pose_3d是point和orientation的组合结构,point可以使用xyz_point或odr_point或road_point中的任意一个,orientation非必选项。 表3 acquire_position_init参数 Parameter Type Mandatory Description target pose_3d yes target position 目标位置必须在地图设定的道路上,且是可达的。 xyz_point,有方向要求 m_x: length = 0.0m m_xyz: xyz_point = map.create_xyz_point(x: m_x, y: 10.0m ,z: 0.0m) m_heading: angle = 1.57rad m_orientation: orientation_3d with: keep(it.roll == 0.0rad) keep(it.pitch == 0.0rad) keep(it.yaw == m_heading) m_position: pose_3d with: keep(it.xyz_point == m_xyz) keep(it.orientation == m_orientation) Ego.acquire_position_init(target: m_position) odr_point,无方向要求 m_odr: odr_point = map.create_odr_point(road_id: '0', lane_id: '-4', s: 5.0m, t: 0.0m) m_position: pose_3d with: keep(it.odr_point == m_odr) Ego.acquire_position_init(target: m_position) road_point,无方向要求 m_road: road_point = map.create_road_point(road_id: '0', s: 5.0m, t: 0.0m) m_position: pose_3d with: keep(it.road_point == m_road) Ego.acquire_position_init(target: m_position)
  • 动作(change_speed) 动作主体:车辆vehicle或行人pedestrian。 结束时间:当动作主体actor达到目标速度target ,动作结束。 是否支持modifier:否 参数:参数如下表,支持位置参数和关键字参数。 表4 change_speed参数 Parameter Type Mandatory Description reference entity no Default=it.actor. Reference to the entity that is used to determine the target speed. If this argument is omitted, the actor itself is used as reference target speed yes Target value for the speed at the end of the action rate_profile dynamics_shape yes Assign a shape for the change of the speed variable. This profile affects the acceleration during action execution rate_peak acceleration yes Target value for the peak acceleration that must be achieved during the action 目标速度不能超出所在道路的限速值。 当rate_profile为step时,瞬间达到目标速度,不会受到rate_peak值的影响。 样例 m_profile: dynamics_shape = sinusoidal Ego.change_speed(reference: lead_vehicle, target: -5.0mps, rate_profile: m_profile, rate_peak: 2mpss)
  • 动作(change_lane) 动作主体:车辆vehicle 结束时间:当动作主体actor位于目标车道lane中、目标偏移offset处时,动作结束。 是否支持modifier:否 参数:参数如下表,支持关键字参数。rate_peak和rate_profile是必选项,用于设置osc1中的dynamics、target和reference必须设置且只设置其中之一,前者用于指定绝对车道,后者用于指定相对车道。 表5 change_lane参数 Parameter Type Mandatory Description number_of_lanes uint no The target lane is "num_of_lanes" to the side of the reference entity. Use in conjunction with "side" side lane_change_side no Select on which side of the reference entity reference entity no Default=it.actor. Reference to the entity that is used to determine the target lane. If this argument is omitted, the actor itself is used as reference offset length no Default=0.0. Target offset from center of the target lane that the actor follows at the end of the action rate_profile dynamics_shape yes Assign a shape for the change of the lateral position variable (t-axis). This profile affects the lateral velocity during action execution rate_peak speed yes Target value for the peak lateral velocity that must be achieved during the action target lane_id(uint) no The actor starts and finishes the action in the target lane 目标lane必须在地图上。 中心线左侧的lane_id为正,如'1','2'。右侧的lane_id为负,如'-1','-3'。绝对值越大,距离中心线越远。 offset值不能超出当前所在lane的宽度范围。 使用相对位置时,参考对象reference必须是车辆。 rate_profile只能选择linear或step。 绝对车道1 my_lane: lane with: keep(it.lane_id == '1') m_profile: dynamics_shape = linear side_vehicle.change_lane(target: my_lane, rate_profile: m_profile, rate_peak: 0.3mps) 绝对车道2 my_lane: lane with: keep(it.lane_id == '-1') m_profile: dynamics_shape = linear side_vehicle.change_lane(target: my_lane, offset: -0.2m, rate_profile: m_profile, rate_peak: 0.4mps) 相对车道1 m_profile: dynamics_shape = step m_side: lane_change_side = left m_profile: dynamics_shape = step Ego.change_lane(number_of_lanes: 2, side: m_side, reference: side_vehicle, offset: 0.8m, rate_profile: m_profile, rate_peak: 0.3mps) 相对车道2 m_profile: dynamics_shape = step m_side: lane_change_side = same m_profile: dynamics_shape = step Ego.change_lane(number_of_lanes: 1, reference: side_vehicle, side:m_side, rate_profile: m_profile, rate_peak: 0.3mps)
  • 动作(activate_controller) 动作主体:车辆vehicle 结束时间:激活或停用控制器controller后,动作结束。 是否支持modifier:否 参数:参数如下表,支持位置参数和关键字参数。 表6 activate_controller参数 Parameter Type Mandatory Description lateral bool yes In lateral domain: Activate or deactivate controller defined (e.g. automated, autonomous) behavior longitudinal bool yes In longitudinal domain: Activate or deactivate autonomous behavior 代码样例: Ego.activate_controller(lateral:true, longitudinal:true)
  • 初始动作(assign_init_speed) 动作主体:车辆vehicle或行人pedestrian 。 结束时间:当动作主体actor达到指定的速度speed时,动作结束。 是否支持modifier:是 参数:参数如下表 表1 assign_init_speed参数 Parameter Type Mandatory Description target speed yes Desired (scalar) speed assigned by the user assign_init_speed支持设置绝对速度和相对速度,设置相对速度时使用修饰器(speed)来给出相对值。 设置初始速度时,初始速度不能超过该主体所在道路的限速。 如果所需场景起始速度为0,无需使用assign_init_speed动作。 绝对速度 init_speed: speed = 10.0mps Ego.assign_init_speed(init_speed) 相对速度 cut_in_vehicle.assign_init_speed() with: speed(speed: 5mps, faster_than: Ego)
  • 逻辑场景(Logical scenario) 逻辑场景的参数声明通过:范围型[最小值..最大值] 和枚举型[值1, 值2] 的方式来实现泛化: 范围型支持float和scalar类型。 枚举型支持int, float, bool, str, enum和scalar类型,且需要保证枚举列表中的元素均为相同类型。 例1:范围型 m_value: float = [2.0..3.0] v: speed = [5mps..10mps] delay: time = [40s..60s] m_a: acceleration = [0.00mpss..0.03mpss] 例2:枚举型 m_ id: int = [-1, 2] m_value: float = [2.0, 3.0] m_on_road: bool = [true, false] Ego_name: string = ["Audi_A3_2009_black", "Audi_A3_2009_red"] m_shape: dynamics_shape = [linear, sinusoidal] m_side: side_left_right = [left, right] v: speed = [5mps, 7mps, 10mps] m_a: acceleration = [0.01mpss, 0.03mpss] delay: time = [40s, 60s, 100s] 通过泛化参数,可以实现实体entity 、动作act ,以及修饰器modifier的泛化。 Struct类型不能直接泛化,而是通过泛化参数来进行泛化。 例1:entity泛化 Ego_name: string = ["Audi_A3_2009_black", "Audi_A3_2009_red"] Ego_controller: string = "DefaultDriver" Ego: vehicle with: keep(it.name == Ego_name) keep(it.initial_bm == Ego_controller) 例2:act泛化 m_lateral: bool = [true, false] m_speed: speed = [5mps..15mps] m_rate_profile: dynamics_shape = linear Ego.activate_controller(m_lateral, true) Ego.change_speed(target: m_speed, rate_peak: 0.0mpss, rate_profile: m_rate_profile) 例3:modifier泛化 m_speed: speed = [5mps..15mps] Ego.assign_init_speed() with: speed(speed: m_speed) 例4:Struct类型泛化 m_lane_id: int = [-1, 2] m_odr: odr_point = map.create_odr_point(road_id: '0', lane_id:m_lane_id, s: 5.0m, t: 0.0m) m_x: distance = [2m..7.5m] m_position_3d: position_3d = map.create_xyz_point(x: m_x, y: 10.0m ,z: 0.0m) m_pose_3d: pose_3d with: keep(it.odr_point == m_odr)
  • 具体场景(Concrete scenario) 具体场景的参数声明支持基础类型、标量(scalar)类型、枚举(enum)类型,和结构(struct)类型: 基础类型包含int、float、bool,和string类型。可以直接在等号后赋值。 scalar类型包含speed、acceleration、length、time,和angle类型。赋值时需要在值后加上OSC2.0支持的单位(见附录Scalar units)。 enum类型包含side_left_right、distance_direction、distance_mode、 lane_change_side、 dynamics_shape和catalog。赋值时必须使用枚举列表内的值(见附录Enum list) 。 struct类型包含odr_point、xyz_point、position_3d、road_point、orientation_3d和pose_3d等,可以使用keep创建。此外,odr_point、xyz_point,和road_point分别可以使用map的成员函数create_odr_point 、 create_xyz_point和create_road_point来创建(OSC2.0支持的struct类型详见附录Struct)。 给bool型赋值时必须使用“true”和“false”,如果使用“True”或“False”或拼写错误将使语句无效。 例1:基础类型 m_road_id: string = '0' Ego_name: string = "Audi_A3_2009_black" m_lateral: bool = true 例2:scalar类型 v: speed = 5mps delay: time = 40s distance: length = 30.0m m_a: acceleration = 0.01mpss 例3:enum类型 m_side: side_left_right = right m_direction: distance_direction = longitudinal 例4:struct类型,keep创建 my_odr: odr_point with: keep(it.road_id == 0) keep(it.lane_id == -1) keep(it.s == 3.0m) keep(it.t == 0.0m) my_pos: position_3d with: keep(it.x == 1.0m) keep(it.y == 2.0m) keep(it.z == 3.0m) my_xyz: xyz_point with: keep(it.position == my_pos) my_road: road_point with: keep(it.road_id == '1') keep(it.s == 3.0m) keep(it.t == 0.0m) my_orientation: orientation_3d with: keep(it.roll == 1.0rad) keep(it.pitch == 2.0rad) keep(it.yaw == 3.0rad) my_pose: pose_3d with: keep(it.xyz_point == my_xyz) keep(it.orientation == m_orientation) m_trajectory: trajectory with: keep(it.points == [my_pose1, my_pose2, my_pose3]) keep(it.time_stamps == [0s, 5s, 20s] ) 例5:struct类型,map创建 my_odr: odr_point = map.create_odr_point(road_id: m_road_id,lane_id:'-4',s: 5.0m, t: 0.0m) my_xyz: xyz_point = map.create_xyz_point(x: 2.5m, y: 10.0m ,z: 0.0m) my_point: road_point = map.create_road_point(road_id: '1', s: 5.0m, t: 0.0m)
  • 触发器与触发条件 Trigger and condition 用户可以使用wait+触发条件的方式来设置动作的触发条件condition ,可以使用的触发条件有: elapsed 、 object_distance、 point_distance 、time_to_collision、 time_headway 、 speed ,和acceleration . 如果不满足等待时长或触发条件,后续动作将无法执行. 使用wait来设定触发条件condition时,必须在serial:下执行,否则wait无效. 触发条件 elapsed 触发条件 object_distance 触发条件 point_distance 触发条件 time_to_collision 触发条件 time_headway 触发条件 speed 触发条件 acceleration 父主题: 代码样例 Code Examples
  • 动作 Actions 用户首先使用初始动作InitActions 来初始化实体entities ,接着使用其他动作Actions 展开实体entities 的场景故事story . 初始动作 assign_init_speed 初始动作 assign_init_position 初始动作 acquire_position_init 动作 change_speed 动作 change_lane 动作 activate_controller 动作 lane_offset 动作 acquire_position 父主题: 代码样例 Code Examples
  • 动作 Actions 用户首先使用初始动作InitActions 来初始化实体entities ,接着使用其他动作Actions 展开实体entities 的场景故事story . 初始动作 assign_init_speed 初始动作 assign_init_position 初始动作 acquire_position_init 动作 change_speed 动作 change_lane 动作 activate_controller 动作 lane_offset 动作 acquire_position 父主题: 代码样例 Code Examples