tf2 tutorial writing broadcaster -- compile error
Hi,
I'm following the tutorial at http://wiki.ros.org/tf2/Tutorials/Wri...
I copy-and-pasted the code, made changes to CMakeLists.txt, but I see this error when I catkin_make
:
CMakeFiles/turtle_tf2_broadcaster.dir/src/turtle_tf2_broadcaster.cpp.o: In function `poseCallback(boost::shared_ptr<turtlesim::Pose_<std::allocator<void> > const> const&)':
turtle_tf2_broadcaster.cpp:(.text+0x40): undefined reference to `tf2_ros::TransformBroadcaster::TransformBroadcaster()'
turtle_tf2_broadcaster.cpp:(.text+0x1d3): undefined reference to `tf2_ros::TransformBroadcaster::sendTransform(geometry_msgs::TransformStamped_<std::allocator<void> > const&)'
collect2: ld returned 1 exit status
I'm fairly sure I've followed each step correctly (and the Python version works for me). I checked /opt/ros/hydro/include/tf2_ros/transform_broadcaster.h
and sendTransform()
seems to be defined:
/** \brief Send a TransformStamped message
* The stamped data structure includes frame_id, and time, and parent_id already. */
void sendTransform(const geometry_msgs::TransformStamped & transform);
/** \brief Send a vector of TransformStamped messages
* The stamped data structure includes frame_id, and time, and parent_id already. */
void sendTransform(const std::vector<geometry_msgs::TransformStamped> & transforms);
Is there something else with the C++ version that I'm overlooking?
I'm using Hydro with 12.04.5.
Thanks!
EDIT with CMakeLists.txt and compile output:
CMakeList.txt:
make_minimum_required(VERSION 2.8.3)
project(learning_tf2)
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
tf2
turtlesim
)
## DEPENDS: system dependencies of this project that dependent projects also need
catkin_package(
# INCLUDE_DIRS include
# LIBRARIES learning_tf2
# CATKIN_DEPENDS roscpp rospy tf2 turtlesim
# DEPENDS system_lib
)
include_directories(
${catkin_INCLUDE_DIRS}
)
install(PROGRAMS
nodes/turtle_tf2_broadcaster.py
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)
install(FILES
start_demo.launch
# myfile2
DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
)
add_executable(turtle_tf2_broadcaster src/turtle_tf2_broadcaster.cpp)
target_link_libraries(turtle_tf2_broadcaster ${catkin_LIBRARIES})
catkin_make output:
$ catkin_make VERBOSE=1
Base path: /home/local/nitekrawler/catkin_ws
Source space: /home/local/nitekrawler/catkin_ws/src
Build space: /home/local/nitekrawler/catkin_ws/build
Devel space: /home/local/nitekrawler/catkin_ws/devel
Install space: /home/local/nitekrawler/catkin_ws/install
####
#### Running command: "cmake /home/local/nitekrawler/catkin_ws/src -DCATKIN_DEVEL_PREFIX=/home/local/nitekrawler/catkin_ws/devel -DCMAKE_INSTALL_PREFIX=/home/local/nitekrawler/catkin_ws/install" in "/home/local/nitekrawler/catkin_ws/build"
####
-- Using CATKIN_DEVEL_PREFIX: /home/local/nitekrawler/catkin_ws/devel
-- Using CMAKE_PREFIX_PATH: /home/local/nitekrawler/adn/AdnSensors/rigs/handheld-backyard-rig/devel;/home/local/nitekrawler/catkin_ws/devel;/opt/ros/hydro
-- This workspace overlays: /home/local/nitekrawler/adn/AdnSensors/rigs/handheld-backyard-rig/devel;/home/local/nitekrawler/catkin_ws/devel;/opt/ros/hydro
-- Using PYTHON_EXECUTABLE: /usr/bin/python
-- Python version: 2.7
-- Using Debian Python package layout
-- Using CATKIN_ENABLE_TESTING: ON
-- Call enable_testing()
-- Using CATKIN_TEST_RESULTS_DIR: /home/local/nitekrawler/catkin_ws/build/test_results
-- Found gtest sources under '/usr/src/gtest': gtests will be built
-- catkin 0.5.90
-- BUILD_SHARED_LIBS is on
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- ~~ traversing 3 packages in topological order:
-- ~~ - imu_test
-- ~~ - learning_tf
-- ~~ - learning_tf2
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- +++ processing catkin package: 'imu_test'
-- ==> add_subdirectory(imu_test)
-- +++ processing catkin package: 'learning_tf'
-- ==> add_subdirectory(learning_tf)
-- Using these message generators: gencpp;genlisp;genpy
-- +++ processing catkin package: 'learning_tf2'
-- ==> add_subdirectory(learning_tf2)
-- Using these message generators: gencpp;genlisp;genpy
-- Configuring done
-- Generating done
-- Build files have been written to: /home/local/nitekrawler/catkin_ws/build
####
#### Running command: "make VERBOSE=1 -j4 -l4" in "/home/local/nitekrawler/catkin_ws/build"
####
/usr/bin/cmake -H/home/local/nitekrawler/catkin_ws/src -B/home/local/nitekrawler/catkin_ws/build --check-build-system CMakeFiles/Makefile.cmake 0
/usr/bin/cmake ...
Please post your CMakeLists.txt contents, as well as your full console output of the compile. (VERBOSE=1 will give you more info as well.)
It looks like you're missing some link flags.