‘tf2_ros::TransformListener::TransformListener(tf2::BufferCore&, ros::NodeHandle const&, bool)’未定义..

解决安装gmapping相关包后,编译工作空间时遇到的问题:

‘tf2_ros::TransformListener::TransformListener(tf2::BufferCore&, ros::NodeHandle const&, bool)’未定义的引用

问题背景

Ubuntu18.04环境下melodic安装gmapping

按照https://www.cnblogs.com/darklights/p/10552559.html的步骤进行安装,编译工作空间时出现这一报错。

该博客的gmapping安装步骤为

1.先安装依赖库

sudo apt-get install libsdl1.2-dev
sudo apt install libsdl-image1.2-dev

2.进入工作空间

cd ~/catkin_ws/src/

3.git clone以下源代码编译安装:(一定要全部下载,否则会依赖包报错)

git clone https://github.com/ros-perception/openslam_gmapping.git
git clone https://github.com/ros-perception/slam_gmapping.git
git clone https://github.com/ros-planning/navigation.git
git clone https://github.com/ros/geometry2.git
git clone https://github.com/ros-planning/navigation_msgs.git

4.编译安装

cd ..
catkin_make

问题解决

问题出在上述步骤中的第三步“git clone以下源代码编译安装”。由于github代码管理上存在版本问题,git clone默认下载的不一定是和我们ROS系统一致的版本(melodic)。直接执行第三步中的语句,会导致navigation和geometry2包下载的是noetic版本。推荐以下两种解决方案。

方案1

git clone -b [ROS版本] https://…

git clone -b melodic https://github.com/ros-perception/openslam_gmapping.git
git clone -b melodic https://github.com/ros-perception/slam_gmapping.git
git clone -b melodic https://github.com/ros-planning/navigation.git
git clone -b melodic https://github.com/ros/geometry2.git
git clone -b melodic https://github.com/ros-planning/navigation_msgs.git

方案2

直接进入上述5个网址,到网页中下载ZIP压缩包,然后再解压。

比如,进入https://github.com/ros/geometry2,初始时显示的是noetic版本

‘tf2_ros::TransformListener::TransformListener(tf2::BufferCore&, ros::NodeHandle const&, bool)’未定义.._第1张图片

点击下三角弹出下拉菜单,选择我们需要的melodic版本
‘tf2_ros::TransformListener::TransformListener(tf2::BufferCore&, ros::NodeHandle const&, bool)’未定义.._第2张图片
下载ZIP压缩包
‘tf2_ros::TransformListener::TransformListener(tf2::BufferCore&, ros::NodeHandle const&, bool)’未定义.._第3张图片

解压后将各个文件夹的名称修改为对应包名,复制并粘贴到工作空间的./src目录下即可
‘tf2_ros::TransformListener::TransformListener(tf2::BufferCore&, ros::NodeHandle const&, bool)’未定义.._第4张图片

cd到工作空间,重新catkin_make,错误解决

你可能感兴趣的:(ROS问题解决,ubuntu,git)