您将如何在现有的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 创建器项目?
提前感谢!
好吧,你可以看看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)
希望有帮助,至少是一个启动点!
干杯
相关文章:
- C++(和 ROS) - 包含与前向声明引用,设置默认值和类型定义
- 如何通过ROS将realsense数据传输到其他设备
- 如何使用realsense摄像头调试ROS错误消息
- 如何使用 ROS 从 yaml 文件中读取带有元组的数组?
- ROS/C++:无法在 eclipse 中修复未解析的包含
- ROS:谷歌制图师/地图
- 如何在ROS中使用PCL可视化动力学数据的表面法线
- ROS 订阅回调 - 使用 boost::绑定成员函数
- ROS CPP 相当于 Python subprocess.call() 和 shell=True
- 使用 Python、ROS 和 C++ 进行日志记录
- C++11:除非发布者休眠,否则发布者/使用者模式不会完成
- ROS:在nodehandle.subscribe中使用lambda作为回调
- 在单个 Docker 容器中开发 ROS 节点?
- 在ROS中,C++和Python都是必需的吗?
- 如何消除ROS打开CV中的内存不足错误?
- 您将如何在现有的QT Creator GUI项目中实现ROS发布者和订阅者?
- ROS中未定义的参考误差到OpenCV图像转换器
- 创建并编译基类以在其他 C++ 项目 (ROS) 中使用
- 将 JPG 编码数组从 ROS sensor_msgs/压缩图像保存到 roscpp 中的文件
- 订阅者和发布者在 ROS 中的一个文件中