ROS Rviz组件开发方法 3.1

2023-05-16

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
首先我们先进行ui设计:
在两个主页面添加两个页,名称改为rviz,在curentTabText里面修改
然后在电池电量下面那个rviz的页面中加入一个treewidget,给他纵向布局,修改大小header headerdefualt 150,headerMin…150;

开始写代码:
(1)在main_window.cpp中进行添加ui设计:先看看rviz中的有哪些控件,我们之创建一部分
在这里插入图片描述
在main_window.cpp中设计一系列rviz的组件,其中要注意的是:
为了在这个文件中都能使用: QComboBox* fixed_box;所以需要这句话在main_window.hpp中声明:

    QComboBox* fixed_box;

还需要导入头文件

#include <QComboBox>    //10-2

然后继续写代码:

    //rviz设计10-1
//  ui.treeWidget->setWindowTitle("Display");
//  ui.treeWidget->setWindowIcon(QIcon("://images/classes/Displays.svg"));

    //header
    ui.treeWidget->setHeaderLabels(QStringList()<<"key"<<"value");
    ui.treeWidget->setHeaderHidden(true);   //隐藏key value

    //GLobal Options
    QTreeWidgetItem* Global=new QTreeWidgetItem(QStringList()<<"Global Options");
    Global->setIcon(0,QIcon("://images/options.png"));

    ui.treeWidget->addTopLevelItem(Global);
    Global->setExpanded(true);  //设置为展开状态
    //FixFrame
    QTreeWidgetItem* Fixed_frame=new QTreeWidgetItem(QStringList()<<"Fixed Frame");
    fixed_box=new QComboBox();
    fixed_box->addItem("map");
    fixed_box->setMaximumWidth(150);
    fixed_box->setEditable(true);

    connect(fixed_box,SIGNAL(currentTextChanged(QString)),this,SLOT(slot_treewidget_value_change(QString)));
    Global->addChild(Fixed_frame);
    ui.treeWidget->setItemWidget(Fixed_frame,1,fixed_box);

(2)创建qrviz类:

在这里插入图片描述
在这里插入图片描述

注意勾选继承QObject那个类
在这里,照着视频做,把qrviz.hpp给放在include目录下,把qrviz.cpp放在src目录下,发现qt编译后,在include目录下,宾没有qrviz.hpp文件,经过测试,发现把qrviz.hpp也放在
在这里插入图片描述

在这里插入图片描述

接下来我们在qrviz.hpp中包含ROS的头文件和rviz的相关头文件:

#include <ros/ros.h>    //10-3
#include <rviz/visualization_manager.h>
#include <rviz/render_panel.h>
#include <rviz/display.h>
#include <rviz/tool_manager.h>
#include <rviz/tool.h>
#include <QVBoxLayout>

在这里插入图片描述

创建rviz::RenderPanel* render_panel_;显示容器,因为他是继承与QWidget这个类,所以我们可以像操作QWidget那样,去操作rviz::RenderPanel

在qrviz.hpp中建立一个私有的

    rviz::RenderPanel* render_panel_;

在qrviz.cpp中实例化

    //创建rviz panel
    render_panel_=new rviz::RenderPanel();

接下来这里注意理解:

//分析,这是在两个类中,我们需要在main_window这个类中显示 render_panel,也就是在layout_rviz上显示render_panel
//怎么把他们两个联系起来呢,通过构造函数,在初始化对象的时候传入一个layout指针。通过这个指针去添加widget,所以我们需要
//去hpp文件更改一下构造函数传入的参数,需要在qrviz.hpp包含#include <QVBoxLayout>

并且:在qrviz.hpp中

//传入QVBoxLayout指针对象
qrviz(QVBoxLayout* layout);

只记录重点了:
在main_window.cpp中初始化my_rviz这个类,在连接master的两种方式的地方都要初始化:

            //初始化my_rviz
            myrviz=new qrviz(ui.layout_rviz);

在这里插入图片描述
在qrviz.hpp中创建一个私有的:

    rviz::VisualizationManager* manager_;
            ui.treeWidget->setEnabled(true);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS Rviz组件开发方法 3.1 的相关文章

随机推荐

  • vector_swap()回收内存方法

    vector swap 回收内存方法 最近写代码遇到了一段代码 xff0c 简化如下 xff1a span class token keyword typedef span vector span class token operator
  • 计算机网络考研/考博复试常见问题

    目录 第一章 计算机网络体系结构 第二章 物理层 第三章 数据链路层 第四章 网络层 第五章 传输层 第六章 应用层 第一章 计算机网络体系结构 快速唤起记忆知识框架 1 计算机网络的主要功能 xff1f 1 硬件资源共享 可以在全网范围内
  • 编写python代码实现打开并登录网页、对网页进行点击、输入信息等操作

    当我们打开一个网页进行信息搜索时 xff0c 少不了要对它进行点击和输入信息等操作 xff0c 有的网页还可能需要你先登录才能开始其他操作 这篇博客就带大家来了解一下如何编写一段python代码实现打开并登录网页 对网页进行点击 输入信息等
  • Linux查看物理CPU个数、核数、逻辑CPU个数

    CPU总核数 61 物理CPU个数 每颗物理CPU的核数 总逻辑CPU数 61 物理CPU个数 每颗物理CPU的核数 超线程数 1 查看CPU信息 xff08 型号 xff09 span class token function cat s
  • Windows系统:将Typora加入右键新建快捷选项

    本文使用写 reg注册表文档并执行的方法将Typora加入右键新建快捷选项 用执行 reg的方法将Typora加入右键新建选项 步骤 xff1a 新建txt文档 xff0c 命名文档为typora 注意 xff0c 可在本机的任意位置建立
  • 如何在 win系统 桌面上加入某个软件的快捷方式

    其实很简单 xff0c Win 43 R 打开运行 xff0c 输入shell AppsFolder打开文件夹 xff0c 就像这样 回车进入应用列表 xff1a 找到你想放到桌面的那个app右键然后点击创建快捷方式然后选择是 xff0c
  • Python 文件加密

    我们通常编写的python源文件 xff08 py文件 xff09 可以由记事本等软件直接打开 xff0c 如果想要发布程序 xff0c 那么只能直接发布源文件 xff0c 但是发布源码的话 xff0c 就极易被别人轻松使用 有没有加密的方
  • Echarts显示数据被遮挡了

    设置参数 xff1a trigger 39 item 39 在echarts中自定义提示框内容 1 期望效果 以柱状图为例 xff0c 在鼠标滑过每个数据标签时 xff0c 为了更友好地显示数据内容 xff0c 需要对显示的数据内容作格式化
  • Debian 查看系统版本的6种方式

    1 lsb release命令 lsb release 命令可以查看操作系统的具体版本 xff0c 但是需要我们手动安装 安装 apt get install lsb release 使用 lsb release a 2 查看 etc is
  • 下一代 IDE 工具 JetBrains Fleet 正式公测

    这几天 xff0c JetBrains Fleet 可以说是闹的沸沸扬扬 xff0c 官方的态度很明确 xff0c 我们是下一代 IDE xff0c 使用了 IntelliJ 代码处理引擎 xff0c 并且是建立在 20 年的 IDE 开发
  • vue实现websocket断线重连

    下面有demo和注释 span class token tag span class token tag span class token punctuation lt span template span span class token
  • 斐讯K3 在openwrt上如何手动安装阿里云盘aliyun-dav

    感觉网络上很多的东西 xff0c 不那么复杂的 xff0c 是没有教程让它变复杂 斐讯K3 在openwrt上如何手动安装阿里云盘aliyun dav xff0c 这很正常的需求吧 xff0c 只有固件打包在里面的 xff0c 没有手动安装
  • 多主机IIC系统中时钟同步及仲裁

    两个主机可以同时开始在空闲总线上进行传输 xff0c 并且必须有一种方法来确定控制总线并完成数据传输 xff0c 这是通过时钟同步和仲裁完成 在单主机系统中 xff0c 不需要时钟同步和仲裁 时钟同步是通过I2C接口中SCL线的线与实现 x
  • ros-机器人URDF建模问题

    參考這篇文章 xff0c 分分钟解决问题 xff0c 感谢博主 参考链接 xff1a https blog csdn net m0 46259024 article details 105333552 这里总结一下出现的问题 问题1 ros
  • Ubuntu16.04vscode打不开的问题

    1 问题描述 我第一次在这位博主点击这里的教程下尝试去安装vscode xff0c 但是呢他是用wget的方式按装的 xff0c 后来设置也不好弄 xff0c 但是这个时候其实vs已经可以打开了 可是我把图标设置到桌面上 xff0c 直接点
  • rbx1运行出错

    xacro Traditional processing is deprecated Switch to inorder processing To check for compatibility of your document use
  • ubuntu18.04中解决无法创建文本文件问题

    ubuntu18 04无法创建文本文件问题 1 打开文件夹 xff0c 在用户主目录里找到 模板 文件夹打开并打开模板终端 2 输入 xff08 sudo gedit 文本文件 xff09 会弹出一个空白文本文件 xff0c 点击保存 3
  • 2.4电池电量的显示

    一 ui界面设计 打破布局 xff1a mainwindowDesgin 然后继续添加几个label用于显示电量提示信息等 导入resources图片资源文件 xff1a 首先把图片以及相关的资源文件copy到resources文件夹下 x
  • 2.5订阅图像话题并显示

    出错了 xff0c 一直找不到rviz config cmake配置文件 重新创建一个工作空间又好了 xff0c 奇怪的一批 xff0c 估计又是工作空间的问题 首先添加依赖 xff0c 包含头文件 ui界面设计 对显示图片的那个label
  • ROS Rviz组件开发方法 3.1

    首先我们先进行ui设计 xff1a 在两个主页面添加两个页 xff0c 名称改为rviz xff0c 在curentTabText里面修改 然后在电池电量下面那个rviz的页面中加入一个treewidget 给他纵向布局 xff0c 修改大