使用Qt Creator读取rosbag文件时出错

时间:2017-08-10 06:31:15

标签: c++ qt qt-creator ros

我是Qt Creator和C ++的新手,我想使用Qt Creator创建一个GUI来显示从rosbag提供的数据。但我有一个问题是将rosbag导入Qt。我测试了Rosbag reader in qtcreator给出的代码,但得到错误:

error: cannot find -ltf2_ros
error: cannot find -lrospack
error: cannot find -lroslib
error: cannot find -lroscpp
error: cannot find -lrosconsole_bridge
error: cannot find -lrosbag_storage
error: cannot find -lrosbag

如何添加这些库?

1 个答案:

答案 0 :(得分:1)

我认为你会对ROS答案网站有更多相关的回复。但我可以开始回答你的问题了。

开始使用ROS时要做的第一件事就是遵循以下教程:http://wiki.ros.org/ROS/Tutorials(特别是3,4和11)。

您可以检查库是否安装在以下文件夹/ opt / ros / kinetic / lib /中(如果您使用的是ros-kinetic,这是ubuntu 16.04的默认值)。

然后,当你开发一个ROS节点时,不要使用Qmake,使用catkin和cmake。

使用catkin和QT的最小CMake将如下所示:

cmake_minimum_required(VERSION 2.8.12)
project(librosqt)

find_package(catkin REQUIRED roscpp)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
find_package(Qt5Core)

catkin_package(
  INCLUDE_DIRS include
  LIBRARIES librosqt
  CATKIN_DEPENDS roscpp
)

include_directories(include ${Qt5Core_INCLUDE_DIRS} ${catkin_INCLUDE_DIRS})


add_library(librosqt src/QRosCallBackQueue.cpp include/librosqt/QRosCallBackQueue.h)

add_executable(test_rosqt_node test/main.cpp test/TestObject.cpp)

target_link_libraries(test_rosqt_node 
   librosqt
   ${catkin_LIBRARIES} Qt5::Core
)

install(TARGETS librosqt
  ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
  LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
  RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

install(DIRECTORY include/${PROJECT_NAME}/
  DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}
  FILES_MATCHING PATTERN "*.h"
  PATTERN ".svn" EXCLUDE
)

然后,如果你使用catkin。您将拥有一个package.xml,您将在其中列出所有依赖项(QT,tf2等...)。然后在构建ros工作区之前,您可以使用rodeps install,此工具将安装所有库。 (参见文档here)。

另一个需要注意的重要事项是:不要忘记来源 !!!! 在构建节点之前,您必须获取以下文件: /opt/ros/kinetic|lunar/setup.bashyour_workspace_home/devel/setup.bash

如果你想在QTCreator中构建(使用构建按钮),请确保在源环境中启动qtcreator。