ubuntu22.04+ROS2 humble+Qt5.12.9+QtCreator11.0环境下,ROS搭配Qt进行GUI界面开发配置过程
1、下载QtCreator11.0和配置ROSProjectManager,如果Ubuntu上有其他版本的QtCreator也没关系,直接进入QtCreator11.0/bin下在终端输入命令./qtcreator
2、成功运行QtCreator11.0之后配置好ROSProjectManager具体配置过程直接百度。 3、新建ROS Workspace
点击选择,然后选择路径,注意提前在工作空间下创建src文件夹
重点是选Colcon,不然会编译不成功。点击下一步
点击完成。
鼠标选中src,选择添加新文件
点击选择,这时你会发现选择了Ros package但是src下仍旧没有文件,这可能是因为我安装了两个QtCreator可能有冲突,也可能是我没配置好相关环境,我们可以通过其他办法解决。点击底部菜单栏的Terminal,如图:
进入ROS工作空间文件夹,输入colcon build编译一下,然后输入cd src进入src文件再输入命令ros2 pkg create --build-type ament_cmake <package_name>创建包,这就和在VScode上创建功能包的步骤一样了。创建好功能包后配置CMakeLists.txt文件这是连接QtGUI组件和ROS2的关键,首先打开CMakeLists.txt文件,加入一些内容,完整的一个DEMO如下
这里注意自己的Qt版本。重点就是find_package(Qt5 REQUIRED COMPONENTS Widgets) 和target_link_libraries(ros_qtGUI Qt5::Widgets),就是这两句把ROS和Qt的GUI组件联系起来。
cmake_minimum_required(VERSION 3.8)
project(cpp_gui_test_01)
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
add_compile_options(-Wall -Wextra -Wpedantic)
endif()
# find dependencies
find_package(ament_cmake REQUIRED)
# uncomment the following section in order to fill in
# further dependencies manually.
# find_package(<dependency> REQUIRED)
if(BUILD_TESTING)
find_package(ament_lint_auto REQUIRED)
# the following line skips the linter which checks for copyrights
# comment the line when a copyright and license is added to all source files
set(ament_cmake_copyright_FOUND TRUE)
# the following line skips cpplint (only works in a git repo)
# comment the line when this package is in a git repo and when
# a copyright and license is added to all source files
set(ament_cmake_cpplint_FOUND TRUE)
ament_lint_auto_find_test_dependencies()
endif()
find_package(rclcpp REQUIRED)
find_package(moveit_ros_planning_interface REQUIRED)
find_package(moveit_visual_tools REQUIRED)
find_package(Qt5 REQUIRED COMPONENTS Widgets)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
add_executable(ros_qtGUI
src/main.cpp
src/ros_qtgui.cpp
src/ros_qtgui.h
src/ros_qtgui.ui
)
target_include_directories(ros_qtGUI
PUBLIC include)
ament_target_dependencies(ros_qtGUI
"moveit_ros_planning_interface"
"rclcpp"
"moveit_visual_tools")
target_link_libraries(ros_qtGUI Qt5::Widgets)
install(TARGETS ros_qtGUI
DESTINATION lib/${PROJECT_NAME})
ament_package()
到此CMakeLists.txt基本配置完成,package.xml文件就和VScode中的配置方法一样了,比加rclcpp这些都一样。 4、4、接下来就是往刚刚配置好的ros功能包中添加Qt GUI组件 (1)选中包下的src文件选择添加新文件
(2)选择Qt->Qt设计器界面类
(3)选择界面模板,看自己需求选就行
(4)点击下一步,然后就可以看见src文件夹下多出的
(5)再次选中src文件夹,同样添加新文件