我目前有一个用QT Creator编写的模拟器GUI模拟机器人的动作,我想与ROS集成,以便它可以实际控制机器人。
如何将ROS发布者和订阅者节点写入QT Creator项目?
提前致谢!
答案 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)
希望有帮助,至少是一个创业点!
干杯,