数据模型

MetaCar 库使用了丰富的数据模型来表示场景中的各种元素,包括道路、车辆、交通灯等。这些数据模型都是使用 Python 的 dataclass 实现的,提供了类型提示、自动生成的初始化方法以及更好的代码可读性,使得开发者能够更清晰地理解和使用这些数据结构。

场景和道路相关

子场景信息

class metacar.SubSceneInfo(sub_scene_name: str, start_point: Vector3, end_point: Vector3)[源代码]

子场景信息

end_point: Vector3

终点

start_point: Vector3

起点

sub_scene_name: str

子场景名称

道路线类型

class metacar.LineType(*values)[源代码]

基类:Enum

道路线类型

MIDDLE_LINE = 1

中线

SIDE_LINE = 2

侧线

SOLID_LINE = 3

实线

STOP_LINE = 4

停止线

ZEBRA_CROSSING = 5

斑马线

DASH_LINE = 6

虚线

边界信息

class metacar.BorderInfo(border_type: LineType, path_point: list[Vector2])[源代码]

车道边界信息

border_type: LineType

边界类型

path_point: list[Vector2]

组成边界线的点,相邻点间隔约 3~5 米

车道信息

class metacar.LaneInfo(id: str, left_border: BorderInfo, right_border: BorderInfo, left_lane: str, right_lane: str, width: float, path_point: list[Vector2])[源代码]

车道信息

id: str

车道 ID

left_border: BorderInfo

左侧边界

left_lane: str

左侧车道 ID

path_point: list[Vector2]

车道中心线

right_border: BorderInfo

右侧边界

right_lane: str

右侧车道 ID

width: float

车道宽度

道路驾驶类型

class metacar.DrivingType(*values)[源代码]

基类:Enum

行驶类型

MOTOR_VEHICLE_ALLOWED = 1

机动车可行驶

NON_MOTOR_VEHICLE_ALLOWED = 2

非机动车可行驶

PEDESTRIAN_ALLOWED = 3

行人可行

交通标志类型

class metacar.TrafficSign(*values)[源代码]

基类:Enum

交通标志

NO_SIGN = 0

无标志

SPEED_LIMIT_SIGN = 1

限速标志

STOP_SIGN = 2

停止标志

V2X_SIGN = 3

V2X 标志

道路信息

class metacar.RoadInfo(id: str, begin_pos: Vector3, end_pos: Vector3, driving_type: DrivingType, traffic_sign: TrafficSign, stop_line: list[Vector2], predecessor: list[str], successor: list[str], lane_data: list[LaneInfo])[源代码]

道路信息,一条道路(Road)由一个或多个车道(Lane)组成

begin_pos: Vector3

起点

driving_type: DrivingType

行驶类型

end_pos: Vector3

终点

id: str

道路 ID

lane_data: list[LaneInfo]

车道信息

predecessor: list[str]

前驱道路 ID

stop_line: list[Vector2]

停止线位置

successor: list[str]

后继道路 ID

traffic_sign: TrafficSign

交通标志

场景静态数据

class metacar.SceneStaticData(route: list[Vector3], road_lines: list[RoadInfo], sub_scenes: list[SubSceneInfo])[源代码]

场景静态信息

road_lines: list[RoadInfo]

道路信息

route: list[Vector3]

路线

sub_scenes: list[SubSceneInfo]

子场景信息

车辆和位置相关

位姿信息

class metacar.PoseGnss(pos_x: float, pos_y: float, pos_z: float, vel_x: float, vel_y: float, vel_z: float, ori_x: float, ori_y: float, ori_z: float)[源代码]

车辆位姿信息

ori_x: float

欧拉角 X(单位:角度)

ori_y: float

欧拉角 Y(单位:角度)

ori_z: float

欧拉角 Z(单位:角度)

pos_x: float

位置 X

pos_y: float

位置 Y

pos_z: float

位置 Z

vel_x: float

速度 X

vel_y: float

速度 Y

vel_z: float

速度 Z

档位模式

class metacar.GearMode(*values)[源代码]

基类:Enum

档位模式

NEUTRAL = 0

空档

DRIVE = 1

前进档

REVERSE = 2

倒车档

PARKING = 3

停车档

主车信息

class metacar.MainVehicleInfo(main_vehicle_id: int, speed: float, gear: GearMode, throttle: float, brake: float, steering: float, length: float, width: float, height: float, signal_light_left_blinker: bool, signal_light_right_blinker: bool, signal_light_double_flash: bool, signal_light_brake_light: bool, signal_light_front_light: bool)[源代码]

主车信息

brake: float

刹车

gear: GearMode

档位

height: float

高度

length: float

长度

main_vehicle_id: int

主车 ID

signal_light_brake_light: bool

刹车灯

signal_light_double_flash: bool

双闪

signal_light_front_light: bool

前灯

signal_light_left_blinker: bool

左转向灯

signal_light_right_blinker: bool

右转向灯

speed: float

车速

steering: float

方向盘

throttle: float

油门

width: float

宽度

传感器相关

欧拉角

class metacar.models.EulerAngle(ori_x: float, ori_y: float, ori_z: float)[源代码]

欧拉角

ori_x: float

欧拉角 X(单位:角度)

ori_y: float

欧拉角 Y(单位:角度)

ori_z: float

欧拉角 Z(单位:角度)

摄像头信息

class metacar.CamaraInfo(id: str, position: Vector3, angle: EulerAngle, fov: float, intrinsic_matrix: list[float], image_w: int, image_h: int)[源代码]

摄像头信息

angle: EulerAngle

角度

fov: float

视场角

id: str

摄像头 ID

image_h: int

图像高度

image_w: int

图像宽度

intrinsic_matrix: list[float]

内参矩阵

position: Vector3

位置

传感器信息

class metacar.SensorInfo(ego_rgb_cams: list[CamaraInfo], v2x_cams: list[CamaraInfo])[源代码]

传感器信息

ego_rgb_cams: list[CamaraInfo]

主车摄像头

v2x_cams: list[CamaraInfo]

V2X 摄像头

障碍物相关

障碍物类型

class metacar.ObstacleType(*values)[源代码]

基类:Enum

障碍物类型

UNKNOWN = 0

未知障碍物

PEDESTRIAN = 4

行人

CAR = 6

小汽车

STATIC = 7

静态障碍物

BICYCLE = 8

自行车

ROAD_MARK = 12

道路标记

TRAFFIC_SIGN = 13

交通标志

TRAFFIC_LIGHT = 15

交通信号灯

RIDER = 17

骑手

TRUCK = 18

卡车

BUS = 19

公交车

SPECIAL_VEHICLE = 20

特种车辆

MOTORCYCLE = 21

摩托车

DYNAMIC = 22

动态障碍物

SPEED_LIMIT_SIGN = 26

限速标志(限速值以 "SpeedLimit|30"(单位:km/h) 的格式在 ObstacleInfo.redundant_value 中给出)

BICYCLE_STATIC = 27

静止自行车

ROAD_OBSTACLE = 29

道路障碍物

PARKING_SLOT = 30

停车位

障碍物信息

class metacar.ObstacleInfo(id: int, type: ObstacleType, pos_x: float, pos_y: float, pos_z: float, vel_x: float, vel_y: float, vel_z: float, ori_x: float, ori_y: float, ori_z: float, length: float, width: float, height: float, redundant_value: str | None)[源代码]

障碍物信息

height: float

高度

id: int

障碍物 ID

length: float

长度

ori_x: float

欧拉角 X(单位:角度)

ori_y: float

欧拉角 Y(单位:角度)

ori_z: float

欧拉角 Z(单位:角度)

pos_x: float

位置 X

pos_y: float

位置 Y

pos_z: float

位置 Z

redundant_value: str | None

冗余值(包含限速标志的限速值)

type: ObstacleType

障碍物类型

vel_x: float

速度 X

vel_y: float

速度 Y

vel_z: float

速度 Z

width: float

宽度

交通灯相关

交通灯状态

class metacar.TrafficLightState(*values)[源代码]

基类:Enum

交通灯状态

RED = 1

红灯

GREEN = 2

绿灯

YELLOW = 3

黄灯

交通灯信息

class metacar.TrafficLightInfo(id: str, road_id: str, position: Vector3, turn_left_state: TrafficLightState, turn_left_remainder: float, turn_right_state: TrafficLightState, turn_right_remainder: float, straight_state: TrafficLightState, straight_remainder: float)[源代码]

一排交通灯的信息

id: str

交通灯 ID

position: Vector3

位置

road_id: str

道路 ID

straight_remainder: float

直行剩余时间

straight_state: TrafficLightState

直行状态

turn_left_remainder: float

左转剩余时间

turn_left_state: TrafficLightState

左转状态

turn_right_remainder: float

右转剩余时间

turn_right_state: TrafficLightState

右转状态

交通灯组信息

class metacar.TrafficLightGroupInfo(id: str, traffic_light_state: list[TrafficLightInfo])[源代码]

交通灯组信息

id: str

交通灯组 ID

traffic_light_state: list[TrafficLightInfo]

交通灯信息

场景状态与控制

场景状态

class metacar.SceneStatus(sub_scene_name: str, used_time: float, time_limit: float, end_point: Vector3)[源代码]

场景状态信息

end_point: Vector3

终点

sub_scene_name: str

子场景名称

time_limit: float

时间限制

used_time: float

已用时间

仿真动态信息

class metacar.SimCarMsg(trajectory: list[Vector3], pose_gnss: PoseGnss, data_main_vehicle: MainVehicleInfo, sensor: SensorInfo, obstacle_entry_list: list[ObstacleInfo], traffic_light_state_lists: list[TrafficLightGroupInfo], scene_status: SceneStatus)[源代码]

仿真动态信息

data_main_vehicle: MainVehicleInfo

主车信息

obstacle_entry_list: list[ObstacleInfo]

障碍物信息

pose_gnss: PoseGnss

GNSS 数据

scene_status: SceneStatus

场景状态信息

sensor: SensorInfo

传感器信息

traffic_light_state_lists: list[TrafficLightGroupInfo]

交通灯组信息

trajectory: list[Vector3]

推荐轨迹

车辆控制信息

class metacar.VehicleControl(throttle: float = 0.0, brake: float = 0.0, steering: float = 0.0, gear: GearMode = GearMode.DRIVE, left_blinker: bool = False, right_blinker: bool = False, double_flash: bool = False, front_light: bool = False)[源代码]

车辆控制信息

brake: float = 0.0

刹车(0~1)

double_flash: bool = False

双闪

front_light: bool = False

前灯

gear: GearMode = 1

档位

left_blinker: bool = False

左转向灯

right_blinker: bool = False

右转向灯

steering: float = 0.0

方向盘(-1~1)

throttle: float = 0.0

油门(0~1)