作者:乐乐禧程整_435 | 来源:互联网 | 2023-08-15 13:34
转载自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依赖:
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依赖:
编译使用catkin build
,不能用catkin_make
,会因编译包的先后顺序导致报错。
功能包文件组织结构
三、安装
3.1 安装依赖
/points_raw
为voxel_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_pose
是pub_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 许可协议。转载请注明出处!