Advertisement

Carla自动驾驶仿真八:两种查找CARLA地图坐标点的方法

阅读量:

文章目录

  • 前言
  • 一、通过Spectator获取坐标
  • 二、通过道路ID获取坐标
  • 总结

前言

CARLA并未提供一种直接的方式来供用户查询地理坐标数据点以创建车辆实例。这里则提供了两种实用的技术方案用于为特定区域创建车辆实例。


一、通过Spectator获取坐标

我们可以将Spectator(观察者)与游戏画面的操作相结合,在游戏中通过键盘上的WASD键以及鼠标左键来操控画面位置的变化

当我们使用键盘上的W A S D键以及根据鼠标位置进行调整时,在游戏空间中定位至指定的(x,y,z)空间坐标值;其中负责定位至坐标的是键盘方向键组合(W A S D),而负责方位参数(pitch,yaw,roll)的则是鼠标光标移动至目标位置。

在这里插入图片描述

3、运行以下代码以调用API,并定位当前Spectator的位置;随后创建并部署车辆至该位置。

复制代码
    import carla
    
    client = carla.Client('localhost', 2000)
    carla_world = client.get_world()
    
    #获取CARLA世界中的spectator
    spectator = carla_world.get_spectator()
    transform = spectator.get_transform()
    print(transform)
    #打印:Transform(Location(x=115.515007, y=-16.447723, z=1.146989), Rotation(pitch=10.587230, yaw=-3.618074, roll=0.000049))
    
    #生成车辆
    blueprint = carla_world.get_blueprint_library().filter('vehicle.*')[0]
    ego = carla_world.spawn_actor(blueprint, transform)
    
    
    python
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-16/Ooy489l53z1kHKMawZ2QxqmnNpCF.png)
在这里插入图片描述

二、通过道路ID获取坐标

假设你拥有RoadRunner,在CARLA中打开XODR地图后,在任意车道左侧可以看到道路标识符为17(road id=17)、车道标识符为-5(lane id=-5)。具体路径位于D:\CARLA_0.9.14\WindowsNoEditor\CarlaUE4\Content\Carla\Maps\OpenDrive

在这里插入图片描述

2、通过代码直接生成到目的道路和车道。

复制代码
    import carla
    
    client = carla.Client('localhost', 2000)
    carla_world = client.get_world()
    
    target_road_id = 17
    target_lane_id = -5
    
    #获取carla地图
    map = carla_world.get_map()
    # 每隔2m生成1个waypoint
    waypoints = map.generate_waypoints(2.0)
    # 遍历路点
    ego = None
    for waypoint in waypoints:
    if waypoint.road_id == target_road_id:
        lane_id = waypoint.lane_id
        # 检查是否已经找到了特定车道ID的路点
        if lane_id == target_lane_id:
            location = waypoint.transform.location
            #稍微设置一下z坐标,如果z为0的话,车会掉下去。
            location.z = 1
            ego_spawn_point = carla.Transform(location, waypoint.transform.rotation)
            print(ego_spawn_point)
            #生成车辆
            blueprint = carla_world.get_blueprint_library().filter('vehicle.*')[0]
            ego = carla_world.spawn_actor(blueprint, ego_spawn_point)
            break
            
    #这里补充观察者代码
    
    
    python
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-16/tDjJFYZdR46qxn1UH3iK9758hEQV.png)

3、上述代码已成功实现了将车辆导向指定road id 和 lane id的位置这一功能。我们现在可以开启一个观看法来验证车辆是否已到达目标位置,并确认这一部分代码与上述代码协同运行以确保整体流程的有效性。

复制代码
    # 顺便搞个观察者安装到车辆,看看车到了目标点没有
    camera_bp = carla_world.get_blueprint_library().find('sensor.camera.rgb')
    # 设置生成Camera的附加类型为Rigid
    Atment_SpringArmGhost = carla.libcarla.AttachmentType.Rigid
    # 设置Camera的安装坐标系
    Camera_transform = carla.Transform(carla.Location(x=-5, y=0, z=2),
                                   carla.Rotation(pitch=-10, yaw=0, roll=0))
    # 生成Camera
    camera = carla_world.spawn_actor(camera_bp, Camera_transform, attach_to=ego,
                                 attachment_type=Atment_SpringArmGhost)
    #设置spectator坐标
    carla_world.get_spectator().set_transform(camera.get_transform())
    
    
    python
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-16/mFegNVGfalcnQCXUp8hLIMwzTEJo.png)
在这里插入图片描述
在这里插入图片描述

总结

网站上提供了丰富的资源库,并且安装过程相对简便。此外系统还支持用户生成日常使用的地图功能。如果有时间的话建议先进行安装并熟悉使用方法。

全部评论 (0)

还没有任何评论哟~