Coder Social home page Coder Social logo

zhuhaijun753 / ros_qt5_gui_app Goto Github PK

View Code? Open in Web Editor NEW

This project forked from chengyangkj/ros_qt5_gui_app

0.0 0.0 0.0 5.44 MB

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

License: GNU General Public License v2.0

CMake 2.61% C++ 94.70% HTML 2.69%

ros_qt5_gui_app's Introduction

ROS Qt Deskotp GUI App


简体中文 | English

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

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

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

  • 欢迎在issues提交bug

image.png

一,菜单

二,安装教程

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软件包目录下:

catkin_make

4,运行

rosrun cyrobot_monitor cyrobot_monitor

5,windows编译

三,分支

1. Qml版本demo

  • ROS + QML + C++混合编程,使用qml自绘制地图,激光雷达点云等
  • qml_hmi

3. Lite branch

  • 此版本为《ROS人机交互软件开发》系列课程中实现的版本,CSDN例程版本
  • simple

4,rviz菜单树分支

  • 使用rviz自带的菜单树,去实现添加显示图层。master分支所有的图层及菜单均需要手动去写代码实现(并且目前仅支持部分图层显示),此分支调用librviz现成api,所有图层均可以实现,不用去手动创建图层菜单和display

  • rviz_tree

  • image.png

5,ROS Qt Demo

  • cakin_create_qt_pkg 创建的原始包,cmakelist.txt已配置好改为qt5,可以直接编译运行

  • ros_qt_demo

6,android版本分支 敬请期待

7,web版本分支 敬请期待

四,使用说明

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

功能介绍

1,速度仪表盘

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

image.png

2, 机器人速度控制

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

  • 控制方式:

    • 键盘热键控制

    • 鼠标点击控制

    • 虚拟摇杆控制

002.png

3, 电量显示

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

在这里插入图片描述

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

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

026.png

4.1 qt自绘制显示

022.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

ros_qt5_gui_app's People

Contributors

chengyangkj avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.