更改人员状态

命令 0xce: 更改人员状态#

ubyte string
变量类型 人员 ID

更改人员的状态...

**可更改的人员变量概览**
变量 值类型 描述 Python 方法
add (0x80) 复杂(见下文) 在给定的边缘、位置和时间(秒)将新的人员插入到仿真中。此函数后应附加阶段(Stages),否则该人员将在出发后立即消失。 add
append stage (0xc4) 复杂(见下文) 将一个阶段(stageObject、waiting、walking 或 driving)附加到给定人员的计划中。 appendStage
appendDrivingStage
appendWaitingStage
appendWalkingStage
replace stage (0xcd) 复杂(见下文) 用给定的阶段对象替换第 n 个后续阶段。 replaceStage
remove stage (0xc5) int 移除第 n 个后续阶段。nextStageIndex 必须小于 getRemainingStages(personID) 的值。nextStageIndex 为 0 会立即中止当前阶段并进入下一阶段。当移除所有阶段时,阶段 0 应最后移除(python 函数 removeStages 会自动执行此操作)。 removeStage
removeStages
remove (0x81) int 立即从仿真中移除该人员。 remove
reroute (计算新路径) 按行程时间 (0x90) compound (<empty>) 计算到当前目的地的最小化行程时间的新路径。网络中每条边的假定值可以通过多种方式自定义。参见 Simulation/Routing#Travel-time_values_for_routing。用找到的路径替换当前路径。 rerouteTraveltime
move to XY (0xb4) compound (edgeID, x, y, angle, keepRoute) (见下文) 在正常移动发生后将人员移动到新位置。同时强制人员的角度为给定值(导航角度,单位为度)。更多详情见下文 moveToXY
color (0x45) ubyte,ubyte,ubyte,ubyte (RGBA) 为给定 ID 的人员设置颜色。例如,(255,0,0,255) 表示红色。 setColor
height (0xbc) double 设置此人员的高度(米)。 setHeight
length (0x44) double 设置给定人员的长度(米)。 setLength
min gap (0x4c) double 设置此车辆的偏移量(停止时与前方人员的间距)。 setMinGap
speed (0x5e) double 为指定人员设置后续步骤的最大速度(米/秒)。 setSpeed
type (0x4f) string (id) 为指定人员设置类型的 ID。 setType
width (0x4d) double 设置此人员的宽度(米)。 setWidth

compound 消息详情#

消息内容如下:

add (0x80)#

byte integer byte string byte string byte double byte double
值类型 compound 项目数量 (4) 值类型 string 类型 ID 值类型 string 初始边缘 ID 值类型 double 出发时间(秒) 值类型 double 出发位置

出发时间值为 -3 表示立即出发

append stage (0xc4)#

byte int byte int byte string byte string byte string byte stringList byte double byte double byte double byte string byte double byte double byte double byte string
值类型 compound 项目数量 (13) 值类型 int 阶段类型 值类型 string vType (可为空) 值类型 string line (可为空) 值类型 string destStop (可为空) 值类型 stringList 边缘列表 值类型 double 行程时间 值类型 double 成本 值类型 double 长度 值类型 string intended (可为空) 值类型 double 出发时间 值类型 double 出发位置 值类型 double 到达位置 值类型 string 描述 (可为空)

append waiting stage (0xc4)#

byte int byte int byte int byte string byte string
值类型 compound 项目数量 (4) 值类型 int 阶段类型 (1) 值类型 double 持续时间(秒) 值类型 string 描述 (可为空) 值类型 string stopID (可为空)

append walking stage (0xc4)#

byte int byte int byte stringList byte double byte int byte double byte string
值类型 compound 项目数量 (6) 值类型 int 阶段类型 (2) 值类型 stringlist 边缘列表 值类型 double 到达位置 值类型 double 持续时间(秒)(当给定正值时,速度根据持续时间和长度计算得出,否则使用速度) 值类型 double 速度(当给定正值时使用此速度,否则使用人员的默认速度) 值类型 string stopID (可为空)

append driving stage (0xc4)#

byte int byte int byte string byte string byte string
值类型 compound 项目数量 (4) 值类型 int 阶段类型 (3) 值类型 string 目的地边缘 ID 值类型 string 线路 值类型 string stopID (可为空)

replace stage (0xcd)#

byte int byte int byte int byte int byte string byte string byte string byte stringList byte double byte double byte double byte string byte double byte double byte double byte string
值类型 compound 项目数量 (2) 值类型 int 替换索引 值类型 compound 项目数量 (13) 值类型 int 阶段类型 值类型 string vType (可为空) 值类型 string line (可为空) 值类型 string destStop (可为空) 值类型 stringList 边缘列表 值类型 double 行程时间 值类型 double 成本 值类型 double 长度 值类型 string intended (可为空) 值类型 double 出发时间 值类型 double 出发位置 值类型 double 到达位置 值类型 string 描述 (可为空)

move to XY (0xb4)#

将人员移动到网络中与给定 x, y 网络坐标最匹配的位置。

参数 edgeID 是可选的,如果未知可以设置为 ""。它的用途是在有多条道路重叠(例如在桥梁上)时解决歧义,或者在交叉口(内部边重叠)提供额外的引导。

可选的 keepRoute 标志是一个位集,影响映射方式如下:

  • bit0 (当仅设置此位时 keepRoute = 1)
    • 1: 人员被映射到其现有路径中最接近的边缘。 如果在 100m 内未找到合适的位置,映射将失败并报错。
    • 0: 人员被映射到网络中最接近的边缘。 如果该边缘不属于原始路径,则当前路径将被仅包含该边缘的新路径替换。 在特殊情况下,如果新边缘连接到人员原本正走向的路口(即当穿过马路到另一边时), 当前路径边缘将被新边缘替换,路径的其余部分保持不变。 如果在 100m 内未找到合适的位置,映射将失败并报错。
  • bit1 (当仅设置此位时 keepRoute = 2)
    • 1: 人员被映射到网络中的确切位置。如果该位置位于道路网络之外,人员将停止自主移动, 直到通过另一个 TraCI 命令将其放回网络中。(如果 keeproute = 3,位置仍必须在车辆路径的 100m 范围内)
    • 0: 人员始终在道路上。
  • bit2 (当仅设置此位时 keepRoute = 4)
    • 1: 映射时忽略车道权限。这对于乱穿马路是必需的。
    • 0: 人员仅被映射到允许行人的车道。

角度值假定为导航角度(0 到 360 之间,0 在顶部,顺时针方向)。该角度用于对候选映射车道进行评分以解决歧义。映射后,人员的角度将被设置为给定值,用于绘图和所有输出。如果角度设置为特殊的 TraCI 常量 INVALID_DOUBLE_VALUE,则角度将不用于评分,人员将采用最佳找到车道的角度并相应地猜测行走方向。 当将人员映射到道路网络之外时,角度将根据先前位置和新位置计算得出。

Note

此函数也可用于强制将已加载但尚未出发的人员放入网络中(即在调用 person.add 之后立即)。

Caution

在调用 moveToXY 之间,人员可能仍会执行常规移动。人员位置之后会被重置,但这可能会影响其他行人。为避免这种情况,可以使用 person.setSpeed(personID, 0)

Caution

当将人员映射到当前不在其路径上的边缘时,新路径可能仅包含该边缘。一旦人员到达该边缘上的 arrivalPos,它就会消失,除非在该仿真步中收到另一个 moveToXY 命令。这意味着,当调用带有导致 SUMO 执行多个步的参数的 traci.simulationStep 时,人员可能会消失。

byte integer byte string byte double byte double byte double byte integer
值类型 compound 项目数量 5 值类型 string 边缘 ID(用于解决歧义,可以是任意值) 值类型 double x 位置(网络坐标) 值类型 double y 位置(网络坐标) 值类型 double 角度 值类型 byte keepRoute (0 - 7)