[ROS学习笔记1]在RViz中查看激光雷达数据

本文分享了作者在轮式机器人定位与导航系统设计方面的实践经验,重点介绍了使用杉川激光雷达实现激光SLAM的过程。从搭建Ubuntu20.04和ROSnoetic环境开始,详细说明了创建ROS工作空间、编写源文件、配置环境变量及运行rviz等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说在前面

情况介绍:本人今年大四在读,老师给了“轮式机器人定位与导航系统设计”的毕设题目,研究内容主要是激光SLAM和自主导航。因为内容较多,难度较大,本人水平不足等诸多原因,在寒假的时候就开始在网上自学Ubuntu和ROS,主要是看胡春旭大佬的课,话题和服务的编程已经熟悉了一点,以后有时间再写,不求面面俱到,只希望我能顺利毕业吧。

为什么写这一系列博客?主要是为了防止学到后面忘了前面吧,毕竟还要学习的东西还是非常多的,希望能坚持学习坚持更新。

我的软件搭配

本人使用的是Ubuntu20.04和ROS noetic,最新版的系统和ROS确实让我吃了不少苦。

激光雷达介绍

我使用的是杉川的比较便宜的一款产品,具体型号我不太记得了,具体长这样。

实现方法

我主要是参考了这篇博客 ROS Kinetic下使用杉川Delta_2A激光雷达示例,大家也可以直接看他的文章。

创建工作空间

可以使用catkin_init_workspace的命令,我的方法如下。

mkdir -p ~/catkin_lidar/src
cd ~/catkin_lidar
catkin_make

上面命令的意思分别是在home路径下建立catkin_lidar文件夹,在文件夹中添加一个src的文件夹,然后进入catkin_lidar路径下进行编译。

编写源文件

src中包含一个名为delta_lidar的功能包和一个CMakeLists.txt,功能包中有launch文件夹、rviz文件夹、sdk文件夹、src文件夹和CMakeLists.txt和package.xml,分别说一下它们的作用。可以在我的资源主页下载src文件夹,按照上述方法自行编译。

  1. luanch文件夹中包含了一些.launch文件,用来启动一些节点和加载参数,相对于roscore的启动方式,终端数少更加简洁。
  2. rviz文件夹中有一个.rviz文件,用来配置rviz启动时的一些插件和配置的参数。例如Fixed Frame、点云数据的话题名称等等。
  3. sdk中包含的是一些头文件(这个我不太清楚,详细知识请查资料)。
  4. src文件夹中包含的是cpp格式的源文件,client.cpp和node.cpp,用于发布/scan的话题。
  5. CMakeLists.txt规定了一些编译和创建可执行程序的规则。
  6. pakage.xml包含了版本号,程序作者的邮箱和依赖的包如std_msgs、roscpp等

添加环境变量

写完程序之后,在终端下进入catkin_lidar路径编译,然后需要用如下命令添加环境变量。

catkin_make
source devel/setup.bash

这种方法只能对此终端生效,更常见的方法如下。

原作者使用的命令是echo"source/catkin_lidar/devel/setup.bash">>~/.bashrc,但是我使用这个命令会报错bash: echosource/catkin_lidar/devel/setup.bash: 没有那个文件或目录

在这里插入图片描述

后来只能手动添加环境变量,打开home目录下的.bashrc(注意:是.bashrc,不是bashrc),在最后一行添加source /home/your_name/catkin_lidar/devel/setup.bash,其中your_name需要替换成对应的计算机名。

然后使用source ~/.bashrc添加环境变量。可以在终端输入echo $ROS_PACKAGE_PATH查看环境变量,有catkin_lidar路径就没有问题。

在这里插入图片描述

连接雷达端口

在终端中输入sudo chmod 777 /dev/ttyUSB0连接雷达端口。

运行rviz

直接运行launch文件即可,命令:roslaunch delta_lidar view_delta_lidar

结果

这样就能在rviz中看到激光雷达的点云数据了,第一次跑起来激光雷达太高兴了,记录一下,理工男的快乐就是这么简单吧。

在这里插入图片描述

在这里插入图片描述

### 解决ROS环境中RVIZ激光雷达连接失败的方法 在处理ROS环境下的RVIZ激光雷达之间的连接问题时,有几个常见的原因可能导致此现象发生。以下是详细的排查和解决方案: #### 1. 验证传感器驱动程序正常工作 确保激光雷达设备的驱动已正确加载并能够发布`sensor_msgs/LaserScan`消息至指定话题。可以通过命令行工具验证这一点: ```bash rostopic echo /scan ``` 如果没有任何输出或者报错,则说明驱动存在问题[^1]。 #### 2. 检查网络配置 当使用远程计算机作为客户端来查看来自机器人上的RVIZ图像时,需确认两者之间存在稳定可靠的通信链路,并且防火墙设置允许必要的端口开放。此外,在启动文件中适当设置了主机名或IP地址参数也很重要[^3]。 #### 3. 设置正确的坐标系变换(TF) 为了使RVIZ能正确显示扫描数据,必须建立从激光雷达到全局参考框架(通常是odom或map)的有效TF树结构。这通常通过AMCL、gmapping或其他定位算法自动完成;但如果手动构建,则要特别注意tf广播器的工作状态以及各节点间的时间同步情况。 #### 4. 参数调整优化 有时默认参数可能不适合特定硬件组合,因此可以尝试修改某些关键属性以改善性能表现。例如增加队列长度(`queue_size`)、降低更新频率(`update_rate`)等都可以有效缓解资源争用带来的延迟影响[^2]。 #### 5. 使用rviz插件调试 利用官方提供的Debug Tools面板可以帮助快速定位潜在错误源。特别是针对订阅者/发布者的统计信息分析功能非常有用,它可以直接显示出哪些环节出现了瓶颈或是丢失的数据包数量异常增多等问题所在。 ```python import rospy from sensor_msgs.msg import LaserScan def scan_callback(msg): rospy.loginfo(f"Received {len(msg.ranges)} range measurements") if __name__ == '__main__': rospy.init_node('laser_scan_subscriber') sub = rospy.Subscriber('/scan', LaserScan, callback=scan_callback) rospy.spin() ``` 上述代码片段展示了如何编写一个简单的Python脚本来监听激光雷达发布的主题,并打印每次接收到的消息大小,有助于初步判断是否存在接收不到数据的情况。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值