Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在现有的QT Creator GUI项目中实现ROS发布者和订阅者?_C++_Qt_Ros - Fatal编程技术网

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

C++ 如何在现有的QT Creator GUI项目中实现ROS发布者和订阅者?,c++,qt,ros,C++,Qt,Ros,目前,我有一个用QT Creator编写的模拟器GUI,它模拟机器人的运动,我想将其与ROS集成,以便它能够实际控制机器人 如何将ROS发布者和订阅者节点写入QT Creator项目 提前谢谢 好吧,你可以看看包装 基本上,逻辑是在Gui后面运行一个QThread节点(Gui类的私有成员)。它将负责处理所有ROS逻辑(订阅、发布、服务服务器/客户端…),然后使用适当的方法将该数据中继到父Qt Gui 对于ROS项目中的Qt,最简单的方法将取决于Qt构建包和您的CMakelists,下面是一个使用

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

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


提前谢谢

好吧,你可以看看包装

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

对于ROS项目中的Qt,最简单的方法将取决于Qt构建包和您的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})
如果您想要一种更简洁的方式,您只需在项目中的名为cmake的文件夹中复制/粘贴,然后将其包括在CmakeList中,如下所示:

include(cmake/qt-ros.cmake.in)
希望这有帮助,至少是一个启动点


干杯,

非常感谢Vtik,您的建议非常有用!