Frame [/map] does not exist 以及mapping环节报错记录

本文讲述了在使用Ubuntu20.04和ROSNoetic进行多传感器融合课程时,遇到的建图和定位代码运行问题,涉及C++版本、tf2topic命名、rviz显示未知frame等,并提供了相应的解决方法。作者计划在设备升级后进一步深入研究并分享经验。
摘要由CSDN通过智能技术生成

在跑第四讲建图部分的时候,确实这一讲的作业没什么难度,就是单纯的调代码,自上次被恶心到摆烂了一周,今天实在是良心说不过去,赶紧学一学,,,

以下为正文:


版本:Ubuntu20.04 + noetic + proto 3.6.1

图1.建图环节流程图                                        图2.定位环节流程图

(图片来源自--深蓝学院多传感器融合课程--课件PPT-第四讲)

这一讲的任务主要是跑通该框架,但是由于定位环节代码中只给出了已知初始位姿的定位方法,所以还需要对matching进行修改和填补完成在任意时刻的定位(这一部分我就不放了,我打算第二遍学这个课程的时候再细究,欢迎持续关注(doge)),先说跑mapping代码时候遇到的问题。

问题1:error: ‘std::string_view’ has not been declared

只要提示类似的命名空间中缺少**成员这样类似的问题,大概率是C++的版本不够,需要去CMakeLists中进行修改,只需要将以下两行中的代码中的C++14(有些是C++11)调整为C++17

add_definitions(-std=c++17)
set(CMAKE_CXX_FLAGS "-std=c++17")

有时候会出现自己的电脑不匹配C++版本的报错,有时候是自己的版本不适配C++17,太旧了导致,有个博主提供了linux查看自己编译器支持的C++版本的办法。

问题2:For frame [/map]: Frame [/map] does not exist  && [ERROR]:No tramsform for odometry from "/map" to "map".

出现这个的问题,仍然与我们的ros版本有关,这里具体错误的贴图我就不放了,我的几次记录博客基本上都会再提一次这个问题,由于我们是Ubuntu20.04和ros-noetic版本,所以使用的tf变换方式是基于坐标变换  tf2  版本的,而tf2不支持带"/"的topic,所以要在代码中发布和订阅话题的cpp文件,以及对应的rviz话题中去掉topic中的"/",例如修改

nh.param<std::string>("/odom_topic", odom_topic, "/laser_odom");

nh.param<std::string>("odom_topic", odom_topic, "laser_odom");

注意,此处仅为修改示例,源码中可能有不同。ros和C++的新手宝宝要注意,修改的时候要修改的是话题,千万别把所有带"/"的代码都改了(比如文件路径,,,),要先看看错误是什么再改,不然容易越改越错。

问题3:rviz窗口中出现:unknow frame map

这个问题,应该是在tf变换中的代码出现了一些问题导致的(上次也有类似的问题,但是上次是warning,这次是ERROR),在我的电脑上运行完全不影响建图和轨迹,但是由于内存不够造,所以我的代码还是会跑到2/3就崩掉,导致只有初始位置的关键帧输出,map和scan数据保存不下来(我觉得应该就是因为保存全局地图的时候,给我卡没了,,)。所以这个问题的解决办法,目前我还没找到,但是既然不影响我运行(甚至命令窗口都没报错),那就是没什么大问题,我就当没错的来0.0。


目前只是作为记录,将课程过一遍,跑通代码就好,第二遍学习的时候我会更新一下设备(升级内存呜呜呜)然后结合理论,深入的研究和调试,并且分享和记录,欢迎大家一起学习!

  • 20
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值