【ROS】RViz使用详解

news2024/11/28 2:44:20

1、安装

1.1 ROS1-RVIZ

RVIZ的ROS1各个ubuntu版本中的安装命令
ubuntu14.04:

sudo apt install ros-indigo-rviz

ubuntu16.04:

sudo apt install ros-kinetic-rviz

ubuntu18.04:

sudo apt install ros-melodic-rviz

ubuntu20.04:

sudo apt install ros-noetic-rviz

1.2 ROS2-RVIZ

RVIZ的ROS2版本在安装桌面版desktop或者desktop-full时会一起安装
ubuntu18.04:

sudo apt install ros-dashing-desktop

ubuntu20.04:

sudo apt install ros-foxy-desktop

ubuntu22.04:

sudo apt install ros-humble-desktop

1.3 版本代号

在这里插入图片描述

2、启动ROS1-RVIZ

2.1 启动核心服务:roscore

source /opt/ros/indigo/setup.bash
roscore &

2.2 启动RVIZ

启动rviz功能包中rviz程序

rosrun rviz rviz

一个空的窗口将会出现
在这里插入图片描述

3、简单用法

3.1 点击“Add”

在这里插入图片描述

3.2 选择类型

选择一个显示类型,比如网格:Grid
在这里插入图片描述

3.3 属性和状态

状态有四种情况:OK、Warning、Error、Disabled
在这里插入图片描述

4、内置的显示类型

名称描述对应的消息
Axes显示坐标轴
Effort显示机器人每个旋转关节的力sensor_msgs/JointStates
Camera用于显示相机的图像sensor_msgs/Image, sensor_msgs/CameraInfo
Grid显示网格
Grid Cells在网格中绘制单元格,比如导航中障碍物nav_msgs/GridCells
Image显示图像sensor_msgs/Image
InteractiveMarker显示来自一个或多个 Interactive Marker 服务器的 3D 对象,并可以与它们进行鼠标交互visualization_msgs/InteractiveMarker
Laser Scan显示来自激光扫描的数据,具有不同的渲染模式、累积等选项sensor_msgs/LaserScan
Map显示地图nav_msgs/OccupancyGrid
Markers通过主题标记任意形状visualization_msgs/Marker, visualization_msgs/MarkerArray
Path显示来自导航的路径nav_msgs/Path
Point绘制点geometry_msgs/PointStamped
Pose将姿势绘制为箭头或轴geometry_msgs/PoseStamped
Pose Array绘制箭头“云”,绘制姿势数组中的每个姿势geometry_msgs/PoseArray
Point Cloud(2)绘制点云sensor_msgs/PointCloud, sensor_msgs/PointCloud2
Polygon绘制多边形geometry_msgs/Polygon
Odometry里程计nav_msgs/Odometry
Range显示表示来自声纳或红外距离传感器的距离测量值的圆锥体sensor_msgs/Range
RobotModel显示机器人的视觉
TF显示tf变换层次结构
Wrench将扭矩绘制为箭头(力)和箭头 + 圆(扭矩)geometry_msgs/WrenchStamped
Twist将扭曲的型变绘制为箭头(线性)和箭头 + 圆(角度)geometry_msgs/TwistStamped
Oculus将 RViz 场景渲染到 Oculus 耳机

5、绘制基本形状

5.1 创建功能包

mkdir -p rviz/src
cd rviz/src
catkin_create_pkg using_markers roscpp visualization_msgs

5.2 编辑源码

vi basic_shapes.cpp
#include <ros/ros.h>
#include <visualization_msgs/Marker.h>

int main( int argc, char** argv )
{
  ros::init(argc, argv, "basic_shapes");
  ros::NodeHandle n;
  ros::Rate r(1);
  ros::Publisher marker_pub = n.advertise<visualization_msgs::Marker>("visualization_marker", 1);

  # a)设置初始形状为立方体
  uint32_t shape = visualization_msgs::Marker::CUBE;

  while (ros::ok())
  {
    visualization_msgs::Marker marker;
    # b)设置帧 ID 和时间戳
    marker.header.frame_id = "my_frame";
    marker.header.stamp = ros::Time::now();

    # c)设置名称空间和 ID,要确保在系统中是唯一的
    marker.ns = "basic_shapes";
    marker.id = 0;

    # d)设置标记类型。 初始是立方体CUBE,然后是球体SPHERE、箭头ARROW 和圆柱体CYLINDER,四者之间循环
    marker.type = shape;

    # e)设置标记动作: ADD、DELETE、DELETEALL
    marker.action = visualization_msgs::Marker::ADD;

    # f)设置标记的姿势。 这是相对于标题中指定的帧/时间的完整 6DOF 姿势
    marker.pose.position.x = 0;
    marker.pose.position.y = 0;
    marker.pose.position.z = 0;
    marker.pose.orientation.x = 0.0;
    marker.pose.orientation.y = 0.0;
    marker.pose.orientation.z = 0.0;
    marker.pose.orientation.w = 1.0;

    # g)设置标记的比例——这里的 1x1x1 表示边长 1m
    marker.scale.x = 1.0;
    marker.scale.y = 1.0;
    marker.scale.z = 1.0;

    # h)设置颜色——确保将 alpha 设置为非零值!
    marker.color.r = 0.0f;
    marker.color.g = 1.0f;
    marker.color.b = 0.0f;
    marker.color.a = 1.0;

    marker.lifetime = ros::Duration();

    # i)发布标记marker
    while (marker_pub.getNumSubscribers() < 1)
    {
      if (!ros::ok())
      {
        return 0;
      }
      ROS_WARN_ONCE("Please create a subscriber to the marker");
      sleep(1);
    }
    marker_pub.publish(marker);

    # j)在不同形状之间循环显示
    switch (shape)
    {
    case visualization_msgs::Marker::CUBE:
      shape = visualization_msgs::Marker::SPHERE;
      break;
    case visualization_msgs::Marker::SPHERE:
      shape = visualization_msgs::Marker::ARROW;
      break;
    case visualization_msgs::Marker::ARROW:
      shape = visualization_msgs::Marker::CYLINDER;
      break;
    case visualization_msgs::Marker::CYLINDER:
      shape = visualization_msgs::Marker::CUBE;
      break;
    }

    r.sleep();
  }
}

5.3 编译

编译时,注意要在工程根目录编译

cd ~/ros/rviz/
catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3

5.4 运行

1)终端1运行发布者

rosrun using_markers basic_shapes

2)终端2运行rviz

rosrun rviz rviz

在这里插入图片描述

5.4 配置

1)添加Marker
在这里插入图片描述
2)修改固定帧ID
将固定帧Fixed Frame修改为和程序中相同的:marker.header.frame_id = “my_frame”;
在这里插入图片描述

5.5 效果

在这里插入图片描述

6、使用rviz_visual_tools绘制基本形状

6.1 安装绘制基本形状的封装库

源码:https://github.com/PickNikRobotics/rviz_visual_tools
安装命令:(本人ROS版本为ubuntu20.04 ROS1 noetic,需要更加自己的环境来修改安装命令)

sudo apt install ros-noetic-rviz-visual-tools

6.2 测试

终端1中启动RVIZ

roslaunch rviz_visual_tools demo_rviz.launch

终端2中启动测试demo

roslaunch rviz_visual_tools demo.launch

6.3 效果

在这里插入图片描述

6.4 API使用手册

http://docs.ros.org/en/melodic/api/rviz_visual_tools/html/annotated.html

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java厘米级高精准定位系统源码(支持UWB、蓝牙、WIFI定位)

高精准定位系统支持10厘米工业级高精准定位&#xff0c;同时支持UWB&#xff0c;蓝牙&#xff0c;WIFI定位。 ♦高精准定位系统首页为数据统计页面&#xff0c;统计的信息可以分为数量统计、区域告警人数统计、工牌使用量的统计、区域报警率统计以及告警消息的展示。 系统首页…

Pytest教程__常用执行参数详解(3)

前面讲了测试用例的执行方式&#xff0c;也认识了 -v -s 这些参数&#xff0c;那么还有没有其它参数呢&#xff1f;答案肯定是有的&#xff0c;我们可以通过 pytest -h来查看所有可用参数。 从图中可以看出&#xff0c;pytest的参数有很多&#xff0c;但并不是每一个参数都需要…

fiddler高级工具栏中的statistics数据分析工具

Fiddler statistics 板块会统计一个请求开始发出到最终接收并转发的数据&#xff0c;统计和响应的一些信息&#xff1a; 可以使用statistics分页&#xff0c;完成简单的性能测试&#xff0c;查看其接口的响应时间 如图展示&#xff1a; 如图详细解释下每一项的含义&#xff…

grep(General Regular Expression Parser)命令

基本用法 本篇介绍非常有用的命令是grep&#xff0c;这个不寻常的名字代表的是通用正则表达式解析器&#xff08;General Regular Expression Parser&#xff0c;简写为grep&#xff09;。你使用find命令在系统中搜索文件&#xff0c;而使用grep命令在文件中搜索字符串。事实上…

磁盘坏道:sd 2:0:0:0: [sda] Sense Key : Medium Error [current] [descriptor]

现网问题 从log来看磁盘可能存在问题&#xff0c;进一步实锤。 问题定位 通过badblocks扫描磁盘&#xff0c;发现sda磁盘有磁道损坏&#xff0c;建议更换磁盘。 badblocks命令详解 Linux badblocks命令用于检查磁盘装置中损坏的区块,执行指令时须指定所要检查的磁盘装置&…

postman高级使用

概念&#xff1a;让程序代替人判断测试用例执行的结果是否符合预期的一个过程 特点&#xff1a; postman断言使用js编写&#xff0c;断言写在postman的tests中 tests脚本在发送请求之后执行&#xff0c;会把断言的结果最终在testresult中进行展示 常用的postman提供的断言片…

在Django项目中的各个应用中分别编写路由配置文件urls.py

目录 01-通过命令建立三个应用02-配置路由 /index/、/app1/index/、/app2/index/02-1-配置路由 /index/ 并将各个应用的urls.py文件包含进主路由目录中02-02-配置路由/app1/index/02-03-配置路由/app2/index/ 03-编写各个应用的视图views.py 文件04-注册模板文件所在目录05 创建…

CVPR23 | 可编辑3D场景布局的文本引导多对象合成NeRF

来源&#xff1a;投稿 作者&#xff1a;橡皮 编辑&#xff1a;学姐 论文链接&#xff1a;https://arxiv.org/abs/2303.13843 0.背景&#xff1a; 最近&#xff0c;文本到图像生成通过将视觉-语言预训练模型与扩散模型相结合&#xff0c;取得了巨大的成功。这些突破也使得强大…

python: read excel and export excel

""" PythonAppReadExcel.py edit&#xff1a; geovindu,Geovin Du,涂聚文 date 2023-06-13 保险 """ # This is a sample Python script. # python.exe -m pip install --upgrade pip # Press ShiftF10 to execute it or replace it with your c…

orbslam 地图点观测距离范围 mfMinDistance,mfMaxDistance 的理解

目的是在不同帧不同距离的范围内观测到同一个地图点 直观理解&#xff0c;由于相机成像小孔成像近大远小 相机在距离特征点i 1米时图像金字塔第0层的 31x31图像区域&#xff0c; 类似于相机在距离 特征点i 最远约米时的图像金字塔第7层的31x31图像区域。 相机在距离特征点i 1…

桥接模式(十)

不管怎么样&#xff0c;都要继续充满着希望 上一章简单介绍了适配器模式(九), 如果没有看过, 请观看上一章 一. 桥接模式 引用 菜鸟教程里面的 桥接模式介绍: https://www.runoob.com/design-pattern/bridge-pattern.html 桥接&#xff08;Bridge&#xff09;是用于把抽象化…

GitHub 2800颗星,支持GPT/Transformer,字节跳动这个开源项目是怎么来的?

AI 绘画、机器翻译、多轮对话……对于各类 AI 相关的功能来说&#xff0c;总有一个痛点&#xff0c;困扰着所有训模型的算法工程师们&#xff1a; 想要效果更好&#xff0c;那么 AI 模型一般都很大&#xff0c;耗费的算力更多不说&#xff0c;运行起来还更费时间&#xff1b; 如…

关键字static,final的使用

关键字&#xff1a;static 概念 是java中的一个关键字 用于修饰成员&#xff08;成员变量和成员方法&#xff09; 类属性、类方法的设计思想 概念&#xff1a; 当我们编写一个类时&#xff0c;其实就是在描述其对象的属性和行为&#xff0c;而并没有产生实 质上的对象&#x…

使用递归SQL实现树形参数的转换(后传前)

1、什么是递归SQL 递归 SQL&#xff08;Recursive SQL&#xff09;是一种 SQL 查询语言的扩展&#xff0c;它允许在查询中使用递归算法。递归 SQL 通常用于处理树形结构或层次结构数据&#xff0c;例如组织结构、产品分类、地理位置等。 递归 SQL 语句通常包含两个部分&#xf…

大数据入门-大数据技术概述(一)

大数据入门系列文章 大数据入门-大数据是什么 一、概念 大数据技术是指在构架大数据平台的时候需要的技术。包含存储系统&#xff0c;数据库&#xff0c;数据仓库&#xff0c;资源调度&#xff0c;查询引擎&#xff0c;实时框架等。下面以我目前所了解到的一些技术做简要介绍…

React学习笔记十-生命周期(旧)

此文章是本人在学习React的时候&#xff0c;写下的学习笔记&#xff0c;在此纪录和分享。此为第十篇&#xff0c;主要介绍React非常重要的组件的生命周期(旧)。要学习react新的生命周期&#xff0c;那必须先学习旧的生命周期。 目录 1.引出生命周期概念 1.1案例 1.1.1案例卸…

snmp默认团体名/弱口令漏洞及安全加固

一、漏洞描述 SNMP&#xff08;简单网络管理协议&#xff09;被广泛用于计算机操作系统设备、网络设备等领域监测连接到网络上的设备是否有任何引起管理上关注的情况。在运行SNMP服务的设备上&#xff0c;若管理员配置不当运行默认团体名/弱口令访问,将导致敏感信息泄露。敏感…

Sentinel源码分析-ProceesorSlotChain调用链及树状资源节点

Sentinel 实现流控&#xff0c;隔离&#xff0c;降级等功能&#xff0c;本质要做两件事&#xff1a; 数据统计&#xff1a; 统计某个资源的访问数据&#xff08;QPS,RT&#xff08;响应时间&#xff09;&#xff0c;异常比例&#xff09;等信息规则判断&#xff1a; 判断流控规…

攻略 | 如何拿下奖金534万的全国人工智能大赛?

全国人工智能大赛已连续成功举办三届&#xff0c;累计吸引全球20个国家、1万多支队伍参与竞技&#xff0c;已成为人工智能领域参与规模和影响力都名列前茅的顶级赛事。作为头部科技企业、高等院校和科研院所的链接平台&#xff0c;大赛在促进产学研融合、推动多项成果落地方面成…

比后缀Ti更香的N卡全能型号回归,40显卡终于不恶心了

NVIDIA RTX 40 系显卡上市有一段时间了&#xff0c;不过大家给出的一致看法是&#xff1a;除了 4090 外&#xff0c;其他型号暂时都不值得购买&#xff01; 倒不是说他们性能多拉胯&#xff0c;主要是核心规格与价格属实不那么匹配。 特别是主流的 RTX 4060、4070 级别&#…