ubuntu16.0 ROS(介绍EAI的YDLIDAR-X4激光雷达在ROS下使用方法)
YDLIDAR-X4激光雷达介绍
YDLIDAR X4激光雷达是深圳越登智能科技有限公司(YDLIDAR,这家公司属于EAI)研发的一款 360 度二维测距产品,本产品基于三角测距原理,并配以相关光学、电学、算法设计,实现高频高精度的距离测量,在测距的同时,机械结构 360 度旋转,不断获取角度信息,从而实现了 360 度扫描测距,输出扫描环境的点云数据。
由上图大家可知,该雷达其实很小巧,唯一不妥的地方感觉就是这个使用皮带传动:
0x01 下载编译ROS下驱动源码
从github下载ydlidar x4的ROS下驱动源码,该源码需要放在ros工作空间下的src目录下进行编译,下载命令如下:
git clone https://github.com/EAIBOT/ydlidar.git
博主在通过udev规则配置脚本时采用如下方法:
由于开发机器人的过程中,发现电脑每次开机,设备的窗口都会改变;如果每次都修改代码就有些麻烦,而且浪费时间。所以百度下了解决方法——>建立USB串口别名,创建udev规则。
一、查看USB端口信息
运行lsusb命令,然后拔掉你要建立别名的设备,再次运行lsusb,确定你设备的ID号:
二、新建规则
mkdir ~/arm
cd ~/arm
vim arm.rules
内容如下:
博主使用是是YDLIDAR X4激光雷达,所以设置别名ydlidar
# set the udev rule , make the device_port be fixed by rplidar
KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE:="0777", SYMLINK+="ydlidar"
参数介绍哦:
KERNEL 在内核里看到的设备名字,比如sd*表示任意SCSI磁盘设备
ATTRS{idVendor}“10c4” ; ATTRS{idProduct}“ea60”
这里的这两个参数与USB本身有关,改成上面你查到的设备ID。
MODE 设备文件的权限,采用8进制
SYMLINK 设备的别名
三、新建脚本文件
vim arm.sh
内容如下
#!/bin/bashsudo cp arm.rules /etc/udev/rules.d
echo " "
echo "Restarting udev"
echo ""
sudo service udev reload
sudo service udev restart
echo "finish "
四、运行脚本文件
sudo chmod -R 777 *
./arm.sh
1.出现下面的信息则说明OK了
Restarting udev
finish
2.给USB特定的别名与给予权限,不用每次使用都要给权限。
sudo chmod 777 /dev/tty*
3.拨插USB线,检查规则是否建立成功
ls /dev/rplidar
出现/dev/rplidar,则说明别名成功。
当下载完源码后,接下来就可以在ros的工作空间根目录下执行catkin_make来编译该源码软件包,当编译完成后记得source devel/setup.bash,然后就可以来配置udev规则了,以后就不用来看雷达挂载点是ttyUSB0还是ttyUSB1这些了,因为每次开机时usb设备的加载顺序是随机的,这样就导致挂载点也随机,为了保证我们的启动雷达的代码统一,因此就需要为该设备配置一个别名,该udev配置规则脚步放在ydlidar/startup目录下名字是initenv.sh,该脚本内容如下:
0x02 启动雷达测试
启动雷达有两个launch文件,一个lidar.launch是直接执行启动雷达进行扫描测距,另外一个是lidar_view.launch不仅可以启动雷达,还可以顺带启动rviz来将雷达数据可视化显示,下面来分别介绍这两种操作:
(1)使用lidar.launch启动雷达,执行命令如下:
roslaunch ydlidar lidar.launch
当执行该命令后会发现雷达顺时针转动起来,完整的操作日志如下:
当启动雷达后,查看发布的话题及其消息格式定义:
(2)使用lidar_view.launch来启动雷达并同时启动rviz进行雷达数据可视化显示:
roslaunch ydlidar lidar_view.launch
在终端中输入:ls /dev 可以查看到端口信息从下图中可以看到端口ydlidar
根据上图可知在雷达中也需要规定在ROS下的x,y,z方向,为了弄清楚x正方向就需要知道如下规定:
在ROS下坐标轴方向使用的是右手系,食指指向x轴正方向,中指指向y轴正方向,拇指指向的是z轴正方向。对于旋转的正负方向规定是:右手握拳拇指指向z轴正方向,其余四指弯曲的方向即旋转的正方向,即围绕z轴做逆时针旋转是角速度的正方向,顺时针旋转是角速度的负方向。
由此可以得知雷达的旋转方向与ROS规定的正向旋转是相反的,因此雷达扫描得到的原始数据也需要经过处理才行,现在这部分已经在ROS源码中经过处理了,因此现在雷达的坐标轴如下,在小车上安装时需要注意这个方向:
0x03 launch文件解析
首先来分析lidar.launch文件,里面的一些参数我们需要修改,因为这个launch文件是一个通用的启动文件,还可以启动YDLIDAR下的其他型号,具体的参数我们需要根据x4来做相应修改才行,下面是需要注意的一些参数:
(1)frame_id:设置当前雷达的坐标系名称
(2)angle_min和angle_max是设置雷达扫描的角度范围,这是一对很有用的参数。我们经常遇到以下情况,由于雷达在机器人底盘上的放置位置导致其并不能将360范围数据都拿来使用,经常只需要雷达的前180度的扫描数据:
下面开始开始测试这两个参数,首先我们将雷达放到一个纸箱子里,这样保证四面都可以检测到障碍:
当我们使用默认的参数(angle_min=-180,angle_max=180),然后使用roslaunch ydlidar lidar_view.launch来启动雷达和打开rviz查看数据,如下图所示:
然后测试将angle_min改为-90,angle_max改为90,在rviz中查看效果如下:
(3)配置x4雷达的测距范围,根据雷达的性能参数表得知,在室内环境下测距范围最小值0.12m,最大值10m,因此可以配置rang_min=0.12,range_max=10.0即可。
(4)对于测距频率sample_rate和扫描频率frequency两个参数不用修改,因为修改了也没用,因为在ROS驱动源码中已经将x4雷达的这两个参数给固定了,设置sample_rate=5和frequency=7,如果真的要想修改就需要修改源码了。
参考资料
[1].激光雷达YDLIDARX4 使用手册
[2].激光雷达YDLIDARX4 数据手册
[3].激光雷达YDLIDAR X4资料下载官网地址http://www.ydlidar.cn/cn/download
[4].sensor_msgs/LaserScan的消息格式定义http://docs.ros.org/api/sensor_msgs/html/msg/LaserScan.html
ubuntu16.0 ROS(介绍EAI的YDLIDAR-X4激光雷达在ROS下使用方法)相关推荐
- EAI ydlidar X4 ROS无法获取建立node,官方程序初始化失败
根据ydlidar_ros内步骤配置完成激光雷达,运行 $ roslaunch ydlidar_ros lidar.launch 激光雷达不转,且报错 ERROR: cannot launch nod ...
- 机器人开发--Apollo ROS介绍
机器人开发--Apollo ROS介绍 1 介绍 1.1 概述 1.2 历程 2 ROS的不足 大数据传输性能瓶颈 单中心的网络存在单点风险(ROS2为分布式避免该问题) 数据格式缺乏向后兼容 3 A ...
- 鸿蒙os2.0系统什么时候,鸿蒙OS 2.0beta什么时候发布 鸿蒙OS2.0功能介绍
鸿蒙OS 2.0beta什么时候发布呢?华为发布了面向全场景的分布式操作系统 HarmonyOS 2.0,宣布年底面向开发者发布智能手机 Beta 版本,下面就让小编给大家介绍一下. 鸿蒙OS 2.0 ...
- Android 7.0 Nougat介绍
Android 7.0 Nougat 1.多窗口支持 在 Android 7.0 中,我们为该平台引入了一个新的而且非常需要的多任务处理功能 - 多窗口支持. 现在,用户可以一次在屏幕上打开两个应用. ...
- 阅读书源最新2020在线导入_书源篇三及6.5.0版本介绍
书源篇三及6.5.0版本介绍 魔幻2020 魔幻的2020,开启不一样的生活状态,作为一名技术宅,不出门虽我愿,但看到空荡荡的街头,心中却有种难言的难过与害怕.我不向往繁华.但喜欢车马如龙,街灯繁华. ...
- WeihanLi.Npoi 1.7.0 更新介绍
WeihanLi.Npoi 1.7.0 更新介绍 Intro 昨天晚上发布了 WeihanLi.Npoi 1.7.0 版本,增加了 ColumnInputFormatter/ ColumnOutput ...
- Entity Framework Core 2.0 特性介绍和使用指南
前言 这是.Net Core 2.0生态生态介绍的最后一篇,EF一直是我喜欢的一个ORM框架,随着版本升级EF也发展到EF6.x,Entity Framework Core是一个支持跨平台的全新版本, ...
- ASP.NET Core 2.0 特性介绍和使用指南
ASP.NET Core 2.0 发布日期:2017年8月14日 ASP.NET团队宣布ASP.NET Core 2.0正式发布,发布Visual Studio 2017 15.3支持ASP.NET ...
- .NET Core 2.0 特性介绍和使用指南
前言 这一篇会比较长,介绍了.NET Core 2.0新特性.工具支持及系统生态,现状及未来计划,可以作为一门技术的概述来读,也可以作为学习路径.提纲来用. 对于.NET Core 2.0的发布介绍, ...
最新文章
- python中subplot是什么意思_python matplotlib中的subplot函数使用详解
- JAVA实现旋转数组的最小数字问题(《剑指offer》)
- MySQL计算在线时长(超过2分钟未上传不在计算范围)
- Maven系列二setting.xml 配置详解
- 浅谈:MyBatis-Plus的CRUD与乐观锁,分页插件,逻辑删除
- 如何在Kubernetes集群动态使用 NAS 持久卷 1
- Delphi之Exception获得错误信息
- oracle高级函数api,Oracle函数-高阶篇
- SmartQ 智器—公司介绍
- matlab求解线性规划问题的实例代码,matlab 求解线性规划问题
- JVM jclasslib使用
- iTween介绍和用法
- Error:java.lang.RuntimeException: Some file crunching failed, see logs for detail
- linux安装mysql deb_Ubuntu下通过deb的bundle文件安装MySQL
- 光耦合器 工作原理 作用 应用场合
- ARM架构与X86架构
- 可编译易用的模块化nf-HiPAC移植成功
- 蓝蓝算法第二期,T51
- 8 . STM32固件库介绍
- tensorflow中的eval的用法
热门文章
- 数字孪生技术为智慧城市的建设带来哪些帮助?
- 百度地图 行政区切换显示
- java SpringBoot+SpringCloud+mybatis b2b2c o2o电商平台 小程序商城 直播电商 直播带货 代跑腿 三级分销 短视频带货 电子商务 源码
- 【SpringCloud】04 网关springcloud gateway
- mysql查询姓名第二个字_下列哪条语句能够从学生表中查询出姓名的第二个字是“敏”的学生的信息( )。_学小易找答案...
- win8下硬盘安装linux,通用解决方案:使用grub4dos硬盘安装实现win7 win8和Ubuntu linux多系统...
- mapgis坡度分析_基于ArcGIS、MapGIS对岩溶石漠化与坡度的相关性分析
- openssh防火墙
- 新材料与我们有什么关系:盘点走进生活的新材料
- linux中read函数读取文件夹内文件,linux下read函数