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

How would you implement a ROS publisher and subscriber in an existing QT Creator GUI project?

本文关键字:发布者 ROS 实现 项目 GUI Creator QT      更新时间:2023-10-16

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

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

提前感谢!

好吧,你可以看看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)

希望有帮助,至少是一个启动点!

干杯