EAI X4雷达使用及在ros中的各种各样的坑

雷达介绍

​ x4雷达的相关信息在网上有很多,在这里就不过多赘述,我会放几张图,其他的很多blog里面都有写,不是这一片文章的重点。

总结来讲,x4的纸面数据算不上优秀,但是对于创客和学生来说还是够用的,而且非常对得起他的价格,网上用的人非常多,遇到问题也比较容易找到解决方案。

搭建ros使用环境

EAI的官网上面有x4雷达的ros包,经过测试可以直接使用。

mkdir lidar
cd lidar
mkdir src
catkin_make
cd src
git clone https://github.com/EAIBOT/ydlidar.git
cd ..
catkin_make

这样,只要编译没有报错,就可以成功的使用雷达了。

在软件包中的launch文件中找到lidar.launch(我一般习惯自己在rviz中选择可视化数据,如果要直接打开rviz也可以打开lidar_view.launch),下面时launch中的一些节点参数的设置解释。

<launch><node name="ydlidar_node"  pkg="ydlidar"  type="ydlidar_node" output="screen" respawn="false" >  节点的设置<param name="port"         type="string" value="/dev/ydlidar"/>   x4雷达在电脑中的端口号<param name="baudrate"     type="int"    value="115200"/>         通信波特率<param name="frame_id"     type="string" value="laser_frame"/>    雷达的frame_id,tf树中的名称<param name="low_exposure"  type="bool"   value="false"/>         是否打开雷达的低功耗模式<param name="resolution_fixed"    type="bool"   value="true"/>    激光雷达是否具有固定的角度分辨率<param name="auto_reconnect"    type="bool"   value="true"/><param name="reversion"    type="bool"   value="false"/><param name="angle_min"    type="double" value="0" />             雷达检测的最小角度<param name="angle_max"    type="double" value="180" />           雷达检测的最大角度<param name="range_min"    type="double" value="0.1" />           雷达检测的最小距离<param name="range_max"    type="double" value="5" />             雷达检测的最大角度<param name="ignore_array" type="string" value="" />              将当前角度设置为0<param name="samp_rate"    type="int"    value="9"/>              雷达的采样频率<param name="frequency"    type="double" value="7"/>              雷达的扫描频率</node><node pkg="tf" type="static_transform_publisher" name="base_link_to_laser4"args="0.2245 0.0 0.2 0.0 0.0  0.0 /base_footprint /laser_frame 40" />设置tf树,发布静态tf信息
</launch>

这里着重介绍几个重要参数,主要就是angle_min,angle_max,range_min,range_max,其实这几个参数画一个圆就可以解决。

其中里面的圆圈圈就是雷达扫描的范围和里面相应的参数

设置好了相应的参数就可以开启雷达了(别忘了开启之前要source .devel/setup.bash或者写入到.bashrc中)

roslaunch ydlidar lidar.launch

如果一切顺利的话,应该雷达已经开始转起来了 只用rostopic应该就可以查看话题了

rostopic list

应该能看到 /scan 的话题。

正在研究有关slam的软件,gmapping rtabmap 等等,但是当我在这些软件包中选择订阅 /scan 的话题时,出现了有关时间的错误

经过了好长一段时间的寻找,终于找到了问题。

大部分slam包,或者是使用雷达信息的软件,用的单位制度都是公制的,也就是说时间单位都是秒

但是在x4的雷达参数中有两个参数 time_increment scan_time 单位应该是 纳秒,这样的话,在那些软件包中就没有办法计算了,所以我们要在驱动包中做一点小小的修改

打开 /home/xuan/x4/src/ydlidar/src 中的ydlidar_node.cpp

找到这样一段

if(laser.doProcessSimple(scan, hardError )){sensor_msgs::LaserScan scan_msg;ros::Time start_scan_time;start_scan_time.sec = scan.system_time_stamp/1000000000ul;start_scan_time.nsec = scan.system_time_stamp%1000000000ul;scan_msg.header.stamp = start_scan_time;scan_msg.header.frame_id = frame_id;scan_msg.angle_min = scan.config.min_angle;scan_msg.angle_max = scan.config.max_angle;scan_msg.angle_increment = scan.config.ang_increment;scan_msg.scan_time = scan.config.scan_time;scan_msg.time_increment = scan.config.time_increment;scan_msg.range_min = scan.config.min_range;scan_msg.range_max = scan.config.max_range;scan_msg.ranges = scan.ranges;scan_msg.intensities =  scan.intensities;scan_pub.publish(scan_msg);}

修改成这样

if(laser.doProcessSimple(scan, hardError )){sensor_msgs::LaserScan scan_msg;ros::Time start_scan_time;start_scan_time.sec = scan.system_time_stamp/1000000000ul;start_scan_time.nsec = scan.system_time_stamp%1000000000ul;scan_msg.header.stamp = start_scan_time;scan_msg.header.frame_id = frame_id;scan_msg.angle_min = scan.config.min_angle;scan_msg.angle_max = scan.config.max_angle;scan_msg.angle_increment = scan.config.ang_increment;scan_msg.scan_time = scan.config.scan_time/1000000000ul;scan_msg.time_increment = scan.config.time_increment/1000000000ul;scan_msg.range_min = scan.config.min_range;scan_msg.range_max = scan.config.max_range;scan_msg.ranges = scan.ranges;scan_msg.intensities =  scan.intensities;scan_pub.publish(scan_msg);}

然后重新编译之后就可以正常被读取了。

X4雷达使用以及ros中时间问题的坑相关推荐

  1. 如何给定两个gps坐标 算出航向角_机器人开发如何配置ROS中的TF变换关系?

    当我们进行机器人开发时,常常需要面对TF坐标转换,本文以 Autolabor Pro1 与思岚激光雷达为例,介绍ROS TF的使用. Autolabor Pro1是什么? Autolabor Pro1 ...

  2. 一些关于ROS中move_base的理解

    move_base是ROS下关于机器人路径规划的中心枢纽.它通过订阅激光雷达.map地图.amcl的定位等数据,然后规划出全局和局部路径,再将路径转化为机器人的速度信息,最终实现机器人导航.这里又要盗 ...

  3. ROS中阶笔记(七):机器人SLAM与自主导航—SLAM功能包的使用

    ROS中阶笔记(七):机器人SLAM与自主导航-SLAM功能包的使用 文章目录 1 机器人必备条件 1.1 硬件要求 1.2 深度信息 1.2.1 激光雷达 1.2.2 kinect 1.3 里程计信 ...

  4. ROS中的TF坐标变换工具及实现、Rviz查看(十四)C++、python

    目录 TF坐标变换引言 概述 概念 坐标msg消息 简介 geometry_msgs/TransformStamped geometry_msgs/PointStamped 静态坐标变换 简介 C++ ...

  5. 在ros中使用 RPLIDAR_A1 激光雷达 8000点/秒 的配置方法

    下午拿到一个思岚科技的RPLIDAR_A1,具体版本型号是A1M8-R5. 直接在 ros 环境下搞起,配置与使用非常简单,但是仔细阅读了源码却发现一些需要注意的地方,在这里罗列下来. 1.安装 非常 ...

  6. Ubuntu16.04 在ROS中配置RealSence D435 并标定深度相机与rplidar外参

    Ubuntu16.04系统,在ROS中配置RealSence D435 ,并标定其与rplidar的外参 主要目的是为rplidar标定深度相机外参,为机器人导航的过程提供障碍物识别的功能,因此需要知 ...

  7. ROS中base_link, odom, fixed_frame, target_frame和虚拟大地图map的关系

    前面已经介绍了如何使用URDF建造机器人小车并显示在Rviz的仿真环境里面,但是小车是静止的.下面介绍如何让它在Rviz里面动起来,并理清URDF,TF 和 odom 的关系. 1. ROS中base ...

  8. 详解ROS中的TF使用

    个人博客:http://www.chenjianqu.com/ 原文链接:http://www.chenjianqu.com/show-107.html 之前写过一篇博文<ROS-坐标转换> ...

  9. ROS中阶笔记(六):机器人感知—机器语音

    ROS中阶笔记(六):机器人感知-机器语音 文章目录 1 语音识别理论 2 常用语音功能包 3 科大讯飞SDK 3.1 使用前提 3.2 语音听写 3.3 语音合成 3.4 智能语音助手 4 参考资料 ...

最新文章

  1. Delphi中的容器类(二)
  2. 希捷撤离 硬盘的那些风花雪月记忆
  3. 微服务实践分享(4)配置中心
  4. 对视频中的特征颜色物体(青色水杯)进行跟踪
  5. java 生成pdf 乱码_利用java处理fop导出pdf的中文乱码问题解决方案
  6. php 类的属性与方法的注意事项
  7. (转)DPDK内存管理 04 ---- rte_malloc内存管理
  8. win2008 用什么php,Win2008 Server配置PHP环境,win2008php
  9. 【中间件技术】第二部分 CORBA规范与中间件(3) 基于CORBA的开发过程
  10. 等保三级全称是什么?是什么意思?
  11. 智能硬件不止树莓派,八款优秀智能硬件开源项目推荐
  12. 35个优秀的电子商务网站设计案例
  13. html中重叠盒子之间的距离,div间距设置_div之间距离设置布局
  14. Selenium finds和find的耗时性能比对
  15. 在VMware上,ubuntu和windows之间如何复制文本、拖拽文件?
  16. 视频抠像边缘模拟真实光照AE/PR插件 Light Wrap Fantastic
  17. python创建多个文件夹合并_在python中如何将多个文件夹合并到一个文件夹中?
  18. class torch.optim.lr_scheduler.LambdaLR
  19. My Hundredth Page - 回文子串 - By Nicolas
  20. android歌词效果,Android仿酷狗动感歌词(支持翻译和音译歌词)显示效果

热门文章

  1. python中文名称_python中文名称
  2. 基于JAVA网上办公系统计算机毕业设计源码+数据库+lw文档+系统+部署
  3. gitlab搭建 docker-compose
  4. 腾讯微信惊天漏洞,利用手机号致帐号丢失无法找回!——论个人信息安全与防护
  5. BP算法与累积BP算法
  6. 第五章 Global and Detailed Placement [VLSL Physical Design 学习笔记 ]
  7. error LNK2019:unresolved external symbol
  8. 揭秘日本5G智慧杆案例!附国外多杆合一、智慧路灯杆体设计造型方案
  9. Semaphore 源码解读
  10. 高逼格的SQL写法:行行比较