热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Autoware定位与建图模块(一)——定位

转载自https:www.jianshu.comp38221263c4ee一、概述该包是从autoware中提取出来,能够实现基于激光雷达点云定位功能的最小包。注意:使用该包完成定

转载自https://www.jianshu.com/p/38221263c4ee
一、概述

该包是从autoware中提取出来,能够实现基于激光雷达点云定位功能的最小包。

注意:使用该包完成定位功能前,需要先通过激光SLAM算法获取环境pcd点云地图。

该包的定位算法种类:



  • 1.纯激光雷达点云定位

  • 2.融合GNSS的点云定位

  • 3.融合IMU的点云定位

  • 4.融合GNSS、IMU的点云定位


二、功能包文件组织结构

该定位功能必须包含包:



  • autoware_build_flags

  • messages

gnss_localizer的CMake依赖:



  • gnss

lidar_localizer的CMake依赖:



  • pcl_omp_registration

  • autoware_health_checker -> ros_observer

  • points_downsampler -> velodyne_pointcloud(apt安装)

  • ndt_cpu -> ndt_tku

  • jsk_rviz_plugins(apt安装)

map_file的CMake依赖:



  • vector_map

编译使用catkin build,不能用catkin_make,会因编译包的先后顺序导致报错。

功能包文件组织结构

 

 

三、安装
3.1 安装依赖

/points_rawvoxel_grid_filter节点订阅的话题名称,消息类型为sensor_msgs/PointCloud2


4.2 实车测试


4.2.1 通过SLAM算法建立环境点云地图

若定位要融合GPS,建图时需要知道建图原点处的GPS信息。


4.2.2 实时点云的frame_id与话题名称匹配

激光雷达点云的tf坐标系绑定在了/velodyne上,话题名称为/points_raw


4.2.3 加载点云地图

/points_raw是经过voxel_grid_filter下采样后,发布/filtered_points/ndt_maching节点订阅该话题,发布/ndt_pose/ndt_posepub_odom节点订阅的话题,该话题给move_base提供里程计信息。


五、解析

5.1 map_file功能包

该功能包可加载3D地图点云和矢量地图,此处仅用点云地图。

source devel/setup.bash
roslaunch autoware_quickstart_examples small_robot_map.launch

robot_map.launch代码如下,通过指定点云地图文件路径加载点云地图,发布点云地图话题 /points_map

small_robot_tf.launch代码如下,设置静态发布的tf树
主要指定world->map;base_link->velodyne;base_link->mobility;这三个静态tf变换,具体参数可以根据自己的机器人进行调整。默认world与map重合,map与mobility重合。






headless_setup.yaml代码如下,指定NDT matching节点中激光雷达与车体坐标系之间的tf变换关系。

#T_baselink_velodyne
tf_x: 0.12 #0.12
tf_y: 0
tf_z: -0.3 #0.35
tf_yaw: 0
tf_pitch: 0
tf_roll: 0
localizer: velodyne
use_sim_time: false

注意!!!

如果rviz中无法显示/points_map地图点云,可能是通过slam算法建立pcd点云文件width参数不匹配。

1。以有序点云方式加载

修改map_file/nodes/points_map_loader/points_map_loader.cpp中342行

pcd.width = int(pcd.data.size()/32);

中的32改为16

2。以无序点云方式加载

用cloudcompare等3D点云编辑工具打开pcd点云文件,查看软件终端显示的点云数量,将该值直接赋值,此时需要指定pcd.screen"参数,将pcd.width参数打印出来。

output="screen"

5.2 gnss_localizer与gnss功能包

gnss_localizer包主要实现将两种GPS消息类型(nmea_msgs/Sentence与sensor_msgs/NavSatFix)转换为UTM坐标,其中GPS坐标(WGS84)转UTM坐标算法具体实现是在gnss功能包中。

将nmea_msgs/Sentence转换为UTM坐标

版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!



推荐阅读
  • 各个组件confspark-env.sh配置spark的环境变量confspark-default.conf配置spark应用默认的配置项和spark-env.sh有重合之处,可在 ... [详细]
  • Lunix历史及如何学习
    1.Lunix是什么1.1Lunix是操作系统还是应用程序Lunix是一套操作系统,它提供了一个完整的操作系统当中最底层的硬件控制与资源管理的完整架构, ... [详细]
  •  在使用PHP多年之后,我对PHP的优势和劣势已经非常清楚,与后起之秀Golang相比,两者已经不在一个重量级。 PHP更像是70kg级别的选手,脚本语言,极速开发,部署方便,性能 ... [详细]
  • 前言可能你并不太了解msys2,但是作为一个程序员,你一定知道mingw,而msys2就集成了mingw,同时msys2还有一些其他的特性,例如包管理器等。msys2可以在wind ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • Docker安装Rabbitmq(配合宝塔)
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Docker安装Rabbitmq(配合宝塔)相关的知识,希望对你有一定的参考价值。一、事前准备 ... [详细]
  • 一、域名解析记录说明记录类型A:用来指定域名的IPv4地址(如:8.8.8.8),如果需要将域名指向一个IP ... [详细]
  • linux树莓派和n1,树莓派 斐讯N1 搭建NFS
    什么是NFS?1台Linux主机的磁盘可以通过网络挂载到其他Linux主机上,实现云盘效果。NFS是一套软件和协议,同时也是一种文件系统& ... [详细]
  • 一个不错的JDBC连接池教程(带具体例子)
    1.前言数据库应用,在许多软件系统中经常用到,是开发中大型系统不可缺少的辅助。但如果对数据库资源没有很好地管理(如:没有及时回收数据库的游 ... [详细]
  • 作者|相学长原文|https:github.comwuomzfxblogblobmasterthis.md日常开发中,我们经常用到this。例如用Jquery绑定事件 ... [详细]
  • 缓冲区溢出实例(一)–Windows
    一、基本概念缓冲区溢出:当缓冲区边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被填满从而覆盖了相邻内存区域的数据。可以修改内存数据,造成进程劫持,执行恶意代码,获 ... [详细]
  • 正月十五后第一贴:网页设计素材倾情奉献(附下载源文件)
    昨晚通宵把本该年前完成的项目中,最后两模块搞完.浏览整个系统,可以用惨不忍睹来形容,功能上实现是没问题,不过,页面布局,美化等,就太差的忒多了.于是google之,找到的很少, ... [详细]
  • Life is A Journey 人在旅途
    LifeisAJourney人在旅途-JackLondon杰克伦敦Fromthehelltotheheaven,Theresnostraightwaytowalk.Sometime ... [详细]
  • 我在内网一台服务器上搭建了私有CA中心来做自授权ssl证书,将生成的根证书导入浏览器后访问https没有再出现警告,但我在另外一台CentOS上使用 ... [详细]
  • python 英文关键词提取_如何提取文章的关键词(Python版)
    项目需求:我们采集来的文章没有关键词,在发布的时候无法设定标签,我们通过代码自动提取出文章的关键词,达到对数据加工的目的。 ... [详细]
author-avatar
乐乐禧程整_435
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有