做淘宝头像的网站,网站空间买卖,云南哪有网站建设推广,注册公司流程步骤在 CARLA 中#xff0c;参与者#xff08;Actors#xff09; 是仿真中执行动作的元素#xff0c;能够影响其他参与者。CARLA 的参与者包括#xff1a;
车辆#xff08;Vehicles#xff09;和行人#xff08;Walkers#xff09;传感器#xff08;Sensors#xff09;…在 CARLA 中参与者Actors是仿真中执行动作的元素能够影响其他参与者。CARLA 的参与者包括车辆Vehicles和行人Walkers传感器Sensors交通标志Traffic Signs和交通灯Traffic Lights观察者Spectator蓝图Blueprints蓝图是预定义的模型模板包含动画和一系列属性使用户能轻松将新参与者加入仿真。部分属性可修改部分不可修改例如车辆颜色激光雷达LiDAR的通道数行人的行走速度等等。所有可用蓝图及其属性均列在蓝图库Blueprint Library中。车辆和行人蓝图带有generation属性标识其为新一代gen2或旧一代gen1资产。管理蓝图库carla.BlueprintLibrary类包含一系列carla.ActorBlueprint元素可通过world对象访问blueprint_libraryworld.get_blueprint_library()每个蓝图有唯一 ID 用于识别自身及由其生成的参与者。可通过以下方式查询蓝图# 查找特定蓝图collision_sensor_bpblueprint_library.find(sensor.other.collision)# 随机选择车辆蓝图vehicle_bprandom.choice(blueprint_library.filter(vehicle.*.*))每个carla.ActorBlueprint包含若干carla.ActorAttribute可读取或设置# 示例若为两轮车设为红色ifvehicle.get_attribute(number_of_wheels)2:vehicle.set_attribute(color,255,0,0)⚠️注意部分属性不可修改请查阅蓝图库确认可修改属性通常提供推荐值列表forattrinblueprint:ifattr.is_modifiable:blueprint.set_attribute(attr.id,random.choice(attr.recommended_values))自定义资产用户可创建自己的车辆模型参见资产教程贡献者还可将新内容加入 CARLA。参与者生命周期⚠️重要提示Python API 支持批量命令batch commands可在单帧内高效执行多个常见操作如批量生成/销毁。生成Spawningworld对象负责生成参与者并跟踪其状态。生成仅需两个要素一个蓝图Blueprint一个carla.Transform指定位置与旋转world提供两种生成方法spawn_actor()失败时抛出异常try_spawn_actor()失败时返回Nonetransformcarla.Transform(carla.Location(x230,y195,z40),carla.Rotation(yaw180))actorworld.spawn_actor(blueprint,transform)⚠️坐标系注意CARLA 使用 Unreal Engine 坐标系。carla.Rotation构造函数参数顺序为(pitch, yaw, roll)与 Unreal Editor 的 (roll, pitch, yaw) 不同。碰撞检测若指定位置存在静态物体或其他参与者生成将失败。为避免此问题车辆使用预设出生点spawn_pointsworld.get_map().get_spawn_points()行人使用人行道随机位置spawn_pointcarla.Transform()spawn_point.locationworld.get_random_location_from_navigation()父子关联参与者可附加到另一参与者常用于传感器。通过carla.AttachmentType定义关联方式Rigid刚性相对位置固定适合精确数据采集SpringArm弹性带缓冲移动# 将摄像头刚性附着到车辆cameraworld.spawn_actor(camera_bp,relative_transform,attach_tomy_vehicle,attachment_typecarla.AttachmentType.Rigid)⚠️关键附加生成时提供的Transform必须是相对于父参与者的局部坐标。生成后world会将参与者加入全局列表支持快速查询actor_listworld.get_actors()actoractor_list.find(id)# 按 ID 查找# 打印所有限速标志位置forspeed_signinactor_list.filter(traffic.speed_limit.*):print(speed_sign.get_location())操作Handlingcarla.Actor主要通过get()和set()方法管理print(actor.get_acceleration())print(actor.get_velocity())# 移动参与者Z轴升高10米locationactor.get_location()location.z10.0actor.set_location(location)可禁用物理模拟以冻结参与者actor.set_simulate_physics(False)参与者还继承蓝图中的标签Tags主要用于语义分割传感器。⚠️性能警告大多数set()方法异步发送请求。若短时间内发送过多请求会导致显著延迟因仿真器每帧处理能力有限。销毁DestructionPython 脚本结束时参与者不会自动销毁必须显式调用销毁destroyed_successfullyactor.destroy()# 成功返回 True⚠️注意销毁操作会阻塞仿真器直至完成。参与者类型详解传感器Sensors传感器是生成数据流的特殊参与者详见第 4 章Sensors and Data。典型工作流程# 生成 RGB 摄像头并保存图像camera_bpblueprint_library.find(sensor.camera.rgb)cameraworld.spawn_actor(camera_bp,relative_transform,attach_tomy_vehicle)camera.listen(lambdaimage:image.save_to_disk(output/%06d.png%image.frame))关键点传感器也有蓝图需配置属性通常附着于车辆以感知环境通过listen()注册回调函数常用 Lambda 表达式处理数据观察者Spectator由 Unreal Engine 提供用于控制仿真窗口视角。可编程移动视角# 将观察者移至车辆正上方俯视视角spectatorworld.get_spectator()transformvehicle.get_transform()spectator.set_transform(carla.Transform(transform.locationcarla.Location(z50),carla.Rotation(pitch-90)))交通标志与交通灯目前 CARLA 仅将停车标志Stop、让行标志Yield和交通灯视为参与者。其他 OpenDRIVE 标志通过carla.Landmark访问非参与者详见第 3 章Maps and Navigation。仿真启动时系统根据 OpenDRIVE 文件自动生成交通标志/灯无法通过蓝图库生成因不在蓝图库中⚠️ 注意CARLA 地图的 OpenDRIVE 文件不包含交通标志/灯均由开发者手动放置交通灯特性位于路口有唯一 ID 和组 ID同一路口的灯共享 pole ID同组灯按顺序循环当前绿灯 → 黄灯 → 红灯 → 下一盏灯激活期间存在全红相位可通过 API 控制状态与持续时间# 将红灯强制变绿iftraffic_light.get_state()carla.TrafficLightState.Red:traffic_light.set_state(carla.TrafficLightState.Green)traffic_light.set_green_time(4.0)# 绿灯持续4秒⚠️重要车辆仅在红灯时才会感知交通灯车辆Vehiclescarla.Vehicle是特殊参与者通过内部组件模拟轮式车辆物理支持四类控制驾驶控制(carla.VehicleControl)vehicle.apply_control(carla.VehicleControl(throttle1.0,steer-1.0))物理控制(carla.VehiclePhysicsControl)包含齿轮控制 (GearPhysicsControl) 和车轮控制 (WheelPhysicsControl)physicscarla.VehiclePhysicsControl(max_rpm5000.0,center_of_masscarla.Vector3D(0,0,0),torque_curve[[0,400],[5000,400]])vehicle.apply_physics_control(physics)包围盒(carla.BoundingBox)用于物理计算与碰撞检测boxvehicle.bounding_boxprint(box.location)# 相对于车辆的位置print(box.extent)# XYZ 半长米高级车轮物理启用扫掠碰撞Sweep Collision可提升车轮物理精度physicsvehicle.get_physics_control()physics.use_sweep_wheel_collisionTruevehicle.apply_physics_control(physics)其他功能自动驾驶模式vehicle.set_autopilot(True)# 交由 Traffic Manager 控制非 ML 驱动车灯控制部分车辆支持灯光如 Tesla Model 3、Audi e-tron 等通过二进制操作控制# 开启位置灯lightscarla.VehicleLightState.NONE lights|carla.VehicleLightState.Position vehicle.set_light_state(lights)行人Walkerscarla.Walker通过控制器操作基础控制(carla.WalkerControl)控制方向、速度及跳跃骨骼控制(carla.WalkerBoneControl)操纵 3D 骨骼详见骨骼控制教程AI 控制行人无autopilot模式但可通过carla.WalkerAIController实现自主移动# 生成 AI 控制器controller_bpworld.get_blueprint_library().find(controller.ai.walker)ai_controllerworld.spawn_actor(controller_bp,carla.Transform(),parent_walker)# 初始化并设置目标ai_controller.start()ai_controller.go_to_location(world.get_random_location_from_navigation())ai_controller.set_max_speed(1.5)# 1.5 m/s⚠️注意AI 控制器无实体、无物理不会出现在场景中到达目标后自动前往新随机点若目标不可达则移至最近可达点批量生成行人carla.Client提供批量操作接口高效生成大量行人。⚠️销毁行人必须同时销毁行人 Actor 和 AI 控制器ai_controller.stop()walker.destroy()ai_controller.destroy()