使用velodyne16线激光雷达跑loam-velodyne

一、velodyne-VLP16使用教程

推荐网址

http://blog.csdn.net/littlethunder/article/details/51920681

https://www.cnblogs.com/williamc17/p/9705492.html

源于用户手册的情报

使用velodyne16线激光雷达跑loam-velodyne_第1张图片

 

使用velodyne16线激光雷达跑loam-velodyne_第2张图片

 

使用velodyne16线激光雷达跑loam-velodyne_第3张图片

 使用velodyne16线激光雷达跑loam-velodyne_第4张图片

 使用velodyne16线激光雷达跑loam-velodyne_第5张图片 

非常重要的一点:velodyne-VLP16的ros-driver所使用的坐标系有别于用户手册所说明的坐标系。

为了让所有开发者围绕相同的坐标系开发软件,ros中制定了标准的坐标系定义方案。

详情如以下链接所示:

https://github.com/ros-drivers/velodyne/issues/71

http://www.ros.org/reps/rep-0103.html#axis-orientation

http://www.ros.org/reps/rep-0105.html

 

二、LOAM

2.1 源码

1)作者J Zhang,已取消开源。

该库融合二维hokuyo雷达和IMU构建三维空间点云地图。

2)作者laboshinl,https://github.com/laboshinl/loam_velodyne

该库能兼容velodyne16线,32线,64线。不同型号的雷达要对相应的参数进行修改。

3)作者tcts-mvcp,https://github.com/tcts-mvcp/loam_velodyne

Change point type to PointXYZINormal, and store original coordinate and intensity data, which are useful for applications like land markers recognition or ground segmentation, to normal and curvature, respectively.

4)作者RobustFieldAutonomyLab,https://github.com/RobustFieldAutonomyLab/LeGO-LOAM/

This repository contains code for a lightweight and ground optimized lidar odometry and mapping (LeGO-LOAM) system for ROS compatible UGVs. The system takes in point cloud from a Velodyne VLP-16 Lidar (placed horizontal) and optional IMU data as inputs. It outputs 6D pose estimation in real-time. 

The author use IMU integration to obtain the initial guess between two lidar transformation.

 

2.2 运行LOAM

roslaunch loam_velodyne loam_velodyne.launch

1)跑数据集

read from velodyne [VLP16 sample pcap] (https://midas3.kitware.com/midas/folder/12979)

roslaunch velodyne_pointcloud VLP16_points.launch pcap:="/home/laboshinl/Downloads/velodyne.pcap"

 

play sample velodyne data from [VLP16 rosbag] (https://db.tt/t2r39mjZ). “-r 0.5”降低数据播放频率

rosbag play ~/Downloads/velodyne.bag -r 0.5

 

2)利用VLP16实时采集数据

roslaunch velodyne_pointcloud VLP16_points.launch calib:="/path/to/VLP16.yaml"

在RVIZ里面,在PointCloud2选项卡中添加/velodyne_cloud_registered,设置decay time为1000ms。

使用velodyne16线激光雷达跑loam-velodyne_第6张图片

 

2.3 运行Lego-LOAM

roslaunch lego_loam run.launch

Notes: The parameter "/use_sim_time" is set to "true" for simulation, "false" to real robot usage.

1)跑数据集

rosbag play *.bag --clock --topic /velodyne_points /imu/data

Notes:

Though /imu/data is optinal, it can improve estimation accuracy greatly if provided. Some sample bags can be downloaded from [here](https://github.com/RobustFieldAutonomyLab/jackal_dataset_20170608). If your IMU frame doesn't align with Velodyne frame, use of IMU data will cause significant drift.

 

2)用VLP16和IMU采集实时数据

roslaunch velodyne_pointcloud VLP16_points.launch calib:="/path/to/VLP16.yaml"
rosrun lpms_imu lpms_imu_node _sensor_model:="LPMSB2-9BA395" _port:="00:04:3E:9B:A3:95" /imu:=/imu/data

Notes: align the coordinates of the VLP16 and IMU.

 

三、LeGO-Loam的融合里程计

可以通过 /tf 来查看融合后的里程计。

3.1 如何查看ROS中的 /tf 信息

1) rviz中添加 /TF 选项卡可视化;

2) 利用 /tf 的命令行功能查看;

 

3.2 融合里程计的 /tf 表示

节点/featureAssociation 发布了雷达里程计,frame id为 /laser_odom,10HZ;

节点/mapOptmization 发布了地图优化的里程计,frame id为 /aft_mapped,2HZ;

节点/transformFusion 订阅了来自上述两个节点的里程计topic,融合计算,发布最终的里程计,frame id为 /camera, 10HZ;

以上3个 /tf 信息流,其 parent frame id 都是 /camera_init。

 

注意:camera指的是lidar!IMU 的 /tf 数据流并没有发布出来!

使用velodyne16线激光雷达跑loam-velodyne_第7张图片

 

 

 

想法、问题记录:

1.用kf优化里程计

2. As stated in https://github.com/daobilige-su/loam_velodyne using loam for one of the test data gates_oscillating_motion.bag does not get the clear result as in the demo video of the original author. http://www.frc.ri.cmu.edu/%7Ejizhang03/Videos/gates_oscillating_motion.mp4

In my thought it might be an issue of IMU data processing in the code, as gates_oscillating_motion.bag containing IMU data, and in my experience including IMU data does not improve loam.

3. loam-velodyne的改进方案

Change point type to PointXYZINormal, and store original coordinate and intensity data, which are useful for applications like land markers recognition or ground segmentation, to normal and curvature, respectively.

https://github.com/tcts-mvcp/loam_velodyne

 

fix a bug on laserOdometry.cpp to get rid of the matrix NaN error during L-M optimization step

https://github.com/daobilige-su/loam_velodyne

 

7. #About ring#However, it failed. I debugged the node and found that KITTI dataset just provide 4 values (x y z intensity) without rings. When I read the code, I noticed that rings value can be determined by elevation of every point, and I am trying to use the same scheme

  

9. cloudcompare

10.Jacobian matrix

https://github.com/laboshinl/loam_velodyne/issues/3#issuecomment-354786065https://github.com/laboshinl/loam_velodyne/issues/3#issuecomment-374575581

 

11.How to visualize the fully registered map in RViz

   How to save the fully registered map in .pcd**

https://github.com/laboshinl/loam_velodyne/issues/3#issuecomment-385203738
https://github.com/laboshinl/loam_velodyne/issues/41

12. 关于IMU
在loam-velodyne中添加imu的讨论
https://github.com/laboshinl/loam_velodyne/issues/6
附带有imu信息的rosbag
 (http://www.frc.ri.cmu.edu/~jizhang03/Datasets/gates_oscillating_motion.bag)
demo视频http://www.frc.ri.cmu.edu/~jizhang03/Videos/gates_oscillating_motion.mp4

在Lego-loam中添加imu的讨论
RobustFieldAutonomyLab/LeGO-LOAM#19
带有IMU信息的数据集
https://github.com/RobustFieldAutonomyLab/jackal_dataset_20170608


14. IMU 和 lidar 的外参标定
https://github.com/googlecartographer/cartographer_ros/issues/902
https://github.com/googlecartographer/cartographer_ros/issues/425
kitty 数据集的imu和lidar联合标定

转载于:https://www.cnblogs.com/gdut-gordon/p/10149846.html

你可能感兴趣的:(使用velodyne16线激光雷达跑loam-velodyne)