• Apollo简易地图制作


    Apollo中模拟障碍物

    一、准备工作

    在模拟障碍物之前,需要下载并编译Apollo源码,过程可以依据Apollo开放平台文档,其中可能遇到的问题在这里或许可以寻找到答案

    二、运行Dreamview

    1. 进入容器
     cd ~/apollo
     bash docker/scripts/dev_start.sh(再次使用会新建docker,导致依赖丢失)
     bash docker/scripts/dev_into.sh
    
    • 1
    • 2
    • 3
    1. 启动Dreamview
    bash scripts/bootstrap.sh
    
    • 1

    此时便可以在对应网址看到页面

    三、修改特定位置的Json脚本

    脚本路径:modules\tools\perception\garage_perception.bash
    这个脚本会在运行时启动相关依赖,并且在Dreamview中按照设定好的障碍物信息进行3D绘图。增加障碍物只需要新建Json脚本,将其内容按照下方的格式填写,再运行garage_perception.bash即可。(需在容器内运行)

    {
        "id": 1,
        "position": [1868.59, 2990.91, 0.0],
        "theta": 1.1659045405098132,
        "length": 4,
        "width": 2,
        "height": 1,
        "speed": 8.0,
        "tracking_time": 1.0,//追踪的时间间隙
        "type": "VEHICLE",//类型,已知的还有行人、未知物体
        "trace": [[-1868.59, -2990.91, 0.0],
                  [-1845.16, -2994.59, 0.0],
                  [-1850.16, -3000.0, 0.0]]//设定运行轨迹
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    四、退出环境

    运行脚本时,Terminal会不断刷新,但命令输入依然有效,使用Ctrl+C即可停止,退出Dreamview可使用以下命令

    ./scripts/bootstrap.sh stop
    
    • 1

    2023.9.18
    ——————————————————————————————————————————————————

    在Apollo中制作地图

    Apollo中的地图生成与添加障碍物类似,同样依赖于源码中自带的脚本。本次使用的数据为已经处理好的UTM坐标数据,可以利用Github上的脚本将bag文件(或者使用默认的"extract_path.py"解压)转换为经纬高信息txt/csv文本(未经验证)。获取数据之后,可以使用plot_path.py可视化录制的轨迹,命令如下所示

    python modules/tools/map_gen/plot_path.py path.txt
    
    • 1

    然而,在运行上述代码时,会出现“UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.”的报错信息,大致含义就是当前使用的后端无法显示GUI图形,所以应该将plot_path.py中的import做出以下改变

    旧代码:import matplotlib.pyplot as plt
    import sys
    新代码:import matplotlib
    matplotlib.use('TkAgg')//使用TkAgg后端
    import matplotlib.pyplot as plt
    import sys
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    修改后的报错信息变为ModuleNotFoundError: No module named ‘tkinter’,即缺少tkinter模块,利用下列代码进行安装

    sudo apt-get install python3-tk
    
    • 1

    安装时会再次出现问题,Ubuntu报错“Package pkg-config is not available, but is referred to by another package”,这个报错是Ubuntu中的源过于老旧,需要换成新的镜像站,使用下列命令更新即可

    sudo apt-get -y update
    
    • 1

    再次安装python3-tk,使用pip list即可看到此模块,再次执行可视化,效果如下图
    在这里插入图片描述编译地图工具

    bazel build modules/tools/map_gen:all
    ./bazel-bin/modules/tools/map_gen/map_gen path.txt
    
    • 1
    • 2

    成功后会生成特定的地图格式
    在这里插入图片描述在这里插入图片描述生成好地图之后,可以通过"add_signal.py"来添加红绿灯。

    ./bazel-bin/modules/tools/map_gen/add_signal.py map_file your_signal_map
    
    • 1

    这里map_file就是刚才生成的地图文件,而your_signal_map是红绿灯的文件,红绿灯文件实际上就是apollo hdmap中指定的红绿灯格式,也就是说你需要按照apollo hdmap中指定的红绿灯格式保存红绿灯的数据,然后把它添加到map_file中(红绿灯格式未知)

    bazel build modules/tools/mapshow:all
    ./bazel-bin/modules/tools/mapshow/mapshow -m your_map_name -sl
    
    • 1
    • 2

    执行上述命令即可将生成的高精度地图可视化,但会出现如下报错信息
    在这里插入图片描述根据报错信息进入proto-utils.py的37行,结合此错误信息产生的原因通常是数据格式问题以及确定自动生成的文件格式标准,可以推测出可能是编码格式错误,添加encoding="utf-8"即可解决
    在这里插入图片描述在这里插入图片描述此地图后续应当可以导入Dreamview

  • 相关阅读:
    PHP实现的小红书无水印图片解析下载
    ansible中定义和使用变量的几种技巧
    软考 系统架构设计师系列知识点之软件质量属性(3)
    通关GO语言03 控制结构:if、for、witch 逻辑语句的那些事儿
    OkHttpClient实例
    十、实现AOP的三种方式
    C++项目——集群聊天服务器项目(六)MySQL模块
    electron 应用开发优秀实践
    经典问题--超大字符串型整数加减
    V-Control Pro 3.0发布,为Presonus控制器增加Pro Tools高级控制
  • 原文地址:https://blog.csdn.net/WTMDNM_/article/details/133032736