命令 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) |
