在 Ubuntu 22.04 ROS2 Humble 环境下设计图形化交互界面有多种选择从快速搭建原型到深度定制应用。以下是几种主流方法及其具体安装和使用步骤。1. rqt – ROS2 官方图形化工具框架rqt 是基于 Qt 的插件化 GUI 框架允许您通过拖拽插件快速构建界面也支持开发自定义插件。安装sudoaptupdatesudoaptinstallros-humble-rqt*# 安装所有常用 rqt 插件使用启动 rqtsource/opt/ros/humble/setup.bash rqt加载插件通过菜单栏Plugins选择所需插件如话题监视、参数动态配置等。开发自定义插件创建 ROS2 包Pythonros2 pkg create my_rqt_plugin --build-type ament_python--dependenciesrqt_gui rqt_gui_py编写插件类继承rqt_gui_py.Plugin并实现setup方法。在setup.py中添加entry_points例如entry_points{console_scripts:[my_rqt_plugin my_rqt_plugin.my_module:main,],}编译并运行colcon build --packages-select my_rqt_pluginsourceinstall/setup.bash rqt --force-discover# 重新扫描插件之后在 Plugins 菜单中即可找到您的插件。2. RViz2 – 3D 可视化工具RViz2 是 ROS2 的 3D 可视化工具主要用于显示机器人模型、传感器数据、地图等。您可以通过配置文件定制界面也可以开发自己的显示插件。安装sudoaptinstallros-humble-rviz2使用启动 RViz2source/opt/ros/humble/setup.bash rviz2加载显示项点击左下角Add按钮选择要显示的数据类型如 RobotModel、LaserScan 等。保存配置通过File - Save Config As保存.rviz文件下次可直接加载。开发自定义显示插件需要 C 开发参考 ROS2 RViz 插件教程。3. Foxglove Studio – 现代跨平台可视化工具Foxglove Studio 是一款功能强大的可视化工具支持 ROS2 桥接界面现代支持布局定制、实时数据回放、扩展开发等。安装AppImage 方式推荐免安装从 Foxglove 官网 下载 Linux AppImage。赋予执行权限并运行chmodx Foxglove-Studio-*.AppImage ./Foxglove-Studio-*.AppImage通过 apt 安装Ubuntu 22.04 可用sudoaptinstall-ysoftware-properties-commonsudoadd-apt-repository ppa:foxglove/studiosudoaptupdatesudoaptinstallfoxglove-studio使用启动 Foxglove Studio。连接 ROS2确保 ROS2 环境已 sourcesource /opt/ros/humble/setup.bash。在 Foxglove 中点击 “Open connection”选择 “Rosbridge” 或 “ROS2”。如果选择 Rosbridge需先在终端启动 rosbridgeros2 run rosbridge_server rosbridge_websocket然后在 Foxglove 中输入ws://localhost:9090连接。添加面板通过左侧面板库拖拽各种面板如 3D、Plot、Image 等并订阅相应话题。保存布局可将布局保存为 JSON 文件方便复用。4. Qt ROS2C – 自定义 GUI 应用如果您需要完全定制化的界面可以使用 Qt5/Qt6 结合 ROS2 C 库开发独立应用。安装依赖sudoaptinstallqtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools\libqt5svg5-dev libqt5websockets5-dev# 确保 ROS2 Humble 已安装桌面完整版创建 ROS2 包并集成 Qt创建功能包ros2 pkg create my_qt_app --build-type ament_cmake--dependenciesrclcpp std_msgscdmy_qt_app修改CMakeLists.txtfind_package(Qt5 REQUIRED COMPONENTS Core Widgets) set(QT_LIBS Qt5::Widgets) add_executable(my_qt_app src/main.cpp) target_link_libraries(my_qt_app ${QT_LIBS} rclcpp::rclcpp) ament_target_dependencies(my_qt_app rclcpp std_msgs) install(TARGETS my_qt_app DESTINATION lib/${PROJECT_NAME})编写 Qt 界面代码如src/main.cpp#includeQApplication#includeQPushButton#includerclcpp/rclcpp.hppintmain(intargc,char*argv[]){rclcpp::init(argc,argv);QApplicationapp(argc,argv);QPushButtonbutton(Hello ROS2);button.show();autonodestd::make_sharedrclcpp::Node(qt_node);// 添加 ROS2 逻辑例如定时器、订阅等returnapp.exec();}编译与运行colcon build --packages-select my_qt_appsourceinstall/setup.bash my_qt_app5. PyQt5 / PySide2 rclpy – Python 快速开发使用 Python 和 Qt 绑定库可以快速开发界面并通过rclpy与 ROS2 交互。安装 PyQt5 和 ROS2 Python 依赖sudoaptinstallpython3-pyqt5# 或 pip install PyQt5# ROS2 Humble 的 Python 客户端已默认安装编写示例应用创建 Python 脚本如my_gui.pyimportsysfromPyQt5.QtWidgetsimportQApplication,QMainWindow,QPushButtonimportrclpyfromstd_msgs.msgimportStringclassMainWindow(QMainWindow):def__init__(self):super().__init__()self.noderclpy.create_node(gui_node)self.pubself.node.create_publisher(String,chatter,10)buttonQPushButton(Publish Hello)button.clicked.connect(self.publish_hello)self.setCentralWidget(button)defpublish_hello(self):msgString()msg.dataHello from GUIself.pub.publish(msg)defmain():rclpy.init()appQApplication(sys.argv)windowMainWindow()window.show()# 需要定期调用 rclpy.spin_once 处理 ROS 事件timerapp.startTimer(100)# 每100ms触发一次defprocess_ros():rclpy.spin_once(window.node,timeout_sec0)app.timerEventlambdaevent:process_ros()sys.exit(app.exec_())rclpy.shutdown()if__name____main__:main()运行source/opt/ros/humble/setup.bash python3 my_gui.py同时可启动一个订阅者查看消息ros2 topicecho/chatter补充说明环境设置使用任何 ROS2 命令前务必 source ROS2 环境source /opt/ros/humble/setup.bash。工作空间若开发自定义包建议创建工作空间如~/ros2_ws并在其中构建。调试可使用ros2 run或直接运行可执行文件。