快速入门

本指南将帮助您开始使用 MetaCar 库,通过简单的步骤与仿真环境建立连接并控制车辆。

基本用法

以下是使用 MetaCar 的基本步骤:

1. 导入必要的包和类

from metacar import SceneAPI, VehicleControl, GearMode

2. 创建 SceneAPI 实例并连接到仿真环境

api = SceneAPI()
api.connect()  # 这将阻塞直到与仿真环境成功连接

3. 获取场景静态数据

static_data = api.get_scene_static_data()
# 静态数据包含路线、道路信息和子场景信息

4. 进入主循环,获取实时数据并控制车辆

for sim_car_msg, frame in api.main_loop():
    # sim_car_msg 包含车辆状态、传感器数据、障碍物信息等
    # frame 是当前相机视图(OpenCV 格式的图像)

    # 创建控制命令
    control = VehicleControl()
    control.throttle = 0.5  # 设置油门 (0-1)
    control.steering = 0.0  # 设置方向盘 (-1 左, 0 中, 1 右)

    # 发送控制命令到仿真环境
    api.set_vehicle_control(control)

完整示例

以下是一个完整的示例,展示了如何创建一个简单的控制循环:

import logging
from metacar import SceneAPI, GearMode, VehicleControl

# 设置日志
logging.basicConfig(filename="autodrive.log", level=logging.DEBUG)
logger = logging.getLogger(__name__)

def main():
    # 创建 API 实例
    api = SceneAPI()

    # 连接到仿真环境
    api.connect()
    logger.info("已连接到仿真环境")

    # 获取静态数据
    static_data = api.get_scene_static_data()
    logger.info(f"路线点数量: {len(static_data.route)}")

    # 进入主循环
    for sim_car_msg, frame in api.main_loop():
        # 创建简单的前进控制
        vc = VehicleControl()
        vc.gear = GearMode.DRIVE
        vc.throttle = 0.3  # 30% 油门

        # 发送控制命令
        api.set_vehicle_control(vc)

        # 记录信息
        logger.info(f"当前速度: {sim_car_msg.data_main_vehicle.speed}")

        # 这里可以添加图像处理、决策逻辑等

    logger.info("仿真结束")

if __name__ == "__main__":
    main()

下一步