小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
使用SLAMTOOLBOX算法建图,RVIZ2无法正常地动态更新地图并建图
-
一、软硬件平台:
本机使用的Linux版本是Ubuntu 22.04;所安装的ros版本为ROS2 humble版本;ESP32作为小车底盘;树莓派4B有线连接雷达用于驱动雷达;通过将电脑Ubuntu虚拟机、树莓派、ESP32置于同一网络下实现总体控制;电脑虚拟机端运行SLAMTOOLBOX建图算法。
二、背景:
在跟着实物教程,想要依靠自己所做的实物去仿照教程以实现建图效果。使用的是亚博智能的YDLidar X3 激光雷达,驱动程序使用的是教程中提供的EAI-X2驱动程序,经实验,跟随教程使用的EAI-X2驱动程序可以正常驱动雷达并在RVIZ2中实时显示激光探测点,即如上图红色点所示。
三、问题描述:
跟着FishBot实物教程到SLAMTOOLBOX建图这一步骤时无法达到预期建图效果。
启动slamtoolbox后,rviz2仅会突然显现出以下这一帧地图画面并始终为这个画面,地图不会不断更新
RVIZ2报错如下:
终端中的该错误信息如下(这里提取的是我之前问AI所产生的一个文本,与上方图片报错的时间戳上有细微差别,但是是同种报错):[ERROR] [1717785687.160704905] [rviz2]: Vertex Program:rviz/glsl120/indexed_8bit_image.vert Fragment Program:rviz/glsl120/indexed_8bit_image.frag GLSL link result : active samplers with a different type refer to the same texture image unit
四、尝试过的解决办法:
① 尝试过删除工作空间,重新构建整个工程,问题依旧如此;
② 尝试过在电脑虚拟机及树莓派上分别运行SLAMTOOLBOX建图算法,问题依旧没有解决,报错依旧如此;
③ 尝试过在这个状态下开启键盘结点,控制小车运动,发现通过键盘结点发出移动指令时,现实中的小车能够响应,但是RVIZ2中的小车模型没有任何变化,为RVIZ2添加TF、Odemetry后发现无任何变化;
④ 在跟随实物制作教程时,发现了这一行代码:
"rotate_wheel= fishbot_description.rotate_wheel:main";但是实物制作过程中貌似没有编辑过此py文件,在思考是否有可能是这里出了问题;
④ 尝试过在网上搜索此报错,目前认为可能是第二行报错的原因,暂无解决结果。搜索图中发现其他人也遇到了类似的问题,但是尚未被解决,提问链接为:
https://fishros.org.cn/forum/topic/2373/跟着鱼哥的步骤建图-但打开rviz2后建图就卡着不动了-只生成了一小点图-rviz2还报错了
https://stackoverflow.com/questions/77907899/error-while-visualizing-map-from-slam-toolbox-on-rviz -
从您描述的情况来看,您在使用ROS 2 Humble版本和Ubuntu 22.04操作系统,并通过SLAM Toolbox进行建图时遇到了问题。RViz2只显示了一帧图像,并没有进行后续的动态更新。这通常意味着SLAM Toolbox可能没有正确地接收到或处理传感器数据,或者RViz2的配置存在问题。
这里有几个可能的解决方案供您尝试:
1. 检查传感器数据
确保您的传感器(如激光雷达)正在正常工作,并且数据正在被ROS 2节点正确发布。您可以使用ros2 topic list
和ros2 topic echo
命令来检查话题列表和实时数据流。2. 检查TF变换
SLAM Toolbox通常需要正确的TF(Transform)变换来将传感器数据从传感器坐标系转换到地图坐标系。如果TF变换没有正确设置,那么RViz2可能无法正确显示地图。您可以尝试使用ros2 run tf2_ros static_transform_publisher
来发布一个静态的TF变换,或者检查您的机器人是否已经发布了必要的TF变换。3. 检查RViz2配置
确保您的RViz2配置正确,包括Fixed Frame设置为正确的坐标系(通常是map
),并且已经添加了必要的显示项(如LaserScan或PointCloud2)。您还可以尝试重置RViz2的配置,或者参考教程中的配置进行对照检查。4. 检查SLAM Toolbox配置
确保SLAM Toolbox的配置文件正确无误,包括传感器参数、地图分辨率等。您可以参考SLAM Toolbox的文档或教程进行配置检查。5. 查看日志输出
查看ROS 2的日志输出,可能会发现有关SLAM Toolbox或RViz2的错误或警告信息。您可以使用ros2 launch
或ros2 run
命令的--screen
选项将日志输出到终端,或者使用ros2 bag record
和ros2 bag play
命令记录和分析数据。6. 尝试重新启动
有时,简单地重新启动ROS 2节点、RViz2或整个系统可以解决一些临时性的问题。如果上述方法都不能解决问题,您可能需要更详细地检查您的系统配置和代码实现,或者寻求社区的帮助。在ROS 2的官方论坛、GitHub仓库或相关社区中,可能有其他用户遇到了类似的问题,并分享了解决方案。
最后,关于您提到的RViz2报错信息,它涉及到渲染API异常和无效的父窗口句柄。这可能是由于RViz2的配置问题或与其他软件的冲突导致的。您可以尝试更新或重新安装RViz2和相关依赖库,或者查看RViz2的文档和社区支持以获取更多帮助。
以上为生成回答,仅供参考~