镭神激光雷达对于Autoware的适配
1. 前言
我们的自动驾驶采用镭神激光雷达,在使用Autoware的时候,需要对镭神激光雷达的底层驱动,进行一些改变以适配Autoware。
2. 修改
(1)首先修改lslidar_c32.launch文件:
<launch> <node pkg="lslidar_c32_driver" type="lslidar_c32_driver_node" name="leishen_lslidar_c32_driver" output="screen" >
<param name="frame_id" value="laser_link"/>
<param name="device_ip" value="192.168.1.200"/>
<param name="device_port" value=""/>
</node> <node pkg="lslidar_c32_decoder" type="lslidar_c32_decoder_node" name="leishen_lslidar_c32_decoder" output="screen">
<!-- <param name="child_frame_id" value="world"/> -->
<param name="child_frame_id" value="velodyne"/>
<param name="point_num" value=""/>
<param name="channel_num" value=""/>
<param name="angle_disable_min" value=""/>
<param name="angle_disable_max" value=""/>
<param name="min_range" value="0.15"/>
<param name="max_range" value="500.0"/>
<param name="frequency" value="10.0"/>
<param name="publish_point_cloud" value="true"/>
<param name="publish_channels" value="false"/>
<remap from="lslidar_point_cloud" to="/points_raw" />
</node> <!--node name="rviz" pkg="rviz" type="rviz" args="-d $(find lslidar_c32_decoder)/launch/lslidar_c32.rviz" output="screen"/--> </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变换的时候时间戳出错,所以,需要修改时间戳,找到如下代码
void LslidarC32Decoder::publishPointCloud() {
// pcl::PointCloud<pcl::PointXYZI>::Ptr point_cloud(
// new pcl::PointCloud<pcl::PointXYZI>());
VPointCloud::Ptr point_cloud(new VPointCloud());
//point_cloud->header.stamp =
//pcl_conversions::toPCL(sweep_data->header).stamp;
point_cloud->header.frame_id = child_frame_id;
point_cloud->height = ;
for (size_t i = ; i < ; ++i) {
const lslidar_c32_msgs::LslidarC32Scan& scan = sweep_data->scans[i];
// The first and last point in each scan is ignored, which
// seems to be corrupted based on the received data.
// TODO: The two end points should be removed directly
// in the scans.
// point_time unit is sec
double timestamp = point_time;
//point_cloud->header.stamp = static_cast<uint64_t>(timestamp * 1e6);
point_cloud->header.stamp = ros::Time::now().toSec() * 1e6;
if (scan.points.size() == ) continue;
size_t j;
VPoint point;
for (j = ; j < scan.points.size()-; ++j) {
point.timestamp = timestamp - (scan.points.size()- - j)*0.00005; // time interval for each point is 50us
point.x = scan.points[j].x;
point.y = scan.points[j].y;
point.z = scan.points[j].z;
point.intensity = scan.points[j].intensity;
point.range = scan.points[j].distance;
point.h_angle = scan.points[j].azimuth;
point.v_angle = layer_altitude[i];
point.laserid = layer_id[i];
point_cloud->points.push_back(point);
++point_cloud->width;
}
}
// if(point_cloud->width > 2000)
{
point_cloud_pub.publish(point_cloud);
}
return;
}
同样是贴上修改后的代码,将19行变为20行。
镭神激光雷达对于Autoware的适配的更多相关文章
- lego loam 跑镭神32线激光雷达
师弟反应镭神32线激光雷达(32C)录制的数据包不能跑lego loam,这里就总结一下. 首先lego loam默认的接受的topic name是velodyne_points,点云的frame_i ...
- Lidar激光雷达市场
Lidar激光雷达市场 近年来,激光雷达技术在飞速发展,从一开始的激光测距技术,逐步发展了激光测速.激光扫描成像.激光多普勒成像等技术,如今在无人驾驶.AGV.机器人等领域已相继出现激光雷达的身影. ...
- ROS中发布激光扫描消息
激光雷达工作时会先在当前位置发出激光并接收反射光束,解析得到距离信息,而后激光发射器会转过一个角度分辨率对应的角度再次重复这个过程.限于物理及机械方面的限制,激光雷达通常会有一部分“盲区”.使用激光雷 ...
- SLAM方向国内有哪些优秀公司?
计算机视觉life为读者整理了国内几十家涉及SLAM的优秀公司,涵盖自动驾驶.仓储机器人.服务机器人.无人机.AR.芯片相机等领域. 一 自动/辅助驾驶: 1.百度: 主要产品:自动驾驶软件 百度智能 ...
- 从零开始搭建Android组件化框架
问题 在已经开发过几个项目的童鞋,如果这时需要重新开发一个新项目,是否需要自己重新搭建框架呢,还是从老项目中拷贝粘贴? 我们是否可以封装一个底层的lib库,这个底层的公共基础库 包括了一些第三方库(如 ...
- MVPArms MVP快速集成框架
前言 今年的Android技术圈中MVP,Dagger2,Rxjava,Retrofit这些词汇非常火,随便打开一个技术论坛都充斥着大量的关于这些技术的文章,Github也充斥着各种以基于MVP+Re ...
- 倍加福r2000激光驱动安装及使用
第一次完成激光的驱动安装和激光数据的采集,遇到很多问题,最后一一解决,现在记录下来,方便后面給机器人安装激光使用 激光的了解 (1)激光型号:OMD30M-R2000(30M表示30m) (2)参考手 ...
- Autoware 培训笔记 No. 4——寻迹
1. 前言 好多初创公司公布出来的视频明显都是寻迹的效果,不是说寻迹不好,相反可以证明,寻迹是自动技术开始的第一步. 自动驾驶寻迹:一种能够自动按照给定的路线(通常是采用不同颜色或者其他信号标记来引导 ...
- fir.im Weekly - 关于 Log Guru 开源、Xcode 探索和 Android7.0 适配
本期 fir.im Weekly 整理了最近的一些技术分享,包括关于 Log Guru 开源.Xcode 探索. Android7.0 适配等等 iOS/Android 相关的工具.源码分享和技术文章 ...
随机推荐
- Android高可用移动网络连接---(转载自http://wingjay.com/2019/01/16/mobile-network-connection/)
读者好,前面我们在 <Android 架构之网络连接与加速> 和<Android 架构之长连接技术>两篇文章中,讲解了 Http 短连接.TCP 长连接.连接复用与速度优化.数 ...
- C#截图操作(几种截图方法)
公共函数获取屏幕截图private Bitmap GetScreenCapture(){ Rectangle tScreenRect = new Rectangle(0, 0, Screen.Prim ...
- 【洛谷2791】幼儿园篮球题(第二类斯特林数,NTT)
[洛谷2791]幼儿园篮球题(第二类斯特林数,NTT) 题面 洛谷 题解 对于每一组询问,要求的东西本质上就是: \[\sum_{i=0}^{k}{m\choose i}{n-m\choose k-i ...
- Python--方法/技巧在哪用的典型例子
就我个人在学习Python的过程中,经常会出现学习了新方法后,如果隔上几天不用,就忘了的情况,或者刚学习的更好的方法没有得到应用,还是沿用已有的方法,这样很不利于学习和掌握新姿势,从而拉长学习时间,增 ...
- 同样是高并发,QQ/微博/12306的架构难度一样吗?
开篇 同一个用户并发扣款时,有一定概率出现数据不一致,可以使用CAS乐观锁的方式,在不降低吞吐量,保证数据的一致性: UPDATE t_yue SET money=$new_money WHERE u ...
- shell脚本一次性将tab制表符改为4空格的方法
问题描述: 今天需要修改一些bash脚本,因为考虑到pycharm里面能够直接写,而我用pycharm比较多,所以直接用pycharm写了,由于改的那个bash脚本是别的同事写的,里面的缩进都是用的T ...
- Pycharm/Webstorm 上传和下拉 GitHub 项目
操作流程:Pycharm和Webstorm的操作页面类似,本文以Webstorm为例 1.打开Webstorm软件选择 Settings 2.在Version Control 中填写 Git 的可执行 ...
- client-go向controller进发---code-generator实现
这个时间长了,可能前后想了一周时间. 哎,其它不怪,只怪go的工程包管理这几年太混乱, 而国内下载资源也太漫长. 现在,只能坚持 使用go mod了. 但在使用code-generator时,go m ...
- 3、zabbix组件之间的关系
我们在安装zabbix的时候安装了四个软件:zabbix-server.zabbix-server-mysql.zabbix-web-mysql.zabbix-agent,那么这个四个软件之间有什么关 ...
- (Apache服务)个人用户主页功能
1.开启个人用户主页功能 (1)输入命令“vi /etc/httpd/conf.d/userdir.conf” (2)将第17行UserDir disabled前加一个# 将第24行UserDi ...