ubuntu22.04+ROS2 humble+Qt5.12.9+QtCreator11.0环境下,ROS搭配Qt进行GUI界面开发配置过程
·
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文件夹,同样添加新文件


点击下一步,这就创建好了main函数了。在main.cpp中添加代码

到此,代码文件配置完毕,点击编译或者构建及运行

成功运行之后你会发现没有界面出现,这是因为我们是通过手动修改CMakeLists.txt文件去配置ROS及引入Qt组件的,解决办法就是在终端先Source一下让我们刚刚生成的可执行文件加入到环境中,然后就是输入命令ros2 run cpp_gui_test_01 ros_qtGUI运行我们的程序

到此大功告成。
更多推荐

所有评论(0)