/Ros_Qt5_Gui_App

ROS human computer interface based on Qt5(基于Qt5的ROS人机交互界面)

Primary LanguageC++GNU General Public License v2.0GPL-2.0

ROS Qt Desktop GUI App

GitHub last commit GitHub stars GitHub forks GitHub issues GitHub issues closed Gitter

How To Contribute

欢迎提交Issues与bug的pull resquest


简体中文 | English

  • 使用qt5实现ros机器人人机界面

  • 注意!未经作者的许可,此代码仅用于学习,不能用于其他用途。

  • 本仓库以分支的形式,长期维护各种有趣的ROS 可视化项目,持续更新中.....

  • 欢迎在issues提交bug

image.png 022.png

注意!主分支(master)已不再维护librviz功能,使用Qt自行绘制实现一些图层显示,如需librviz功能请切换分支rviz_treeCSDN及古月居课程例程版本

一,菜单

二,安装教程

1,首先安装ros对qt pkg的支持(非必须)

melodic需要换成自己的ROS版本号

sudo apt-get install ros-melodic-qt-create
sudo apt-get install ros-melodic-qt-build

2,安装Qtmultimedia5依赖

程序依赖Qtmultimedia实现音频功能,因此需要安装依赖

sudo apt-get install qtmultimedia5-dev

3,编译

将软件包放入ros src软件包目录下:

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
git clone https://github.com/chengyangkj/Ros_Qt5_Gui_App
cd ~/catkin_ws
catkin_make

4,运行

source  ~/catkin_ws/devel/setup.bash
rosrun ros_qt5_gui_app ros_qt5_gui_app

5,windows编译

常见问题及解决方法见wiki

三,分支

友链名 支持平台 功能
master Win10 Ubuntu ROS + QWidget + QGraphicsview自绘制可视化界面显示
qml_hmi Win10 Ubuntu ROS + QML + C++混合编程,qml自绘制地图,激光雷达可视化显示等demo
simple Win10 Ubuntu ROS + QWidget + Librviz进行可视化显示,为《ROS人机交互软件开发》系列课程中实现的版本,CSDN博客例程版本
rviz_tree Win10 Ubuntu ROS + QWidget + Librviz原生图层Api实现图层管理,不需手动创建图层
ros_qt_demo Win10 Ubuntu cakin_create_qt_pkg 创建的原始包,cmakelist.txt已配置好改为qt5,可以直接编译运行
ros2_qt_demo ROS2 在ROS2平台上运行的qt demo包,cmakelist.txt已配置好改为qt5,可以直接colcon build 编译使用
ROS2_Qt5_Gui_App ROS2 在ROS2平台上实现自绘制话题消息显示的功能包,近期上线....
Flutter App 基于flutter实现多平台运行 逐步推进.....

四,使用说明

1,连接主节点

  • 使用前需要在连接界面连接rosore主节点

024.png

  • 主节点地址:即ROS_MASTER_URI ROS多机通讯主节点地址,如果只是单机通讯填127.0.0.1即可
  • 本机IP:即ROS_IP 软件运行的机器的IP 如果是单机通讯填127.0.0.1即可 注意 此ip填错 会导致只能单向通讯 导致收不到远程小车的话题信息 却有话题列表的现象
  • 勾选使用环境变量连接就不使用界面设置的ROS_IP与ROS_MASTER_URI,需要在环境变量文件(~/.bashrc)配置好多机通讯环境变量,否则会导致连接失败,配置多机通讯教程csdn 博客
  • 其他一些话题设置
  • 勾选自动连接会在打开软件时进行自动连接
  • 点击检测IP会自动检测本机IP并填入ros ip与ros master ip

2,设置

点击连接界面右下角,进行相关必要设置

2.1 话题设置

可视化相关的订阅与发布话题的设置

  • 025.png

  • 速度控制话题:界面上的速度控制按钮,发布出去的话题名称

  • 导航目标点话题:导航时界面上发布导航目标点的话题

  • 导航初始点话题:导航时界面上选点发布的导航初始点话题

  • 转向灯亮起阈值:主界面速度仪表盘旁的转向灯,收到的角速度大于这个阈值时开始亮

  • 里程计话题:订阅里程计话题,以实现速度仪表盘与转向灯功能

  • 电池电量话题:电池电量显示的依据,订阅此话题,注意此话题的消息类型为sensor_msgs/BatteryState

  • 机器人的坐标话题:订阅此话题,以实现在自绘制地图上动态显示机器人实时坐标

2.2 图层设置

在使用librviz与自绘制地图等进行可视化显示时的一些图层属性信息

026.png

2.3 video设置

界面上进行视频话题进行可视化显示时订阅的话题,其中video0订阅为compressed后的图像话题,以减轻卡顿问题

image.png

2.4 通用设置

image.png

  • 机器人模型图:主界面左侧显示的机器人图片
  • 显示模式:机器人端(只保留主要功能,简化显示) 控制端:所有功能均显示
  • 话题订阅线程数:话题订阅时所用的线程数,如遇到话题卡顿,提高此参数
  • FrameRate:循环Rate

2.5 坐标系设置

此设置是自绘制地图坐标系能否正常显示的必要设置,通过设置的坐标系Frame进行tf坐标变换:

image.png

查看坐标系的Frame方法:

rosrun rqt_tf_tree rqt_tf_tree:

image.png

功能介绍

1,速度仪表盘

  • 使用前须在连接界面->设置->话题设置中设置odom话题:

image.png

2, 机器人速度控制

  • 使用前需在连接界面->设置->话题设置中设置速度控制话题:

  • 控制方式:

    • 键盘热键控制

    • 鼠标点击控制

    • 虚拟摇杆控制

002.png

3, 电量显示

  • 使用前须在在连接界面->设置->话题设置中设置电池电量话题:

在这里插入图片描述

4, 地图等信息可视化显示

使用前需在连接界面->设置->图层设置中进行启用与停用等必要图层设置:

026.png

4.1 qt自绘制显示

注意使用前需要在连接界面->设置->坐标系设置中进行图层Frame设置:

022.png

image.png

4.2 librviz显示

目前librviz显示待优化,闪退问题严重

开源协议

GNU GPL(GNU General Public License,GNU通用公共许可证) 在这里插入图片描述

  • 只要软件中包含了遵循本协议的产品或代码,该软件就必须也遵循 GPL 许可协议,也就是必须开源免费,不能闭源收费,不能作为商用软件。

GPL 开源协议的主要特点

  • 复制自由 允许把软件复制到任何人的电脑中,并且不限制复制的数量。

  • 传播自由 允许软件以各种形式进行传播。

  • 收费传播 允许在各种媒介上出售该软件,但必须提前让买家知道这个软件是可以免费获得的;因此,一般来讲,开源软件都是通过为用户提供有偿服务的形式来盈利的。

  • 修改自由 允许开发人员增加或删除软件的功能,但软件修改后必须依然基于GPL许可协议授权。

相关教程及交流群

本系列教程文章专栏:

ROS机器人GUI程序开发

本系列课程已上线古月学院,欢迎感兴趣的小伙伴订阅:

  1. ROS Qt开发环境搭建以及基础知识介绍
  2. ROS人机交互软件的界面开发
  3. ROS Rviz组件开发方法
  4. 如何实现ROS windows人机交互软件

在这里插入图片描述

开发交流QQ群: 797497206