SimOnePNCAPI 源代码

from SimOneIOStruct import *

SimOne_ScenarioEventCBType = CFUNCTYPE(c_void_p, c_char_p, c_char_p, c_char_p, c_char_p)

G_API_ScenarioEvent_CB = None

def _api_scenarioEvent_cb(source, target, type, content):
	global G_API_ScenarioEvent_CB
	if G_API_ScenarioEvent_CB is None:
		return
	G_API_ScenarioEvent_CB(source, target, type, content)

api_scenarioEvent_cb = SimOne_ScenarioEventCBType(_api_scenarioEvent_cb)

[文档] def SoRegisterVehicleState(mainVehicleId: str, data: list, size: int) -> bool: """注册主车状态信息(超出SimOne_Data_Gps范围) Register additional vehicle state information beyond what is included in SimOne_Data_Gps. :param mainVehicleId: 车辆ID / Vehicle ID :param data: 需要注册的车辆状态信息数组 / Array of states to register :type data: list[ESimOne_Data_Vehicle_State] :param size: 状态数量 / Number of states :return: 执行结果:成功或失败 / Success or failure :rtype: bool Example: .. code-block:: python states = [ESimOne_Data_Vehicle_State.SPEED] SoRegisterVehicleState("MainVehicle", states, len(states)) """ SimoneAPI.RegisterVehicleState.restype = c_bool _mainVehicleId = create_string_buffer(mainVehicleId.encode(), 256) return SimoneAPI.RegisterVehicleState(_mainVehicleId, pointer(data), size)
[文档] def SoGetVehicleState(mainVehicleId: str, data: SimOne_Data_Vehicle_Extra) -> bool: """获取通过SoRegisterVehicleState注册的主车状态信息 Retrieve vehicle states registered with SoRegisterVehicleState. :param mainVehicleId: 车辆ID / Vehicle ID :param data: 主车动态状态信息 / Vehicle state information :type data: SimOne_Data_Vehicle_Extra :return: 执行结果:成功或失败 / Success or failure :rtype: bool Example: .. code-block:: python extra_state = SimOne_Data_Vehicle_Extra() SoGetVehicleState("MainVehicle", extra_state) """ SimoneAPI.GetVehicleState.restype = c_bool _mainVehicleId = create_string_buffer(mainVehicleId.encode(), 256) return SimoneAPI.GetVehicleState(_mainVehicleId, pointer(data))
[文档] def SoSetPose(mainVehicleId: str, poseControl: SimOne_Data_Pose_Control) -> bool: """设置主车位置 Set the next position of the main vehicle. :param mainVehicleId: 车辆ID / Vehicle ID :param poseControl: 下一个车辆位置 / Next vehicle position :type poseControl: SimOne_Data_Pose_Control :return: 执行结果:成功或失败 / Success or failure :rtype: bool Example: .. code-block:: python pose = SimOne_Data_Pose_Control() pose.position.x = 10.0 pose.position.y = 20.0 SoSetPose("MainVehicle", pose) """ SimoneAPI.SetPose.restype = c_bool _mainVehicleId = create_string_buffer(mainVehicleId.encode(), 256) return SimoneAPI.SetPose(_mainVehicleId, pointer(poseControl))
[文档] def SoSetDrive(mainVehicleId: str, driveControl: SimOne_Data_Control) -> bool: """主车控制 Control the main vehicle using throttle, steering, and brake. :param mainVehicleId: 车辆ID / Vehicle ID :param driveControl: 车辆驾驶参数 / Driving parameters :type driveControl: SimOne_Data_Control :return: 执行结果:成功或失败 / Success or failure :rtype: bool Example: .. code-block:: python control = SimOne_Data_Control() control.throttle = 0.5 control.steering = 0.1 SoSetDrive("MainVehicle", control) """ SimoneAPI.SetDrive.restype = c_bool _mainVehicleId = create_string_buffer(mainVehicleId.encode(), 256) return SimoneAPI.SetDrive(_mainVehicleId, pointer(driveControl))
[文档] def SoSetDriveTrajectory(mainVehicleId: str, controlTrajectory: SimOne_Data_Control_Trajectory) -> bool: """主车控制 - 按轨迹驾驶 Drive the vehicle along a planned trajectory. :param mainVehicleId: 车辆ID / Vehicle ID :param controlTrajectory: 规划轨迹 / Planned trajectory :type controlTrajectory: SimOne_Data_Control_Trajectory :return: 执行结果:成功或失败 / Success or failure :rtype: bool """ SimoneAPI.SetDriveTrajectory.restype = c_bool _mainVehicleId = create_string_buffer(mainVehicleId.encode(), 256) return SimoneAPI.SetDriveTrajectory(_mainVehicleId, pointer(controlTrajectory))
[文档] def SoSetDriverName(mainVehicleId: str, driverName: str) -> bool: """设置主车控制器的名字 Set the name of the vehicle controller (max length 8 chars). :param mainVehicleId: 车辆ID / Vehicle ID :param driverName: 驾驶员名字(最多8个字符)/ Driver name (max 8 chars) :return: 执行结果:成功或失败 / Success or failure :rtype: bool """ SimoneAPI.SetDriverName.restype = c_bool _driverName = create_string_buffer(driverName.encode(), 256) _mainVehicleId = create_string_buffer(mainVehicleId.encode(), 256) return SimoneAPI.SetDriverName(_mainVehicleId, _driverName)
[文档] def SoSetDriveMode(mainVehicleId: str, driverMode: ESimOne_Drive_Mode) -> bool: """设置主车控制模式 Set the driving mode of the vehicle dynamics. 模式包括 / Modes include: - ESimOne_Drive_Mode_API: 通过API控制模块驾驶 / Driving by API - ESimOne_Drive_Mode_Driver: 通过SimOneDriver控制驾驶 / Driving by SimOneDriver - ESimOne_Drive_Mode_API_Lateral: 横向API,纵向Driver / Lateral by API, longitudinal by Driver - ESimOne_Drive_Mode_API_Longitudinal: 横向Driver,纵向API / Lateral by Driver, longitudinal by API :param mainVehicleId: 车辆ID / Vehicle ID :param driverMode: 驾驶模式 / Driving mode :type driverMode: ESimOne_Drive_Mode :return: 执行结果:成功或失败 / Success or failure :rtype: bool """ SimoneAPI.SetDriveMode.restype = c_bool _mainVehicleId = create_string_buffer(mainVehicleId.encode(), 256) return SimoneAPI.SetDriveMode(_mainVehicleId, driverMode)
[文档] def SoSetVehicleEvent(mainVehicleId: str, vehicleEventInfo: SimOne_Data_Vehicle_EventInfo) -> bool: """设置主车预警消息 Set warning messages for the main vehicle. :param mainVehicleId: 车辆ID / Vehicle ID :param vehicleEventInfo: 驾驶过程中生成的事件信号 / Event signal during driving :type vehicleEventInfo: SimOne_Data_Vehicle_EventInfo :return: 执行结果:成功或失败 / Success or failure :rtype: bool """ SimoneAPI.SetVehicleEvent.restype = c_bool _mainVehicleId = create_string_buffer(mainVehicleId.encode(), 256) return SimoneAPI.SetVehicleEvent(_mainVehicleId, pointer(vehicleEventInfo))
[文档] def SoSetSignalLights(mainVehicleId: str, pSignalLight: SimOne_Data_Signal_Lights) -> bool: """设置车辆信号灯状态 Set the state of the vehicle's signal lights. :param mainVehicleId: 车辆ID / Vehicle ID :param pSignalLight: 灯光信号 / Light signal :type pSignalLight: SimOne_Data_Signal_Lights :return: 执行结果:成功或失败 / Success or failure :rtype: bool """ SimoneAPI.SetSignalLights.restype = c_bool _mainVehicleId = create_string_buffer(mainVehicleId.encode(), 256) return SimoneAPI.SetSignalLights(_mainVehicleId, pointer(pSignalLight))
[文档] def SoGetDriverControl(mainVehicleId: str, driverControlData: SimOne_Data_Control) -> bool: """获取SimOneDriver控制信号 Get control signals from SimOneDriver. :param mainVehicleId: 车辆ID / Vehicle ID :param driverControlData: 驾驶控制信息 / Driver control data :type driverControlData: SimOne_Data_Control :return: 执行结果:成功或失败 / Success or failure :rtype: bool """ SimoneAPI.GetDriverControl.restype = c_bool _mainVehicleId = create_string_buffer(mainVehicleId.encode(), 256) return SimoneAPI.GetDriverControl(_mainVehicleId, pointer(driverControlData))
[文档] def SoGetControlMode(mainVehicleId: str, controlModeData: SimOne_Data_Control_Mode) -> bool: """获取车辆控制模式 Retrieve the current vehicle control mode. :param mainVehicleId: 车辆ID / Vehicle ID :param controlModeData: 当前控制模式 / Current control mode :type controlModeData: SimOne_Data_Control_Mode :return: 执行结果:成功或失败 / Success or failure :rtype: bool """ SimoneAPI.GetControlMode.restype = c_bool _mainVehicleId = create_string_buffer(mainVehicleId.encode(), 256) return SimoneAPI.GetControlMode(_mainVehicleId, pointer(controlModeData))
[文档] def SoGetWayPoints(mainVehicleId: str, wayPointsData: SimOne_Data_WayPoints) -> bool: """获取案例主车路径点 Retrieve the waypoints of the main vehicle from scenario editing. :param mainVehicleId: 车辆ID / Vehicle ID :param wayPointsData: 路径点数据 / Waypoints data :type wayPointsData: SimOne_Data_WayPoints :return: 执行结果:成功或失败 / Success or failure :rtype: bool """ SimoneAPI.GetWayPoints.restype = c_bool _mainVehicleId = create_string_buffer(mainVehicleId.encode(), 256) return SimoneAPI.GetWayPoints(_mainVehicleId, pointer(wayPointsData))
[文档] def SoAPISetScenarioEventCB(cb: callable) -> bool: """场景事件回调 Register a callback function for scenario events. :param cb: 场景事件的回调函数 / Callback for scenario events :type cb: callable :callback signature: .. code-block:: python def callback(source: str, target: str, type: str, content: str) -> None Callback parameters: - source (str): 发送消息的车辆ID / Vehicle ID sending the message - target (str): 接收方ID / Target ID - type (str): 消息类型("Command"或"Event")/ Message type - content (str): 消息内容 / Message content :return: 执行结果:成功或失败 / Success or failure :rtype: bool """ if cb == 0: cb = None global G_API_ScenarioEvent_CB G_API_ScenarioEvent_CB = cb SimoneAPI.SetScenarioEventCB.restype = c_bool ret = SimoneAPI.SetScenarioEventCB(api_scenarioEvent_cb) return ret
[文档] def SoSetVehicleToInitState(mainVehicleId: str) -> bool: """重置主车状态 Reset the main vehicle to its initial state. :param mainVehicleId: 主车ID / Vehicle ID :return: 执行结果:成功或失败 / Success or failure :rtype: bool """ SimoneAPI.SetVehicleToInitState.restype = c_bool _mainVehicleId = create_string_buffer(mainVehicleId.encode(), 256) return SimoneAPI.SetVehicleToInitState(_mainVehicleId)