1. 前言

我们的自动驾驶采用镭神激光雷达,在使用Autoware的时候,需要对镭神激光雷达的底层驱动,进行一些改变以适配Autoware。

2. 修改

(1)首先修改lslidar_c32.launch文件:

 1 <launch>
 2
 3   <node pkg="lslidar_c32_driver" type="lslidar_c32_driver_node" name="leishen_lslidar_c32_driver" output="screen" >
 4     <param name="frame_id" value="laser_link"/>
 5     <param name="device_ip" value="192.168.1.200"/>
 6     <param name="device_port" value="2368"/>
 7   </node>
 8
 9   <node pkg="lslidar_c32_decoder" type="lslidar_c32_decoder_node" name="leishen_lslidar_c32_decoder" output="screen">
10     <!-- <param name="child_frame_id" value="world"/> -->
11     <param name="child_frame_id" value="velodyne"/>
12     <param name="point_num" value="2000"/>
13     <param name="channel_num" value="0"/>
14     <param name="angle_disable_min" value="0"/>
15     <param name="angle_disable_max" value="0"/>
16     <param name="min_range" value="0.15"/>
17     <param name="max_range" value="500.0"/>
18     <param name="frequency" value="10.0"/>
19     <param name="publish_point_cloud" value="true"/>
20     <param name="publish_channels" value="false"/>
21     <remap from="lslidar_point_cloud" to="/points_raw" />
22   </node>
23
24   <!--node name="rviz" pkg="rviz" type="rviz" args="-d $(find lslidar_c32_decoder)/launch/lslidar_c32.rviz" output="screen"/-->
25
26 </launch>

这里贴出了修改后的launch文件,第10行修改为11行,21行去掉s。我们修改了frame_id,将之前的“world”改为“velodyne”。还有就是Autoware需要的点云topic为points_raw,而镭神的点云topic为point_raw,我们讲point_raw改为points_raw。

(2)修改时间戳

根据镭神的手册:“如果镭神接入GPS,那么会采用GPS时间,如果不接入GPS,雷达会采用内部时间,从0开始以微秒为单位计数,计数值赋值到主数据流时间戳的字节,计数到1小时在从0开始”。这样会导致在使用TF变换的时候时间戳出错,所以,需要修改时间戳,找到如下代码

 1 void LslidarC32Decoder::publishPointCloud() {
 2 //    pcl::PointCloud<pcl::PointXYZI>::Ptr point_cloud(
 3 //                new pcl::PointCloud<pcl::PointXYZI>());
 4     VPointCloud::Ptr point_cloud(new VPointCloud());
 5
 6     //point_cloud->header.stamp =
 7             //pcl_conversions::toPCL(sweep_data->header).stamp;
 8     point_cloud->header.frame_id = child_frame_id;
 9     point_cloud->height = 1;
10
11     for (size_t i = 0; i < 32; ++i) {
12         const lslidar_c32_msgs::LslidarC32Scan& scan = sweep_data->scans[i];
13         // The first and last point in each scan is ignored, which
14         // seems to be corrupted based on the received data.
15         // TODO: The two end points should be removed directly
16         //    in the scans.
17         // point_time unit is sec
18         double timestamp = point_time;
19         //point_cloud->header.stamp = static_cast<uint64_t>(timestamp * 1e6);
20         point_cloud->header.stamp = ros::Time::now().toSec() * 1e6;
21         if (scan.points.size() == 0) continue;
22         size_t j;
23         VPoint point;
24         for (j = 1; j < scan.points.size()-1; ++j) {
25             point.timestamp = timestamp - (scan.points.size()-1 - j)*0.00005;  // time interval for each point is 50us
26             point.x = scan.points[j].x;
27             point.y = scan.points[j].y;
28             point.z = scan.points[j].z;
29             point.intensity = scan.points[j].intensity;
30             point.range = scan.points[j].distance;
31             point.h_angle = scan.points[j].azimuth;
32             point.v_angle = layer_altitude[i];
33             point.laserid = layer_id[i];
34
35             point_cloud->points.push_back(point);
36             ++point_cloud->width;
37         }
38
39     }
40
41     //      if(point_cloud->width > 2000)
42     {
43         point_cloud_pub.publish(point_cloud);
44     }
45
46
47     return;
48 }

同样是贴上修改后的代码,将19行变为20行。

转载于:https://www.cnblogs.com/hgl0417/p/11165275.html

镭神激光雷达对于Autoware的适配相关推荐

  1. 在ROS上驱动镭神激光雷达LS01C,以及利用LS01C实现hector_slam

    本人为了回馈广大网友的热心指导,第一次写博文,所以写的肯定有许多不完善之处,敬请原谅.接下来讲讲利用的是镭神激光雷达LS01C实现在ROS下的驱动,以及如何利用LS01C实现Hector_slam的建 ...

  2. 【学习记录】镭神激光雷达与PC机的NTP同步

    本文仅用于记录自己在实现镭神C32激光雷达和PC机进行NTP同步时的一些总结. 吐槽在先,镭神的文档写极其不完善,很多都只是提了一句,但并没有完整的说应该具体怎么做.前前后后折腾了三四天,在一知半解的 ...

  3. 镭神智能C16调试及其适配Autoware1.14

    一.将硬件连通,确定数据通讯成功 二.下载好传感器的驱动并编译完成 mkdir -p ~/lslidar_ws/src cd ~/lslidar_ws/src git clone https://gi ...

  4. 基于ROS+镭神激光雷达+amcl定位、导航的智能车学习记录

    目录 一.背景 二. 难点之避障学习 三.比赛实参 一.背景 背景 目前大火的智能车.机器人.无人驾驶技术,现基于嵌入式系统.人工智能.机器人定位与导航基础 开展了第十四届全国大学生智能汽车竞赛-室外 ...

  5. 镭神激光雷达16线驱动安装及使用(最新驱动修复时间戳、libpcap)

    文章目录 1. windows下安装上位机,可视化显示 2. linux下安装ros驱动,rviz显示 坐标 1. windows下安装上位机,可视化显示 安装包"上位机软件"中, ...

  6. 搭建实验室3d slam 移动小车 4.1jackal小车+镭神32线激光雷达lego-loam建图

    搭建实验室3d slam 移动小车 4.1.1jackal小车+镭神32线激光雷达lego-loam建图 镭神32线 lego-loam建图 视频链接 镭神32线 lego-loam建图 参考博客: ...

  7. 搭建实验室3d slam 移动小车 3.3jackal移动平台 组合导航POMS-GI201C、镭神32线激光雷达 卫星授时

    搭建实验室3d slam 移动小车 3.3jackal移动平台 组合导航POMS-GI201C.镭神32线激光雷达 卫星授时 首先,为什么要授时: 参考博客: 激光雷达中是如何做到和GPS时间同步的? ...

  8. 镭神c16激光雷达使用及适配Autoware

    镭神c16激光雷达使用及适配Autoware 贴个链接:https://www.ncnynl.com/archives/201810/2762.html 创建工作空间 mkdir -p ~/lslid ...

  9. Ubuntu18.04鲁班猫ROS-melodic适配镭神智能C16多线激光雷达

    前言   本文记录在Ubuntu18.04-melodic中适配镭神智能C16多线雷达的过程,使用最近比较火的国产ROS开发板鲁班猫(LubanCat )进行适配. 准备硬件 一套镭神智能C16多线雷 ...

最新文章

  1. 用D3.js 十分钟实现字符跳动效果
  2. Keepalived + LVS-DR搭建高可用Web服务器集群
  3. Linux与云计算——第二阶段 第五章:存储Storage服务器架设—分布式存储GlusterFS基础...
  4. Linux文件索引节点相关概念
  5. javascript中==与===的区别
  6. asp.net html table,在ASP.NET中利用HtmlTable动态创建表格 | 学步园
  7. SKINTOOL 系统不能正常运行
  8. 基于PaddleOCR实现AI发票识别的Asp.net Core应用
  9. overflowhidden把内容遮住了怎么办_图片有水印怎么办?不用PS,有这4招就够了!...
  10. Linux系统诊断-内存基础
  11. STM32之外部中断例程
  12. Memcahce和Redis比较
  13. 【POJ】1067 取石子游戏(博弈论)
  14. dnmp一键部署搞定的php开发环境基于Docker的LNMP一键安装程序
  15. 洛谷 P1878 舞蹈课(优先队列 + 双链表)
  16. html表单 多行输入文字,如何在HTML中创建多行文本输入(文本区域)?
  17. UI设计师高效切图6大步骤
  18. 企业如何正确选择云服务商
  19. [CTF]Rabbit加密
  20. GitHub 排名前 100 的安卓、iOS项目简介

热门文章

  1. easyui tree的简单使用
  2. ISE_FIFO_IP核接口测试(一)
  3. 【旅行】1月17日镇江自驾游
  4. HDU 4293 Groups (线性dp)
  5. 利用python对图像进行傅里叶变换_Python 实现图像快速傅里叶变换和离散余弦变换...
  6. linux lvs 存储层,LVS集群配置之LVS介绍
  7. 用于构建高级媒体应用程序的工具
  8. 启动Eureka客户端服务时报错:java.net.ConnectException: Connection refused:connect
  9. SSM框架之Spring MVC(四)异常处理和拦截器实现
  10. 国际象棋游戏界面和简易棋谱规则-最新Python学习成果