ubuntu16.0 ROS(介绍EAI的YDLIDAR-X4激光雷达在ROS下使用方法)

2023-05-16

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/bash
 
sudo 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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ubuntu16.0 ROS(介绍EAI的YDLIDAR-X4激光雷达在ROS下使用方法) 的相关文章

随机推荐

  • ROS2学习笔记(十一)-- ROS2 bag数据记录与回放

    简介 xff1a ROS2提供了ros2 bag命令 xff0c 可以记录指定主题的数据到文件中 xff0c 也可以将记录下的内容再发布出来 xff0c 相当于是数据的回放 xff0c 除了通过命令行的方式实现数据记录以外 xff0c 也可
  • Altium Designer 10 导出文件(PDF,gerber,BOM)

    作者 xff1a 卢老师 华清远见嵌入式学院讲师 5 导出原理图文档 GERBER 文件 xff0c BOM对于导出 PDF 文档 xff0c 多人分析时 xff0c 不能保证所有的电脑都安装有 AD10 软件 xff0c 这个也很有必要
  • 纯C++的Socket访问Http封装类

    纯C 43 43 的Socket访问Http封装类 1 项目中要使用c 43 43 43 43 来访问Web服务器 xff0c 从网上找了个C 43 43 的封装类 xff0c 其中调用了MFC xff0c 在VC2005上用能用 xff0
  • 一个C++解析HTML的库

    HTTP协议使用广泛 xff0c 相应的 xff0c C 43 43 在这块需求也开始增加 一个好的解析库可以达到事半功倍的效果 xff0c 在此贴出我的解析库的代码 xff0c 方便新手朋友们使用 hHttpParse h ifndef
  • Intel Realsense D435i SDK Install

    Intel Realsense D435i 0 引言1 参考2 Install3 Other 0 引言 自己买的还没到 xff0c 借的同学 xff0c 生怕给他搞坏了 1 参考 ref0 官方giahubref1 官方Installref
  • OBVP问题推导

    OBVP问题推导 0 引言1 推导2 code 0 引言 记录一下 时间紧张 xff0c 不整理了 xff0c 直接上草稿纸 一元四次方程求解参考博客 1 推导 2 code 代码完全按照推导书写 xff0c 包括变量的命令 span cl
  • CMakeLists中的add_definitions()函数

    CMakeLists中的add definitions函数 0 引言1 add definitions 2 应用 0 引言 其实这个函数在安装一些库的时候 xff0c 它的CMakeLists里面就有这样的函数 典型的就是opencv了 o
  • Intel Realsense D435i&L515 驱动安装

    Intel Realsense D435i amp L515 驱动安装 0 引言1 D435i amp L515固件更新1 1 D435i固件更新1 2 L515固件更新 2 Intel Realsense驱动安装3 ROS Wrapper
  • 位置编码Positional Encoding

    位置编码Positional Encoding 1 Transformers中的PE2 什么是Transformer位置编码2 1 表格型2 2 相对位置的关系 函数型 3 为什么可以表示相对距离 xff1f 4 其他参考 内容全来自于网络
  • vscode 调试 Python 代码

    vscode 调试 Python 代码 0 引言1 插件2 环境布置3 parser解析 0 引言 参考0参考1 1 插件 官方的python插件代码助手 xff0c 自动补全 xff1a 解释器选择 xff0c 在窗口右下角选择解释器 x
  • OpenCV 相机转换为 OpenGL 相机

    OpenCV 相机转换为 OpenGL 相机 0 引言1 预备知识和概述2 资源3 OpenCV和OpenGL中的图像坐标系统3 1 OpenCV H Z和OpenGL中的主轴3 2 齐次坐标和OpenGL中的归一化设备坐标 4 OpenC
  • 两轮差速小车循线控制原理分析

    硬件资料设定 xff1a 小车驱动来自于两个相同的电机 xff0c 转向依靠两轮差速实现 xff0c 小车前后左右安装超声波传感器 xff0c 前后各一个 xff0c 左右各两个 xff1b 功能目标 xff1a 假设小车左侧有墙壁 xff
  • ch06-Pytorch的正则化与归一化

    ch06 Pytorch的正则化与归一化 0 引言1 weight decay 和 dropout1 1 Regularization1 2 Dropout 2 Normalization2 1 Batch Normalization2 2
  • ch07-Pytorch的训练技巧

    ch07 Pytorch的训练技巧 0 引言1 模型保存与加载1 1 序列化与反序列化1 2 PyTorch 中的模型保存与加载1 3 模型的断点续训练 2 模型 Finetune2 1 Transfer Learning amp Mode
  • opencv-contrib-Python编译module 'cv2.cv2' has no attribute 'xfeatures2d'

    opencv contrib Python编译module 39 cv2 cv2 39 has no attribute 39 xfeatures2d 39 引言解决步骤一解决步骤二 引言 opencv contrib Python编译出现
  • find_package()函数

    find package函数 引言1 find package用法2 find package原理3 A required library with LAPACK API not found 错误解决4 添加findpackage查询路径
  • py安装文件时报错usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]

    py安装文件时报错usage setup py global opts cmd1 cmd1 opts cmd2 cmd2 opts 引言solved 引言 报错 xff1a python setup py fastentrypoints u
  • VScode单步调试

    VScode配置 0 快捷键1 安装clang2 VScodeDebug3 Cmake支持gdb调试的方法 0 快捷键 稍大工程在vscode下的调试参考该博客 Ctrl 43 打开默认终端 Ctrl 43 Shift 43 新建新的终端
  • 串口通信简介

    串口通信 串口通信是一种串行异步通信 xff0c 通信双方以字符帧作为数据传输单位 xff0c 字符帧按位依次传输 xff0c 每个位占固定的时间长度 两个字符帧之间的传输时间间隔可以是任意的 xff0c 即传输完一个字符帧之后 xff0c
  • ubuntu16.0 ROS(介绍EAI的YDLIDAR-X4激光雷达在ROS下使用方法)

    YDLIDAR X4激光雷达介绍 YDLIDAR X4激光雷达是深圳越登智能科技有限公司 xff08 YDLIDAR xff0c 这家公司属于EAI xff09 研发的一款 360 度二维测距产品 xff0c 本产品基于三角测距原理 xff