IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> X4雷达使用以及ros中时间问题的坑 -> 正文阅读

[人工智能]X4雷达使用以及ros中时间问题的坑

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);
        }  

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

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-01-24 10:50:21  更:2022-01-24 10:54:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 21:50:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码