您将如何在现有QT Creator GUI项目中实现ROS发布者和订阅者?

时间:2017-07-07 03:19:46

标签: c++ qt ros

我目前有一个用QT Creator编写的模拟器GUI模拟机器人的动作,我想与ROS集成,以便它可以实际控制机器人。

如何将ROS发布者和订阅者节点写入QT Creator项目?

提前致谢!

1 个答案:

答案 0 :(得分:0)

好的,您可以查看qt_ros包。

基本上,逻辑将有一个QThreaded节点(Gui类的私有成员)在gui后面运行。它将负责处理所有ROS逻辑(订阅,发布,服务服务器/客户端......),然后使用适当的方法将该数据中继到父Qt Gui。

为了在ROS项目中集成Qt,最简单的方法是依赖于qt-build软件包,在你的CMakelists中,这里是一个简短的设置,用于创建一个带有Gui的节点:

rosbuild_prepare_qt4(QtCore QtGui QtXml) # Add the appropriate components to the component list here

# Sections

file(GLOB QT_FORMS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ui/*.ui)
file(GLOB QT_RESOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.qrc)
file(GLOB_RECURSE QT_MOC RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}     FOLLOW_SYMLINKS include/*.h include/*.hpp include/msg-pack-include/*.h)


QT4_ADD_RESOURCES(QT_RESOURCES_CPP ${QT_RESOURCES})
QT4_WRAP_UI(QT_FORMS_HPP ${QT_FORMS})
QT4_WRAP_CPP(QT_MOC_HPP ${QT_MOC})

# Sources

file(GLOB_RECURSE QT_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} FOLLOW_SYMLINKS src/*.cpp)

# Binaries

add_executable(qt_gui_node ${QT_MOC_HPP} ${QT_SOURCES} ${QT_RESOURCES_CPP} ${QT_FORMS_HPP})
target_link_libraries(qt_gui_node ${QT_LIBRARIES} ${catkin_LIBRARIES})

如果您想要更简洁的方法,只需将qt-ros.cmake.in复制/粘贴到项目中名为 cmake 的文件夹中,然后将其包含在CMakeLists中,如下所示:

include(cmake/qt-ros.cmake.in)

希望有帮助,至少是一个创业点!

干杯,