ROS与Qt5人机交互界面开发-添加rviz显示界面

说明:

介绍如何添加rviz显示界面

步骤:

实现效果:

核心代码

创建librviz界面类:

qrviz_widget.h内容如下:

#ifndef QRVIZ_WIDGET_H

#define QRVIZ_WIDGET_H

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

namespace Ui {

class QRviz_widget;

}

class QRviz_widget : public QWidget

{

Q_OBJECT

public:

explicit QRviz_widget(QWidget *parent = 0);

~QRviz_widget();

private:

Ui::QRviz_widget *ui;

};

#endif // QRVIZ_WIDGET_H

qrviz_widget.cpp内容如下:

#include "../include/cyrobot_monitor/qrviz_widget.h"

#include "ui_qrviz_widget.h"

QRviz_widget::QRviz_widget(QWidget *parent) :

QWidget(parent),

ui(new Ui::QRviz_widget)

{

ui->setupUi(this);

int argc;

char **argv;

ros::init(argc,argv,"QRviz",ros::init_options::AnonymousName);

//创建rviz容器

rviz::RenderPanel *render_panel_=new rviz::RenderPanel;

//设置鼠标形状

render_panel_->setCursor(Qt::PointingHandCursor);

//向layout添加widget

ui->verticalLayout->addWidget(render_panel_);

//初始化rviz控制对象

rviz::VisualizationManager* manager_=new rviz::VisualizationManager(render_panel_);

//初始化camera 这行代码实现放大 缩小 平移等操作

render_panel_->initialize(manager_->getSceneManager(),manager_);

// //工具管理

rviz::ToolManager* tool_man;

// connect( tool_man, SIGNAL( toolAdded( Tool* )), this, SLOT( addTool( Tool* )));

// connect( tool_man, SIGNAL( toolRemoved( Tool* )), this, SLOT( removeTool( Tool* )));

// connect( tool_man, SIGNAL( toolRefreshed( Tool* )), this, SLOT( refreshTool( Tool* )));

// connect( tool_man, SIGNAL( toolChanged( Tool* )), this, SLOT( indicateToolIsCurrent( Tool* )));

manager_->initialize();

manager_->removeAllDisplays();

rviz::Display* grid_ = manager_->createDisplay( "rviz/Grid", "adjustable grid", true );

ROS_ASSERT( grid_ != NULL );

// Configure the GridDisplay the way we like it.

grid_->subProp( "Line Style" )->setValue( "Billboards" );

grid_->subProp( "Color" )->setValue(QColor(125,125,125));

manager_->startUpdate();

}

QRviz_widget::~QRviz_widget()

{

delete ui;

}

新建widget对象:

qrviz=new QRviz_widget(ui.widget_rviz);

qrviz->showFullScreen();

qrviz->show();

如图:

其中,为了实现鼠标放大缩小移动的功能,本来以为需要自己监听鼠标事件,读了读rviz源码,发现这一行代码就能实现:

//初始化camera 这行代码实现放大 缩小 平移等操作

render_panel_->initialize(manager_->getSceneManager(),manager_);

linux中qt加载rviz,ROS与Qt5人机交互界面开发-添加rviz显示界面相关推荐

  1. Linux重新读写分区的命令,用partprobe、blockdev、hdparm、partx命令在Linux中重新加载分区表...

    本文介绍Linux操作系统重新加载分区表的方法:使用partprobe.blockdev.hdparm.partx命令. 背景 作为Linux管理员,你可以在一天内多次执行磁盘分区任务.大多数情况下, ...

  2. linux下qt加载boost,信号槽的实现实例—— Qt 和 Boost

    Qt 的信号槽和 Boost.Signals 由于有着截然不同的设计目标,因此二者的实现.强度也十分不同.将二者混合在一起使用也不是不可能的,我们将在本系统的最后一部分来讨论这个问题. 使用信号槽 信 ...

  3. linux中动态加载动态库的方法

    功能:打开一个动态链接库 包含头文件: #include <dlfcn.h> 函数定义 : void * dlopen( const char *  pathname , int  mod ...

  4. 原声html中怎么加载vue文件,HTML文件引入Vue开发

    HTML文件引入Vue开发 页面标题 {{text}} {{item.text}} 点击事件 @click {{text}} 添加文本使用两个大括号{{文本}} img标签中src前面得加冒号 new ...

  5. android webview加载不出来,【新手有关问题】Android浏览器中WebView加载不出网页

    当前位置:我的异常网» Android » [新手有关问题]Android浏览器中WebView加载不出网 [新手有关问题]Android浏览器中WebView加载不出网页 www.myexcepti ...

  6. Linux环境变量加载的研究

    我们经常遇到在linux执行某条命令时出现xxx文件没找到的问题.很多情况都不是库没有安装,而是环境变量的错误. 但是,我明明是设置了环境变量啊.所以,我对此进行了试验. 我们登录linux有很多种, ...

  7. 关于WordPress中字体加载慢的问题解决方案(转)

    2016-04-15 最近发现Wordpress有时候加载的特别慢,于是就想办法找了下原因.之前听网上说是因为wordpress用的是Google的字体库,而且是每次都要加载,导致访问慢的,于是当时装 ...

  8. linux path环境变量检索目录,Linux下动态链接库加载路径及搜索路径问题

    引子 近日,服务器迁移后,偷懒未重新编译nginx的,直接./nginx启动,结果遇到如下问题: "error while loading shared libraries" 这是 ...

  9. 【Linux 内核】宏内核与微内核架构 ( 操作系统需要满足的要素 | 宏内核 | 微内核 | Linux 内核动态加载机制 )

    文章目录 一.操作系统需要满足的要素 二.宏内核 三.微内核 四.Linux 内核动态加载机制 一.操作系统需要满足的要素 电脑上运行的 操作系统 , 是一个 软件 ; 设备管理 : 操作系统需要 为 ...

最新文章

  1. OpenCV 4.5.2 发布
  2. 使用drbd进行磁盘扩容,小磁盘扩容大磁盘后大小未变的问题解决方法
  3. Linux Shell学习(3)
  4. 分布式模块之间的调用_分布式事务
  5. innodb下的mvcc_InnoDB的MVCC实现原理
  6. 数字滤波器设计——Matlab(理想低通滤波器、FIR滤波器)
  7. RGB与十六进制颜色进行互转
  8. matlab模拟滤波器频率响应,怎样求FIR滤波器在任意频率上的频率响应?
  9. 汇总:各类手游渠道特点及选择方法
  10. 软文写作技巧,你的微信软文也能破100000+
  11. ST官网下载STM32固件库
  12. 使用开源软件XWIKI搭建公司内部WIKI系统
  13. OLED TFT屏幕相关
  14. js中条件三目运算符?:
  15. Block源码解析和深入理解
  16. 到底多少够用 11款USB设备供电大揭秘
  17. C#winform图书管理系统(课程设计)
  18. 如何基于nonebot2做一个q群机器人
  19. 程序员如何提高10%的效率2
  20. socket编程 服务器

热门文章

  1. jp@gc - UItimate Thread Goup
  2. Quill插入表格getModule(‘table‘)为undefined 问题
  3. 【论文学习笔记】《A Review of Deep Learning Based Speech Synthesis》
  4. 大教堂和集市--两种不同的软件开发模式 论文阅读笔记
  5. 桥接模式和中继模式的区别
  6. 火绒剑,监控功能的使用
  7. Activity(三)—— Activity的启动模式
  8. 怎样谈网站建设项目需求
  9. JAVA音视频解决方案----音频基础知识
  10. 计算机5800计算道路标高程序,Casio fx-5800P计算器三个公路基本测量程序编写与应用...