ROS编译报错 “error: ‘tf2_buffer_’ was not declared in this scope”的解决方法

写在前面

笔者测试的环境:
Ubuntu18.04, ROS-melodic

一、问题描述

自己在测试 amcl 程序的时候遇到如下问题(测试的amcl程序在Ubuntu16.04 ROS-kinetic上正常,但是拿到Ubuntu18.04, ROS-melodic进行测试,却出现了如下问题):

/home/ubuntu/***_ws/src/amcl_icp/amcl/src/amcl_node.cpp: In member function ‘tf2_ros::Buffer& AmclNode::TransformListenerWrapper::getBuffer()’:
/home/ubuntu/***_ws/src/amcl_icp/amcl/src/amcl_node.cpp:140:50: error: ‘tf2_buffer_’ was not declared in this scope
     inline tf2_ros::Buffer &getBuffer() { return tf2_buffer_; }

二、解决方法

经过查阅资料发现,ROS-melodic 版本中对该处进行了修改,在melodic中把 tf2_buffer_ 修改成了 tf2_buffer_ptr_所以需要修改amcl的程序。
需要修改2个位置:
位置1:

// 原来的程序:
inline tf2_ros::Buffer &getBuffer() { return tf2_buffer_; }
// 修改为:
inline std::shared_ptr<tf2_ros::Buffer> &getBuffer() {return tf2_buffer_ptr_;}

位置2:

// 原来的程序:
tf_->getBuffer().setTransform(tf_msg->transforms[ii], "rosbag_authority");
// 修改为:
tf_->getBuffer()->setTransform(tf_msg->transforms[ii], "rosbag_authority");

然后再次编译,就可以正常编译成功。

参考链接

[1] moriarty. Compile Error Melodic due to tf change #717 [EB/OL]. https://github.com/ros-planning/navigation/issues/717, 2018-05-15/2023-04-12.
[1] 向阳花开. ROS- 解决error “tf2_buffer_’ was not declared in this scope” [EB/OL]. https://blog.csdn.net/Draonly/article/details/111885161, 2020-12-29/2023-04-12.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值