背景介绍:老板需求:qt开发ui界面,实现与ros通讯。同伴A已经使用qt开发了部分功能,但是没有弄与ros通讯相关,与A沟通了解项目细节。当前主要任务:先实现ros与qt通讯,实现ros话题发布、接收
经验:专业英语一定要强,多看论文多看文档练习吧,由于英语的原因,看文档费劲然后耽误了很大的进度;遇到问题多搜
查资料了解到,一部分人使用插件Levi-Armstrong/ros_qtc_plugins
此方法适用与Ubuntu14和16,git的issue中提到18
作者提供的教程链接:GitHub - ros-industrial/ros_qtc_plugin: ROS Qt Creator Plug-in (https://ros-qtc-plugin.readthedocs.io)
尝试使用该教材,Snap Store下载了软件qt creator ros,不会使用该软件,也没实现想要的功能。
中间有踩很多坑,最后找到一个适用教程(中间细节没记录,省略踩坑过程了)
本人参考教程:qt_create/Tutorials/Qt App Templates - ROS Wiki
以这个教程为基础修改的代码。
该教程默认支持qt4,需要修改CMakeList.txt,删除qt4部分,改为支持qt5
cmake_minimum_required(VERSION 3.0.2)
project(robot)
find_package(catkin REQUIRED COMPONENTS
qt_build
roscpp
rospy
rosbag
)
include_directories(${catkin_INCLUDE_DIRS})
find_package(Qt5WebEngine REQUIRED)
find_package(Qt5WebEngineWidgets REQUIRED)
catkin_package(
CATKIN_DEPENDS roscpp rospy
)
#rosbuild_prepare_qt4(QtCore QtGui)
find_package(Qt5 COMPONENTS Core Widgets Gui REQUIRED)
qt5_add_resources(QT_RESOURCES_CPP ${QT_RESOURCES})
qt5_wrap_ui(QT_FORMS_HPP ${QT_FORMS})
qt5_wrap_cpp(QT_MOC_HPP ${QT_MOC})
qt5_wrap_ui(UI_HEADERS ui/widget.ui)
include_directories(${CMAKE_CURRENT_BINARY_DIR}) # 添加此行
include_directories(
${catkin_INCLUDE_DIRS}
)
add_executable(robot ${QT_SOURCES} ${QT_RESOURCES_CPP} ${QT_FORMS_HPP} ${QT_MOC_HPP})
target_link_libraries(robot PRIVATE
${catkin_LIBRARIES}
Qt5::Widgets
Qt5::WebEngineWidgets
Qt5::WebEngine
Qt5::WebChannel
)
install(TARGETS robot RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})
需要对照自己需要的包做相应的修改,里面的修改多半是chatgpt提供的,水一篇文章了,以后尽量边做边记录!