(转载)Rviz三维可视化

ROS Rviz三维可视化指南
本文详细介绍在ROS环境中安装和使用Rviz进行三维数据可视化的步骤。从安装ROS完整版开始,到启动Rviz,再到如何添加显示插件以订阅和显示各种数据类型,如激光雷达、坐标轴和地图等。此外,还介绍了Rviz的插件扩展机制,为开发者提供了自定义显示插件的方法。

Rviz三维可视化

一、安装

添加ROS源:

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

添加ROS源秘钥:

sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116

更新源

sudo apt-get update

安装ROS完整版:(由于使用Rviz,PCL等模块,请务必安装完整版)

sudo apt-get install ros-kinetic-desktop-full
sudo apt-cache search ros-kinetic

初始化ROS:

sudo rosdep init
rosdep update

添加环境变量

echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
source ~/.bashrc

更新ROS环境变量

source /opt/ros/kinetic/setup.bash

测试ROS是否成功安装:
开启一个新的Teminnal,输入:

roscore

测试Rviz
开启一个新的Teminnal,输入:

rviz

成功显示rviz界面如下:
在这里插入图片描述

二、安装并运行rviz

rviz已经集成在桌面完整版的ROS系统当中,如果已经成功安装了桌面完整版的ROS,可以直接跳过这一步骤,否则,请使用如下命令进行安装:

sudo apt-get install ros-kinetic-rviz

安装完成后,在终端中分别运行如下命令即可启动ROS系统和rviz平台:

roscore

rosrun rviz rviz

启动成功的rviz主界面如下图所示:

在这里插入图片描述

该界面主要包含以下几个部分:

    0 :3D视图区,用于可视化显示数据,目前没有任何数据,所以显示黑色
    1 :工具栏,提供视角控制、目标设置、发布地点等工具
    2 :显示项列表,用于显示当前选择的显示插件,可以配置每个插件的属性
    3 :视角设置区,可以选择多种观测视角
    4 :时间显示区,显示当前的系统时间和ROS时间

rviz的运行已经没问题了,那么如何将数据在rviz中可视化显示呢?

三、数据可视化

进行数据可视化的前提当然是要有数据,假设需要可视化的数据以对应的消息类型发布,我们在rviz中使用相应的插件订阅该消息即可实现显示。

首先,需要添加显示数据的插件。点击rviz界面左侧下方的“Add”按键,rviz会将默认支持的所有数据类型的显示插件罗列出来,如下图所示:

在这里插入图片描述

在列表中选择需要的数据类型插件,然后在“DisplayName”里填入一个唯一的名称,用来识别显示的数据。例如显示两个激光传感器的数据,可以分别添加两个LaserScan类型的插件,命名为Laser_base和Laser_head进行显示。

添加完成后,rviz左侧的Dispaly中会列出已经添加的显示插件;点击插件列表前的加号,可以打开一个属性列表,根据需求设置属性。一般情况下,“Topic”属性较为重要,用来声明该显示插件所订阅的数据来源,如果订阅成功,在中间的显示区应该会出现可视化后的数据。

在这里插入图片描述

如果显示有问题,请检查属性区域的“Status”状态。Status有四种状态:OK、Warning、Error和Disabled,如果显示的状态不是OK,那么请查看错误信息,并详细检查数据发布是否正常。

在这里插入图片描述

四、插件扩展机制

rviz是一个三维可视化平台,默认可以显示下表所示的通用类型数据,其中包含坐标轴、摄像头图像、地图、激光等数据。

在这里插入图片描述

但作为一个平台,rviz可以显示的数据不仅仅如此。rviz支持插件扩展机制,以上这些数据的显示都基于默认提供的相应插件。如果需要添加其他数据的显示,也可以通过编写插件的形式进行添加。关于rviz插件机制的使用,可参考以下链接:http://www.guyuehome.com/945

转载自:http://www.guyuehome.com/2213

4. 坐标系映射 input:body frame,即机器人在三维点云坐标系下的位姿 output: body_2d frame,即机器人在二维栅格地图坐标系下的位姿 由于fast_lio_localization输出的 body frame是当前机器人在三维点云坐标系下的位姿,而move_base需要的map frame是二维栅格地图坐标系下的坐标body_2d,因此需要进行坐标系转换。 此处需要根据你的雷达安装方式进行相应的转换。如:你的雷达是正向安装,或者正向稍微倾斜一点安装,即mid360的底部始终指向地面。这种情况下,对于坐标系的位置,只需要把body frame中的(x,y,z)(x,y,0)赋给body_2d即可。同时,对于坐标系的姿态,把body frame 中的四元数(x,y,z,w)(0,0,z,w)赋给body_2d即可。 这样最后的效果就是,3d中的机器人坐标系映射到二维body_2d,位置信息z始终为0,而位置信息x,y始终跟随body frame同步。同时姿态信息只有yaw轴会跟着3d中的机器人同步。这样坐标系body_2d的xy轴就可以始终贴合地图,便于路径规划。 如果你的机器人将mid360反装,即底部指向天空,你需要修改tf的转换 此处的代码请见: \sentry_nav\src\Trans_TF_2d.cpp 如何修改tf发布和订阅请见: tf/Tutorials(ps: 没有找见很好的中文材料,且英文教程和源码比较官方详细) ———————————————— 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文链接:https://blog.youkuaiyun.com/weixin_52612260/article/details/134124028
06-07
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值