基于Autoware制作高精地图(一)

2023-05-16

基于Autoware制作高精地图(一)

​开始进入正题,也是最近在忙的一件事,制作高精地图。

高精地图的制作大概分为以下四个流程(不一定完全正确):

1.构建点云地图;

2.点云地图标注;

3.制作OpenDrive地图;

4.地图存储索引。

这篇文章主要讲解如何构建点云地图。

首先我们要有一段自己录制的激光雷达点云数据,这里推荐大家采用Velodyne16线激光雷达,因为这里我们构建的点云底图是三维的,而采用Velodyne而不是速腾聚创(rslidar)等其他品牌的原因是Autoware里面有一个选项是Velodyne。

在这里插入图片描述

不过影响不大,因为github上有大佬写了一个包可以将rslidar采集到的点云数据转为velodyne点云数据,然后我们采用rosbag去播放录制就行了。

Autoware导入激光雷达点云数据包的时候要求点云数据的话题是/points_raw而不是/points_cloud,这里有两种做法,其中一种就是通过Autoware来录制数据,这样录制保存后的数据的Topic就是/points_raw了,无需我们后续处理就可以直接使用了,如果想这么执行的小伙伴上网搜一搜就有教程了;

另一种方法正好是我昨天得到的一丝灵感实现的!它的好处在于即便我们录制的数据包不是纯激光雷达录制的也没关系,我们可以只提取其中激光雷达的数据保存就行了;在Ubuntu系统中录制的点云数据包是以.bag为后缀结尾的,我们要想播放这个包就需要执行

rosbag play xxx.bag

查看包内的话题等参数命令行为

rosbag info xxx.bag

首先先查看点云数据包的话题,如果发现是velodyne录制的/points_cloud话题,则我们运行以下命令行更改数据包话题:

roscore     #终端1
rosparam set use_sim_time true    #终端2
rosbag record /points_raw      #终端2
rosbag play --clock xxx.bag /points_cloud:=/points_raw    #终端3

这里一共需要开启三个终端,其中第一个是启动ROS;

终端2先要对use_sim_time进行设置,也就是使用我们所说的仿真时间,然后使用rosbag record进行录制,注意我们在后面还加上了一个/points_raw话题,那么问题来了,前面说到了我们并没有这个话题,我们的话题是/points_cloud,怎么录制/points_raw这个话题呢,解决方法在终端3中。

终端3是播放点云数据包,–clock是跟我们前面设置的use_sim_time有关联的,感兴趣的小伙伴可以上网搜搜,这里不过多阐述了。但是后面还有语句“/points_cloud:=/points_raw”,这一句的意思是把xxx.bag包中的话题/points_cloud改为话题/points_raw,这样我们在终端2就可以录制到只包含/points_raw话题的数据包了。

进行下一步,放入Autoware中构建点云地图。

这里我们采用Autoware中已经写好的一个简单的TF关系,所以基本不用大家写代码文件,只要动动鼠标即可;

设置TF关系

在Setup菜单中,选Localizer为Velodyne(一般默认就是这个),点击下方Baselink to Localizer的TF按钮(一般后面默认的数值是1.2、0、2、0、0、0);再点击下方的Vehicle Model,Autoware会自动加载一个默认模型(在rviz显示时,如果有激光雷达数据,车辆会显示为黑色);

在这里插入图片描述

设置ndt_mappint

在Compulting菜单中找到lidar_localizer下的Ndt_Mapping选项,点击后面的app进行设置,将Method_Type选为pcl_generic,有的教程推荐选择pcl_anh_gpu,也就是说用GPU,这个我用的时候有的时候能成功,有的时候会报错,显示进程杀死,但是generic一般就没这个问题;

在这里插入图片描述

设置TF转换

在Map中点击TF的ref选择加载文件的路径,如果你安装的是Autoware1.14,应该选择的是,这是加载默认world到map的坐标转换,再点击TF按钮;

autoware.ai/src/autoware/documentation/autoware_quickstart_examples/launch/tf_local.launch

制作点云地图

点击Simulation页面,点击页面右上方的ref按钮,加载之前录制的bag文件(点云话题要是/points_raw),点击Play按钮播放,然后在右方playing后面有数字显示时点击Pause暂停,再点击右下方的Rviz按钮,启动Rviz,在Rviz中加载配置文件,配置文件路径为:

autoware.ai/src/car_demo/car_demo/rviz/default.rviz

再回到runtime_manager的simulation页面再次点击Pause页面就可以播放了。

界面如下:

在这里插入图片描述

保存点云地图

当点云地图构建完后点击compulting中的Ndt_Mappint后面的app,最下方有一个保存路径,点击右边的ref设置保存路径,将Filter Resolution设置为0.2,点击PCD OUTPUT输出.pcd文件。

如果要查看构建的点云地图,点击runtime maneger的Map菜单,点击Point Cloud右边的ref按钮加载保存的.pcd文件,点击Point Cloud按钮,当下面的进度条右边显示OK的时候则加载结束,然后点击右下角的Rviz启动Rviz模块,通过Add加载/points_map话题即可显示图像(注意加载的路径以及pcd文件一定要是全英文的,否则加载不成功的,亲测!)

如图示:

在这里插入图片描述

另一种查看方式是通过PCL库查看的,在终端输入

pcl_viewer xxx.pcd

显示的图片如下:

在这里插入图片描述

至此,点云地图构建完毕!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于Autoware制作高精地图(一) 的相关文章

  • Android应用与硬件建立连接

    文章目录 1 建立连接的原理2 信件 和 邮递员 3 对方可能未收到如何处理4 接收 回信 5 多次数据交互6 小结 1 建立连接的原理 在实现软件与硬件交互的时候 xff0c 首先需要了解该硬件的构造 xff0c 运行流程等相关操作 xf
  • 使用Layui时间组件(laydate)

    在一般的程序或者软件业务的操作上 xff0c 通常涉及时间的记录 xff0c 需要记录业务时间 xff0c 或者根据时间来筛 选业务 选择时间 xff0c 可以直接输入 xff0c 也可以弹出日期进行选择 在layui中提供了 xff0c
  • 规范vs代码

    开发工具与关键技术 xff1a VS 作者 xff1a 吴业华 撰写时间 xff1a 2019年7月7号 在我们编程过程中 代码的规范性涉及很大很大 xff0c 有时候即使你的代码打对了 但是依然报错 这份功劳差不多大概都是代码的不规范所收
  • ESP8266_APP连接试验

    ESP8266 APP连接试验 概述硬件部分8266固件烧录Arduino IDE 8266版型下载安装MQTT库ESP8266程序设计 APP部分创建项目UI设计主程序设计 概述 本次试验使用的是ESP8266 NodeMCU 硬件部分
  • ROS安装时rosdep init与rosdep update问题解决方法(2022.04.08亲测)

    2022 4 8更新 xff1a 运行下面的指令即可 span class token function sudo span span class token function apt get span span class token f
  • 【已解决】mmcv/_ext.cpython-37m-x86_64-linux-gnu.so: undefined symbol: _ZN6caffe28TypeMeta21_typeMetaData

    问题描述 使用MMDetection复现论文 xff0c 出现如下Bug xff1a ImportError home quaiping anaconda3 lib python3 7 site packages mmcv ext cpyt
  • g2o图优化简介与基本使用方法

    一 g2o简介 g2o xff08 General Graphic Optimization xff09 是一个基于图优化的库 xff0c 将非线性优化与图论结合起来的理论 xff0c 我们可以利用g2o求解任何可以表示为图优化的最小二乘问
  • Realsense安装使用过程问题汇总

    1 安装失败内核不支持 问题 xff1a 由于我在Ubuntu20 04上进行安装 xff0c 内核版本为5 13 xff0c 而目前realsense最高仅支持到5 4 xff0c 所以内核版本过高需要降低内核版本才能再次编译安装 官方要
  • ROS与STM32通信的实现

    ROS功能包与STM32工程文件 xff1a 蓝奏云 xff1a https huffie lanzouw com iN7w602ti37a 1 通信协议 STM32和ROS端各有一个数据发送函数和数据接收函数 xff0c 发送和接受的数据
  • C语言 字符串最后一位可用’\0‘标示

  • 基于C#的工控上位机软件开发从入门到学废,需要几步?

    基于C 的工控上位机软件开发从入门到学废 xff0c 需要几步 xff1f 随着工控产品的应用 xff0c 开始大幅度渗透进民用领域 涉及的工控产品范围广泛 xff0c 如PLC DCS 变频器 仪表 电机 SCADA 低压及配电元器件等
  • 工作生活篇之第六天

    工作生活篇之第六天 最近由于疫情的影响 xff0c 国家电网也发布了最新消息 xff0c 电费在欠额的情况可继续使用 本来我是以为只有电费欠费可以继续使用 xff0c 没想到燃气费也是 xff0c 最近燃气费不多了 xff0c 然后还得去银
  • 工作生活篇之第九篇

    工作生活篇之第九篇 一直觉得这世上告别仪式挺多的 xff0c 比如喝酒 旅行 xff0c 或干脆痛哭一场 xff0c 可是后来才知道 xff0c 人生中大部分告别是悄无声息的 xff0c 原来某天的相见 xff0c 竟已是最后一面 xff0
  • ROS:查看ROS相关信息的常用方法(三)

    文章目录 一 ROS命令与节点话题查看1 rosnode2 rostopic3 rostopic info 话题名称4 rosrun rqt graph rqt graph 二 rqt工具与节点话题查看 一 ROS命令与节点话题查看 1 r
  • 【算法】基于STM32的MPU6050卡尔曼滤波算法(入门级)

    1 简介 卡尔曼滤波 xff08 Kalman filtering xff09 是一种利用线性系统状态方程 xff0c 通过系统输入输出观测数据 xff0c 对系统状态进行最优估计的算法 由于观测数据中包括系统中的噪声和干扰的影响 xff0
  • 爬虫的爬取策略: 宽度优先与深度优先

    64 爬取策略 xff1a 宽度优先与深度优先 1 分别的优缺点 2 什么场景下用 xff1f 爬虫的抓取策略 在爬虫系统中 xff0c 待抓取URL队列是很重要的一部分 待抓取URL队列中的URL以什么样的顺序排列也是一个很重要的问题 x
  • shell脚本内调用另外一个shell脚本的几种方法

    有时会在一个shell脚本 如test call other shell sh 中调用另外一个shell脚本 如parameter usage sh xff0c 这里总结几种可行的方法 xff0c 这些方法在linux上和windows上
  • 真实项目开发的input标签焦点事件运用

    真实项目开发中input标签焦点事件的运用 开发工具与关键技术 xff1a VisualStudio C 作者 xff1a 落白 撰写时间 xff1a 2019 6 15 在开发项目时有时候会需要这么一个功能效果 xff0c 比如有六个in
  • layui use 定义js外部引用函数

    layui use 加载layui define 定义的模块 xff0c 当外部 js 或 onclick调用 use 内部函数时 xff0c 需要在 use 中定义 window 函数供外部引用 window span class tok
  • shell脚本中内嵌可执行文件/文件

    示例 test sh span class token operator span span class token operator span bin span class token operator span sh 追加在shell脚

随机推荐

  • 浅谈嵌入式

    浅谈嵌入式 相比耳熟能详的互联网行业 xff0c 嵌入式这几个字眼出现在公众眼前的几率可以达到忽略不计的程度 xff0c 这不仅说明嵌入式行业的工程师数量远比互联网少 xff0c 同时意味着嵌入式行业的吸引力貌似低于互联网 但是 xff0c
  • C语言系列(一):C语言程序概述

    C语言作为一种高级程序设计语言 xff0c 既有高级语言的方便性 灵活性和通用性等特点 xff0c 又兼具低级语言的特性 xff0c 提供程序员直接操作计算机硬件的功能 适合各种类型的软件开发 xff0c 深受软件工程技术人员的青睐 嵌入式
  • C语言系列(三):基本数据类型与表达式

    计算机中的数据不单是简单的数字 xff0c 所有计算机处理的信息 xff0c 包括文字 声音 图像等都是以一定的数据形式存储的 xff0c 数据在内存中保存 xff0c 存放的情况由数据类型决定 C语言的数据类型 基本类型 xff1a 整型
  • C语言系列(四): 分支结构程序设计

    选择结构是程序设计3种基本结构之一 xff0c 通过判定给定的条件是否成立选择需要执行的操作 C语言提供了条件语句 if语句和switch语句 用以实现选择结构的程序设计 xff0c 条件通常用关系表达式或逻辑表达式表示 C语言提供3种逻辑
  • C语言系列(五):循环结构程序设计

    循环结构是结构化程序设计的基本结构之一 xff0c C语言提供了三种循环结构语句 while语句 xff0c do while语句和for语句 for语句在C语言系列 xff08 二 xff09 xff1a 用C语言编写程序已经讲解 xff
  • C语言系列(六):函数与预编译处理

    模块化程序设计方法 在程序设计与开发中 xff0c 随着解决问题的复杂化 xff0c 编写程序的代码也更加复杂 一方面 xff0c 大量的程序语句会使程序的逻辑结构产生混乱 xff0c 给程序的编写 阅读和维护带来困难 xff1b 另一方面
  • Linux驱动开发经典面试简答题

    1 Linux设备中字符设备与设备有什么主要的区别 xff1f 请分别举例一些实际的设备说出它们是哪一类设备 字符设备 xff1a 字符设备是个能够像字节流 xff08 类似文件 xff09 一样被访问的设备 xff0c 由字符设备驱动程序
  • CMake中cmake_host_system_information的使用

    CMake中的cmake host system information命令用于查询各种主机系统信息 xff0c 其格式如下 xff1a cmake host system information RESULT lt variable gt
  • 一文知晓嵌入式Linux

    嵌入式Linux是什么 嵌入式Linux跟桌面Linux一样 xff0c 是一个操作系统 从单片机走过来的童鞋往往习惯于直接控制寄存器 xff0c 事必躬亲 xff0c 从零开始实现想要的功能 而在嵌入式Linux的世界里 xff0c 我们
  • 修改i.mx6ull Linux内核 启动logo

    1 制作Linux内核需要的开机logo xff08 ppm格式 xff09 1 1在Ubuntu系统上安装netpdm工具 命令如下 xff1a span class token macro property sudo apt get i
  • keil5编译错误error: #5: cannot open source input file “core_cm3.h“: No such file or directory

    用Keil vision5编译时出现 xff1a error 5 cannot open source input file core cm3 h No such file or directory 可能是MDK版本太新了 xff0c 我装
  • IPv6基础详解

    IPv6 由于internet规模的扩大 xff0c IPv4地址空间已经消耗殆尽 xff0c IETF在90年代提出了下一代互联网协议IPv6 xff0c IPv6支持几乎无限的地址空间 xff0c 并且配置更加简单 xff0c IPv6
  • Pycharm中debug使用学习

    1 运行环境 1 1 运行 xff1a 先确认项目运行环境 点击右下角python查看 向任务中添加环境 xff0c 一般加入anaconda的环境 xff0c 配置方便 切换到自己所需环境 添加运行环境 初次搭建 xff0c 哔哩哔哩中新
  • 对项目的梳理、流程和总结

    过程 我在制作 中国汽车技术研究中心 的一个演讲PPT前 xff0c 也已经有第一版的基础了 xff0c 不过 xff0c 第一版的PPT客户并不满意 xff0c 因为这个风格不是客户想要的 xff0c 所以客户对第一版的PPT并不是很满意
  • 【ROS】xxx is neither a launch file in package xxx nor is xxx a launch file name……解决

    在ros中新增加一个功能包时 xff0c 如果没有处理得当的话 xff0c 在执行时很有可能报如下错误 xff1a xxx is neither a launch file in package xxx nor is xxx a launc
  • FreeRTOS——流和消息缓冲区

    FreeRTOS 基础系列文章 基本对象 FreeRTOS 任务 FreeRTOS 队列 FreeRTOS 信号量 FreeRTOS 互斥量 FreeRTOS 任务通知 FreeRTOS 流和消息缓冲区 FreeRTOS 软件定时器 Fre
  • FreeRTOS——静态与动态内存分配

    FreeRTOS 基础系列文章 基本对象 FreeRTOS 任务 FreeRTOS 队列 FreeRTOS 信号量 FreeRTOS 互斥量 FreeRTOS 任务通知 FreeRTOS 流和消息缓冲区 FreeRTOS 软件定时器 Fre
  • CAS 6.5.5项目初始化搭建运行

    一 项目背景介绍 公司项目重构 xff0c 决定使用CAS中央认证系统 在GitHub上找到最新的稳定版本6 5 5 CAS项目在5 x版本的运行环境是jdk8 xff0c 使用maven做的项目管理 6 x使用的是jdk11作为运行环境
  • GoogleTest中gMock的使用

    GoogleTest中的gMock是一个库 xff0c 用于创建mock类并使用它们 当你编写原型或测试 prototype or test 时 xff0c 完全依赖真实对象通常是不可行或不明智的 not feasible or wise
  • 基于Autoware制作高精地图(一)

    基于Autoware制作高精地图 xff08 一 xff09 开始进入正题 xff0c 也是最近在忙的一件事 xff0c 制作高精地图 高精地图的制作大概分为以下四个流程 xff08 不一定完全正确 xff09 xff1a 1 构建点云地图