您将如何在现有的 QT Creator GUI 项目中实现 ROS 发布者和订阅者?
How would you implement a ROS publisher and subscriber in an existing QT Creator GUI project?
我目前有一个用 QT Creator 编写的模拟器 GUI,可以模拟机器人的运动,我想将其与 ROS 集成,以便它可以实际控制机器人。
ROS发布者和订阅者节点如何写入QT Creator项目?
提前致谢!
嗯,你可以看看qt_ros包。
基本上,逻辑将在 gui 后面有一个 QThreaded 节点(Gui class 的私有成员)运行。它将负责处理所有 ROS 逻辑(订阅、发布、服务 server/Client...),然后使用适当的方法将该数据中继到父 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})
如果你想要一个更简洁的方法,你可以只 copy/paste 项目中名为 cmake 的文件夹中的 qt-ros.cmake.in,然后将其包含在你的项目中CMakeLists 如下:
include(cmake/qt-ros.cmake.in)
希望对你有帮助,至少是一个启动点!
干杯,
我目前有一个用 QT Creator 编写的模拟器 GUI,可以模拟机器人的运动,我想将其与 ROS 集成,以便它可以实际控制机器人。
ROS发布者和订阅者节点如何写入QT Creator项目?
提前致谢!
嗯,你可以看看qt_ros包。
基本上,逻辑将在 gui 后面有一个 QThreaded 节点(Gui class 的私有成员)运行。它将负责处理所有 ROS 逻辑(订阅、发布、服务 server/Client...),然后使用适当的方法将该数据中继到父 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})
如果你想要一个更简洁的方法,你可以只 copy/paste 项目中名为 cmake 的文件夹中的 qt-ros.cmake.in,然后将其包含在你的项目中CMakeLists 如下:
include(cmake/qt-ros.cmake.in)
希望对你有帮助,至少是一个启动点!
干杯,