• [carla入门教程]-4 carla中的地图(附:鸟瞰图和道路图)


    本专栏教程将记录从安装carla到调用carla的pythonAPI进行车辆操控并采集数据的全流程,带领大家从安装carla开始,到最终能够熟练使用carla仿真环境进行传感器数据采集和车辆控制.

    第四节 介绍carla中的地图

    本小节的主要内容是介绍carla中的地图的种类和修改方法.

    • 章节内容介绍:
      第1小节介绍了carla中包含的地图。第2小节介绍了地图的加载方法。第3小节介绍了闪退问题及其解决方法。附录部分展示了鸟瞰图和道路图。

    1.carla0.9.12中包含的地图

    运行carla服务器之后,再通过下面的脚本可以打印出地图.
    从其中关键的函数是调用get_available_maps().

    # 生成汽车流
    import glob
    import os
    import sys
    # ==============================================================================
    # -- Find CARLA module ---------------------------------------------------------
    # ==============================================================================
    
    try:
        sys.path.append(glob.glob('../carla/dist/carla-*%d.%d-%s.egg' % (
            sys.version_info.major,
            sys.version_info.minor,
            'win-amd64' if os.name == 'nt' else 'linux-x86_64'))[0])
    except IndexError:
        pass
    
    # ==============================================================================
    # -- Add PythonAPI for release mode --------------------------------------------
    # ==============================================================================
    try:
        sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + '/carla')
        sys.path.append("../examples/")
    except IndexError:
        pass
    
    import carla
    
    # Connect to the client and retrieve the world object
    try:
        client = carla.Client('127.0.0.1', 2000)
        for i in range(len(client.get_available_maps())):
             print(client.get_available_maps()[i])
    except IndexError:
        pass
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • carla0.9.12中的地图:
    /Game/Carla/Maps/Town06_Opt
    /Game/Carla/Maps/Town01
    /Game/Carla/Maps/Town07
    /Game/Carla/Maps/Town05_Opt
    /Game/Carla/Maps/Town07_Opt
    /Game/Carla/Maps/Town06
    /Game/Carla/Maps/Town03
    /Game/Carla/Maps/Town10HD
    /Game/Carla/Maps/Town04
    /Game/Carla/Maps/Town03_Opt
    /Game/Carla/Maps/Town02
    /Game/Carla/Maps/Town10HD_Opt
    /Game/Carla/Maps/Town05
    /Game/Carla/Maps/Town01_Opt
    /Game/Carla/Maps/Town02_Opt
    /Game/Carla/Maps/Town04_Opt
    /Game/Carla/Maps/Town11/Town11
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    可以看到,carla中的地图分成两类,一类是Non-layered maps的,另一类是Layered maps.两者的区别在于,前者的贴图是不可分层的,而后者贴图可以分层,可以根据需要去掉一些图层.

    1.1 Non-layered maps

    不可分层的地图一共有Town01~Town07,Town10HD.共计8个地图.

    Town	Summary
    Town01	基础城镇,由很多T字路口组成.
    Town02	和Town01相似,但是比town01小
    Town03	最复杂的Town,5车道,迂回,不均衡,地下通道等
    Town04	无穷循环的高速+一个小城镇
    Town05	具有十字路口和桥的方形城镇.单方向有很多车道.
    Town06	 具有很多公路出入口的长公路.
    Town07	乡村环境,具有狭窄的道路,大棚,几乎没有红绿灯.
    Town10HD	城市环境,具有不同环境(如大道或长廊)和更逼真纹理.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    具体地图的鸟瞰图和路网地图请跳转到 附录查看.
    Town10HD打开需要很大显存,我的电脑显卡是2060,6GB版本,打开时存在闪退问题.

    1.2 Layered maps

    分层贴图的布局与非分层贴图相同,但可以在贴图的图层上切换和关闭。有一个不可切换的最小布局,由道路、人行道、红绿灯和交通标志组成。分层地图可以用后缀_Opt标识,例如Town01_Opt。carla0.9.12中一共有Town01_Opt~Town07_Opt,以及Town10HD_Opt.

    可以通过Python API加载和卸载层:

        # Load layered map for Town 01 with minimum layout plus buildings and parked vehicles
        world = client.load_world('Town01_Opt', carla.MapLayer.Buildings | carla.MapLayer.ParkedVehicles)
    
        # Toggle all buildings off
        world.unload_map_layer(carla.MapLayer.Buildings)
    
        # Toggle all buildings on   
        world.load_map_layer(carla.MapLayer.Buildings)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    如图所示,图1是带有建筑物图层的,图2是去掉建筑物图层的.
    在这里插入图片描述在这里插入图片描述

    2.修改地图

    通过load_world('Townxx')加载地图.

        client.load_world('Townxx')
    
    • 1

    3.闪退问题

    3.1 低精度渲染引起的闪退问题

    当我们采用低精度方式渲染服务器时,也就是使用./CarlaUE4.sh -quality-level=Low命令运行服务器时.通过脚本切换地图会出现如下的错误
    在这里插入图片描述
    然后carla服务器会闪退.

    • 解决方法:

    目前没有搞明白闪退原因,不过经过测试发现,把渲染脚本改会默认值,也就是./CarlaUE4.sh启动时,切换地图就不会出现闪退了.

    3.2 添加图层地图引起的闪退问题

    载入可变图层地图时.当去除图层后,再添加图层的时候,总是会导致carla服务器闪退,也不知道为什么.

    终端显示的错误如下:

    4.26.2-0+++UE4+Release-4.26 522 0
    Disabling core dumps.
    Signal 11 caught.
    Malloc Size=65538 LargeMemoryPoolOffset=65554 
    CommonUnixCrashHandler: Signal=11
    Malloc Size=131160 LargeMemoryPoolOffset=196744 
    Malloc Size=131160 LargeMemoryPoolOffset=327928 
    Engine crash handling finished; re-raising signal 11 for the default handler. Good bye.
    Segmentation fault (core dumped)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 解决方法

    未找到根本解决方法.这里建议大家只运行一次去除命令,不要运行添加图层命令.

    附录: 地图鸟瞰图和道路图

    carla 的主要地图(Town01-Town07,Town10)都可以在官方找到对应的路网地图:
    https://carla.readthedocs.io/en/latest/core_map/#non-layered-maps

    Town01

    在这里插入图片描述
    在这里插入图片描述

    Town02

    在这里插入图片描述
    在这里插入图片描述

    Town03

    在这里插入图片描述
    在这里插入图片描述

    Town04

    在这里插入图片描述

    在这里插入图片描述

    Town05

    在这里插入图片描述
    在这里插入图片描述

    Town06

    在这里插入图片描述
    在这里插入图片描述

    Town07

    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    图数据挖掘(一):网络的基本概念和表示方法
    H3C AP瘦切胖配置
    KunlunBase 1.0 发布了!
    语音转文字以及音频格式转换(推荐链接)
    基于ThinkPHP框架的校园一卡通系统设计与实现
    dpdk结合sriov测试vpp ipsec性能
    JWFD开源工作流-矩阵引擎设计-遍历排序算法运行测试
    1.4 w字,25 张图让你彻底掌握分布式事务原理
    【附源码】Python计算机毕业设计面向移动平台的企业会议室预约系统
    自研 MySQL Binlog 分析程序介绍
  • 原文地址:https://blog.csdn.net/condom10010/article/details/127653187