我是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
如何添加这些库?
答案 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.bash
和your_workspace_home/devel/setup.bash
。
如果你想在QTCreator中构建(使用构建按钮),请确保在源环境中启动qtcreator。