更新时间:2024-10-30 GMT+08:00
分享

动作(Actions)

用户首先使用初始动作InitActions来初始化实体entities,接着使用其他动作Actions展开实体entities的场景故事story。

初始动作(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)

初始动作(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)

动作(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)

相关文档