欢迎提交Issues与bug的pull resquest
简体中文 | English
-
使用qt5实现ros机器人人机界面
-
注意!未经作者的许可,此代码仅用于学习,不能用于其他用途。
-
本仓库以分支的形式,长期维护各种有趣的ROS 可视化项目,持续更新中.....
-
欢迎在issues提交bug
注意!主分支(master)已不再维护librviz功能,使用Qt自行绘制实现一些图层显示,如需librviz功能请切换分支rviz_tree或CSDN及古月居课程例程版本
melodic需要换成自己的ROS版本号
sudo apt-get install ros-melodic-qt-create
sudo apt-get install ros-melodic-qt-build
程序依赖Qtmultimedia实现音频功能,因此需要安装依赖
sudo apt-get install qtmultimedia5-dev
将软件包放入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
source ~/catkin_ws/devel/setup.bash
rosrun ros_qt5_gui_app ros_qt5_gui_app
- 借助 ROS windows版本,编译后可在win10平板使用,安装教程古月学院 如何实现Windows ROS人机交互软件
常见问题及解决方法见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实现多平台运行 | 逐步推进..... |
- 使用前需要在连接界面连接rosore主节点
- 主节点地址:即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
点击连接界面右下角,进行相关必要设置
可视化相关的订阅与发布话题的设置
-
速度控制话题:界面上的速度控制按钮,发布出去的话题名称
-
导航目标点话题:导航时界面上发布导航目标点的话题
-
导航初始点话题:导航时界面上选点发布的导航初始点话题
-
转向灯亮起阈值:主界面速度仪表盘旁的转向灯,收到的角速度大于这个阈值时开始亮
-
里程计话题:订阅里程计话题,以实现速度仪表盘与转向灯功能
-
电池电量话题:电池电量显示的依据,订阅此话题,注意此话题的消息类型为sensor_msgs/BatteryState
-
机器人的坐标话题:订阅此话题,以实现在自绘制地图上动态显示机器人实时坐标
在使用librviz与自绘制地图等进行可视化显示时的一些图层属性信息
界面上进行视频话题进行可视化显示时订阅的话题,其中video0订阅为compressed后的图像话题,以减轻卡顿问题
- 机器人模型图:主界面左侧显示的机器人图片
- 显示模式:机器人端(只保留主要功能,简化显示) 控制端:所有功能均显示
- 话题订阅线程数:话题订阅时所用的线程数,如遇到话题卡顿,提高此参数
- FrameRate:循环Rate
此设置是自绘制地图坐标系能否正常显示的必要设置,通过设置的坐标系Frame进行tf坐标变换:
查看坐标系的Frame方法:
rosrun rqt_tf_tree rqt_tf_tree:
- 使用前须在连接界面->设置->话题设置中设置odom话题:
-
使用前需在连接界面->设置->话题设置中设置速度控制话题:
-
控制方式:
-
键盘热键控制
-
鼠标点击控制
-
虚拟摇杆控制
-
- 使用前须在在连接界面->设置->话题设置中设置电池电量话题:
使用前需在连接界面->设置->图层设置中进行启用与停用等必要图层设置:
注意使用前需要在连接界面->设置->坐标系设置中进行图层Frame设置:
目前librviz显示待优化,闪退问题严重
GNU GPL(GNU General Public License,GNU通用公共许可证)
- 只要软件中包含了遵循本协议的产品或代码,该软件就必须也遵循 GPL 许可协议,也就是必须开源免费,不能闭源收费,不能作为商用软件。
GPL 开源协议的主要特点
-
复制自由 允许把软件复制到任何人的电脑中,并且不限制复制的数量。
-
传播自由 允许软件以各种形式进行传播。
-
收费传播 允许在各种媒介上出售该软件,但必须提前让买家知道这个软件是可以免费获得的;因此,一般来讲,开源软件都是通过为用户提供有偿服务的形式来盈利的。
-
修改自由 允许开发人员增加或删除软件的功能,但软件修改后必须依然基于GPL许可协议授权。
本系列教程文章专栏:
本系列课程已上线古月学院,欢迎感兴趣的小伙伴订阅:
开发交流QQ群: 797497206