QT搭建的Ros/librviz的GUI软件

1.前言

开发初期学习了下面博主的文章,也报了他在古月局的课,相当于感谢吧。

ROS Qt5 librviz人机交互界面开发一(配置QT环境)-CSDN博客​​​​​​​r

软件前期也是参考他的开源项目

GitHub - chengyangkj/Ros_Qt5_Gui_App at simple

想要开发相关软件的肯定也都发现网上关于RosQT编程的学习资料很少,librviz的资料更少,而且很多也都是复制粘贴别人的。编写这个软件花了很多功夫,包括如何导入ros库,写cmake,看rviz源码。前期想把一个RosQT工程编译出来都花了很长时间。

当前程序运行稳定不会崩溃,各种用户瞎操作的情况都考虑到了,只有rtsp拉取可能有一点小bug,但也只会影响视频,软件不会崩溃。

代码写的很垃圾,但是功能实现了,垃圾代码可以后期规范,其实也不想去规范,能跑就行。

2.开发环境

系统:Ubuntu1804

Ros:melodic

开发工具:QtCreator

QT版本:5.14.1 (没有用ros官方提供的ros_plugin插件,插件只支持5.9好像)

FFmpeg:4.4(各个版本接口不一样,所以不同版本的代码会出错)

3.功能介绍

主界面

软件所有设置支持关闭前自动保存,再次打开时恢复上次关闭前状态

上方:

        状态:与Ros主节点连接状态

        延迟:与机器人之间的延迟,通过ping实现

        电量:完整动画效果,低于20%呈现红色,还有黄色和绿色,通过ros节点实现

        电压:电量是通过计算电压得出

        设置按键:

 左侧:

        仪表盘:显示速度,有一些其他接口没用到,例如挡位等,因为用的是汽车仪表盘控件

        基本设置:角速度/线速度/等

        键盘控制:

右侧:

        可以后续增加其他功能控件

RTSP视频拉取

        支持四路RTSP协议的视频流拉取,每个视频是一个单独线程

        单个视频双击可以最大化

        可以设置单个视频分辨率,下图该功能代码没合进去

建图与导航

        支持rviz常用Tool

        支持设置返航点并且一键返航

        支持rviz插件功能,在工作空间中编译好插件后,需要在代码里给插件编写界面,如图中的3D Nav Goal

        支持视角改变,当前只支持第三人称和俯视

        支持显示rviz常用图层,只需在设置里进行选择配置

 2D地图显示

点云显示

模型显示

        可以实时显示机器人状态,例如有机械臂时可以实时显示机械臂姿态 

设置选项

基础设置

话题设置:基于Ros的一些功能的话题设置

连接:与Ros主节点连接设置,可以设置成打开软件自动连接

视频:rtsp拉取的地址

主题:包括黑色/灰色/蓝色主题

rviz地图配置

配置过程与rviz一样,可以进行增删改

支持基本上所有的rviz图层

支持保存配置到文件,和读取配置配件功能

支持打开软件自动读取上次配置

 

视角设置

        当前支持第三人称和俯视,并进行如下配置

        TargetFrame的选择可以使视角对机器人进行跟随

节点信息

        节点信息查看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/177184.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何实现数据通过表格批量导入数据库

文章目录 1. 准备工作2. 创建数据库表3. 编写导入脚本4. 优化和拓展4.1 批量插入的优势4.2 错误处理4.3 数据验证4.4 数据转换 5. 总结 🎉如何实现数据通过表格批量导入数据库 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博客主页:IT陈寒的博客&…

常见的8个JMeter压测问题

为什么在JMeter中执行压力测试时,出现连接异常或连接重置错误? 答案:连接异常或连接重置错误通常是由于服务器在处理请求时出现问题引起的。这可能是由于服务器过载、网络故障或配置错误等原因导致的。 解决方法: 确定服务器的…

OSG文字-osgText3D(5)

osgText3D 三维立体文字比二维平面文字显示效果更好,相对二维平面文字,它有非常好的立体显示效果。 在实际虚拟现实项目中,过多使用三维立体文字会降低染效率,加重渲染负担,相对平面二维文字,它占用的内存是…

Linux C IO复用

IO复用 概述IO模型阻塞式IO非阻塞式IOIO复用select、poll、epoll异同 信号驱动式IO异步IO select函数select示例代码 poll函数poll示例代码 epoll函数创建  epoll_create注册、修改、删除  epoll_ctl轮询 I/O 事件的发生  epoll_waitepoll示例代码 基于TCP和epoll在线多人…

APP自动化之Poco框架

今天给大家介绍一款自动化测试框架Poco,其脚本写法非常简洁、高效,其元素定位器效率更快,其本质基于python的第三方库,调试起来也会非常方便,能够很好的提升自动化测试效率,节省时间。 (一)背景…

DDD神药:去哪儿结合DDD,实现架构大调优

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中,最近有小伙伴拿到了一线互联网企业如阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试资格,遇到很多很重要的面试题: 谈谈你的DDD落地经验? 谈谈你对DDD的理解&#x…

浅谈低压绝缘监测及定位系统在海上石油平台的研究与应用

安科瑞 华楠 摘要:海上石油平台低压系统与陆地电力系统有很大区别,其属于中性点绝缘系统,在出现单相接地故障时,系统允许带故障正常运行2 h,保证海上重要电气设备不会立即关停。现以渤海某海上平台为例,其…

Leetcode—13.罗马数字转整数【简单】

2023每日刷题(三十七) Leetcode—13.罗马数字转整数 算法思想 当前位置的元素比下个位置的元素小,就减去当前值,否则加上当前值 实现代码 int getValue(char c) {switch(c) {case I:return 1;case V:return 5;case X:return 1…

赞!优雅的Python多环境管理神器!易上手易操作!

前言 Python 的不同版本之间常常存在依赖关系和兼容性问题,为了方便开发人员在 不同项目中使用不同的版本 。 如果大家使用过Python版本管理工具,肯定大多数人使用的都是Anaconda,它是一个优秀的数据科学开发环境,本身也提供了丰…

Python安装入门

目录 1 从应用商店安装2 通过官方安装3 验证安装是否成功4 打印hello world总结 1 从应用商店安装 推荐使用微软的应用商店安装,打开开始菜单 在应用商店搜索python 选择最新的版本下载并安装即可 2 通过官方安装 也可以使用官网的安装包,输入如下网…

【数据结构初阶】栈和队列

栈和队列 1.栈1.1栈的概念和结构1.2栈的实现 2.队列2.1队列的概念和结构2.2队列的实现 1.栈 1.1栈的概念和结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。…

逻辑漏洞(业务逻辑)dami CMS

逻辑漏洞(业务支付逻辑漏洞)dami CMS 0x01 业务逻辑简介 业务逻辑指的是一个系统或应用程序中的实际业务规则和流程。它描述了如何处理特定的业务需求、数据和操作。业务逻辑通常是根据特定行业或组织的需求而设计的。 在软件开发中,业务逻…

2021年06月 Scratch(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 小明同学设计了一款游戏,其中一段程序如下图所示,下面这段程序可以实现哪项功能? A:在任何地方点击鼠标,角色都会移到鼠标位置 B:没有任何操作的时候角色会在舞台区域随机移动…

接口自动化测试实战经验分享,测试用例也能自动生成

作为测试,你可能会对以下场景感到似曾相识:开发改好的 BUG 反复横跳;版本兼容逻辑多,修复一个 BUG 触发了更多 BUG;上线时系统监控毫无异常,过段时间用户投诉某个页面无数据;改动祖传代码时如履…

C#学习相关系列之Linq用法---group和join相关用法(三)

一、Group用法 在C#的LINQ中&#xff0c;Grou将集合中的元素按照指定的键进行分组。Group方法返回一个IEnumerable<IGrouping<TKey, TElement>>类型的集合&#xff0c;其中TKey表示分组的键类型&#xff0c;TElement表示集合中元素的类型。每个IGrouping<TKey, …

机器学习实战第1天:鸢尾花分类任务

专栏介绍 欢迎订阅专栏——机器学习实战 机器学习实战_Nowl的博客-CSDN博客 纸上得来终觉浅 本专栏项目将着重于解决各类实际机器学习问题&#xff0c;带你上手各种场景的实际问题 数据集可以在我的资源中找到&#xff0c;也可以自行搜索 文中导入数据集的路径要改成自己的…

华为obs上传下载-Java版 2023-11-23

弄了半天&#xff0c;老师帮弄成功了&#xff0c;经过同意&#xff0c;分享到网上&#xff0c;希望能帮助更多人&#xff0c;至于怎么弄的&#xff0c;我也不知道。 创建idea项目后&#xff0c;项目结构&#xff0c;对应文件没有的创一个 pom.xm 注意改Java版本&#xff0c;我…

解决Vision Transformer在任意尺寸图像上微调的问题:使用timm库

解决Vision Transformer在任意尺寸图像上微调的问题&#xff1a;使用timm库 文章目录 一、ViT的微调问题的本质二、Positional Embedding如何处理1&#xff0c;绝对位置编码2&#xff0c;相对位置编码3&#xff0c;对位置编码进行插值 三、Patch Embedding Layer如何处理四、使…

算法设计与分析复习--分支界限法

文章目录 上一篇分支界限法性质装载问题0-1背包问题单源最短路问题最大团问题下一篇 上一篇 算法设计与分析复习–回溯法&#xff08;二&#xff09; 分支界限法性质 分支界限法是按广度优先策略或最小耗费优先遍历问题的解空间树。 搜索解空间&#xff1a; 子集树排列树 …

轻量级压测工具Apache Bench实战

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;交流讨论&#xff1a;欢迎加入我们一起学习&#xff01;&#x1f4e2;资源分享&#xff1a;耗时200小时精选的「软件测试」资…