Apollo简易地图制作

news2024/11/17 5:30:29

在Apollo中模拟障碍物

一、准备工作

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

二、运行Dreamview

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

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

三、修改特定位置的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]]//设定运行轨迹
}

四、退出环境

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

./scripts/bootstrap.sh stop

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

然而,在运行上述代码时,会出现“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

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

sudo apt-get install python3-tk

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

sudo apt-get -y update

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

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

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

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

这里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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1047491.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

515万新作者投身电商事业,抖音电商将投入更多资源扶持作者长期发展

9月27日,2023抖音电商作者峰会在上海举办。上千位抖音电商作者、MCN机构、精选联盟服务商、商家等重要生态伙伴参会,围绕大会主题“向新成长”进行了深入探讨。会上,抖音电商总裁魏雯雯提到,电商作者的事业有更多发展方向。为助力…

输送机使用的常见误区

输送机也称流水线,是指在自动化生产过程中起到运输货物,联通各个生产设备的主要机械设备。但在使用的过程中,很多用户对于输送机的使用存在一定的误区,导致设备故障频出,下面就针对用户已在使用输送机过程中的常见误区…

以太网中的介质共享访问控制机制

什么是CSMA/CD CSMA/CD(Carrier Sense Multiple Access with Collision Detection)是一种用于以太网等共享介质的访问控制机制。它用于协调多个设备共享同一物理介质(例如同一局域网)上的传输权利,以避免碰撞并提供公…

mac安装python2

Python 2 于 2020 年 1 月 1 日宣布结束支持,包括 Homebrew 在内的许多项目和包管理器已经停止支持 Python 2。 如果现在你还要安装 Python 2,需要从 Python 官网下载安装包: 访问 Python 的发布页面。从页面底部找到 Python 2 的最后一个版…

tp8 Editor.md

Editor.md - 开源在线 Markdown 编辑器 放于public文件夹下 html代码&#xff1a; <div class"layui-col-md12" id"content"><textarea name"content" placeholder"详情" class"layui-textarea">{notempty nam…

【Unity的HDRP渲染管线搭建配置VR交互场景_SteamVR 插件和Pico串流助手_经验分享】

HDRP渲染管线配置VR交互场景 Unity创建场景和相关配置下载导入项目打开PICO串流助手在Pico中的配置:用Steam串流VR_这篇的前置补充 Unity创建场景和相关配置 带HDRP Sample Scene 示例的 下载 SteamVR Unity插件地址02 导入项目

GEO生信数据挖掘(二)下载基因芯片平台文件及注释

检索到目标数据集后&#xff0c;开始数据挖掘&#xff0c;本文以阿尔兹海默症数据集GSE1297为例 目录 下载平台文件 1.AnnotGPL参数改为TRUE,联网下载芯片平台的soft文件。&#xff08;国内网速奇慢经常中断&#xff09; 2.手工去GEO官网下载 转换芯片探针ID为gene name 拓…

ADS-B及雷达显示终端8.3

新版本功能升级主要有如下: 1、地图更新 在上一版本8.2中使用的高程地图为由SRTM经过地形晕渲后&#xff0c;生成地形图片&#xff0c;然后对图片进行贴图&#xff0c;一一按规定位置、大小将地形图贴至底图上&#xff0c;而后在底图上进行二维矢量地图的绘制&#xff0c;包括…

uniapp app 导出excel 表格

直接复制运行 <template><view><button click"tableToExcel">导出一个表来看</button><view>{{ successTip }}</view></view> </template><script>export default {data() {return {successTip: }},metho…

【面试高高手】—— SpringBoot(11题)

文章目录 1.什么是SpringBoot?2.为什么需要Spring Boot&#xff1f;3.SpringBoot的特征&#xff1f;4.SpringBoot的两个策略是什么&#xff1f;5.说一下SpringBoot的自动装配流程&#xff1f;6.说下什么是 Bean?7.什么是 CSRF 攻击&#xff1f;如何避免&#xff1f;8. Spring…

python ToastNotifier TypeError got Nonetype

这个错误没什么影响&#xff0c;只是在通知结束后会抛出 如果你实在不爽&#xff0c;办法如下&#xff1a; 找到"<你的python安装路径>\Lib\site-packages\win10toast"&#xff0c;里面应该有__main__.py和__init__.py两个文件&#xff0c;打开__init__.py 找到…

人工智能(AI)在产生新创意方面有多出色?

传统智慧一直不太擅长此道。发现新的创业机会、为未满足的需求提供解决方案&#xff0c;以及为新公司命名都是非结构化的任务&#xff0c;似乎不适合由算法来完成。然而&#xff0c;人工智能的最新进展——特别是像ChatGPT这样的大语言模型的出现——正在挑战这种假定。 我们教…

【ES6知识】Promise 对象

文章目录 1.1 概述1.2 静态方法1.3 实例方法1.4 Promise 拒绝事件 1.1 概述 Promise 对象用于表示一个异步操作的最终完成&#xff08;或失败&#xff09;及其结果值。是异步编程的一种解决方案&#xff08;可以解决回调地狱问题&#xff09;。 一个 Promise 对象代表一个在这…

Python实用技术——爬虫(二):爬虫需要使用的库

一&#xff0c;Requests库 1&#xff0c;主要使用方法&#xff1a; 1&#xff09;get&#xff08;&#xff09;方法&#xff1a; 这个Response对象中包含爬虫返回的内容。 除了request方法是基础方法外&#xff0c;其他都是通过调用request方法来实现的。 所以&#xff0c;我…

[React] React高阶组件(HOC)

文章目录 1.Hoc介绍2.几种包装强化组件的方式2.1 mixin模式2.2 extends继承模式2.3 HOC模式2.4 自定义hooks模式 3.高阶组件产生初衷4.高阶组件使用和编写结构4.1 装饰器模式和函数包裹模式4.2 嵌套HOC 5.两种不同的高阶组件5.1 正向的属性代理5.2 反向的继承 6.如何编写高阶组…

使用 Express 设置 GraphQL

使用 Express 设置 GraphQL 在本文中&#xff0c;我们将探讨如何在 Node.js 中设置 Express.js 和 GraphQL。另外&#xff0c;本文还将分享一些基本技巧&#xff0c;以确保我们的服务器已准备好投入实际使用&#xff01; 什么是 GraphQL GraphQL 是 API 的查询语言&#xff…

网络爬虫——urllib(1)

前言&#x1f36d; ❤️❤️❤️网络爬虫专栏更新中&#xff0c;各位大佬觉得写得不错&#xff0c;支持一下&#xff0c;感谢了&#xff01;❤️❤️❤️ 前篇简单介绍了什么是网络爬虫及相关概念&#xff0c;这篇开始讲解爬虫中的第一个库——urllib。 urllib&#x1f36d; …

Windows安装CMake详细教程(附学习资料)

CMake是一个跨平台的开源构建工具&#xff0c;用于自动化管理C项目的构建过程。本教程旨在向初学者介绍如何在Windows操作系统上安装CMake&#xff0c;并提供详细的步骤指导&#xff0c;帮助您顺利开始使用这个强大的工具。 学习资料在文末~ 步骤1&#xff1a;下载CMake安装程…

SW利用点光源来校核

先要建立坐标系&#xff0c;然后查这个坐标系的绝对坐标 然后删除其他光源&#xff0c;把环境光源降低最小 最后添加点光源&#xff0c;位置在之前查的坐标点

在Windbg中设置断点追踪打开软件远程调试开关的模块

目录 1、Windbg动态调试 2、在Windbg中设置断点 2.1、在函数入口处设置断点 2.2、在函数内部某一行上设置断点 3、设置断点跟踪对打开远程调试开关接口的调用 3.1、编写演示代码 3.2、在Windbg中设置调用SetRemoteDebugOn接口的断点进行跟踪 4、最后 VC常用功能开发汇总…