ROS工具RViz可视化3D空间的一些错误的解决方案

news2024/11/18 15:47:04

1、引言

RViz是ROS的一个可视化3D空间的工具,它用于帮助用户在ROS系统中导航、查看和交互。RViz可以显示来自各种ROS节点的信息,例如传感器数据、机器人的状态和路径等。通过RViz,用户可以以图形方式查看和交互各种ROS数据,非常直观便捷。

常见的一些用途:
机器人模型:可以在3D空间中查看机器人的模型,包括机器人的姿态、位置和速度等。
传感器数据:通过显示图像或点云数据,可以帮助用户查看机器人的周围环境。
路标:可以在地图上标记特定的点或对象,这些标记可以用于导航或其他应用。
路径规划:通过可视化路径规划机器人的轨迹,帮助用户更好地理解机器人的行为。
状态信息:例如电池电量、机器人当前的状态等。

2、安装与启动rviz

一般都是ROS自带的,如果没有自带的情况,可以自己单独再次安装,需要看自己系统版本来选择,我这里是Ubuntu18,所以就是melodic,如果是Ubuntu 20的版本,就选择修改为noetic

我们可以使用命令来查看ROS版本:printenv ROS_DISTRO

确定了版本就可以安装了:sudo apt-get install ros-melodic-rviz

对于安装ROS的可以查阅:Ubuntu18.04版本安装ROS及出现错误的处理方法
安装好了之后,我们接着上一篇文章的内容,分别开启多个终端:

roscore
cd ~/mywanderbot_ws/src/mywanderbot/src
python key_publisher.py
cd ~/mywanderbot_ws/src/mywanderbot/src
./keys_to_twist_ramps.py _linear_scale:=0.5 _angular_scale:=1.0 _linear_accel:=1.0 _angular_accel:=1.0

或者直接运行launch文件:roslaunch mywanderbot test.launch

然后我们启动机器人:roslaunch turtlebot3_gazebo turtlebot3_world.launch

最后我们启动rviz:rosrun rviz rviz

3、RobotModel错误 

开启rviz工具之后,我们先来添加一个机器人,在界面的左下角的位置,点击Add,在弹出框中选择RobotModel,如下图:

我们发现Add进来的RobotModel是红颜色高亮的,状态是错误Status:Error,右边的机器人是白色的,如下图: 

解决方法:

sudo apt-get install unicode
sudo apt-get install ros-melodic-joint-state-publisher-gui

安装好了之后,重启ros之后再打开:rosrun rviz rviz
其中melodic取决于Ubuntu版本(本机是Ubuntu18)不同而不同,我们在启动roscore等地方也是可以看到的,还可以使用参数来获取:rosparam get /rosdistro 

4、No transform错误

上面选择坐标系之后,如果问题还是没有解决,我们接下来看下里面的错误提示信息,如下图:  

No transform from [base_link] to [base_footprint]
解决方法,分别启动下面两个节点:

rosrun joint_state_publisher joint_state_publisher
rosrun robot_state_publisher robot_state_publisher

一个是发布关节状态信息JointState给机器人:rosmsg show JointState

[sensor_msgs/JointState]:
std_msgs/Header header
  uint32 seq
  time stamp
  string frame_id
string[] name
float64[] position
float64[] velocity
float64[] effort

另一个就是将URDF以及接收到的位姿,通过运动学的计算,使用tf进行发布。

当然这种启动节点的方法,我们可以将其写入到我们的test.launch文件里面:

cd ~/mywanderbot_ws/src/mywanderbot/launch
gedit test.launch 
<launch>
<node name="key_publisher" pkg="mywanderbot" type="key_publisher.py" respawn="false" output="screen" />
<node name="keys_to_twist_ramps" pkg="mywanderbot" type="keys_to_twist_ramps.py" respawn="false" output="screen">
  <param name="linear_scale" type="double" value="0.5" />
  <param name="angular_scale" type="double" value="1.0" />
  <param name="linear_accel" type="double" value="1.0" />
  <param name="angular_accel" type="double" value="1.0" />
</node>

<include file="$(find turtlebot3_gazebo)/launch/turtlebot3_world.launch" />
<node  name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher"/> 
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
<node name="rviz" pkg="rviz" type="rviz" />
</launch>

这样就方便很多了,只需要运行launch文件即可:roslaunch mywanderbot test.launch

其中需要注意的是在新增的节点之前,需要通过include来先加载机器人的launch文件

<include file="$(find turtlebot3_gazebo)/launch/turtlebot3_world.launch" />

不然会出错。最后的节点就是rviz。运行之后,就一切正常了,如下图:

其他一些可视化工具,有兴趣的朋友可以查阅:机器人TF坐标系变换与一些可视化工具的应用

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

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

相关文章

连锁药店的自有品牌之争:老百姓大药房能否突围?

文丨新熔财经 作者丨楷楷 近年来&#xff0c;随着医保谈判药品的“双通道”&#xff08;即消费者可在有资质的药店买到新进医保的创新药&#xff09;&#xff0c;以及“门诊统筹”将药店纳入医保报销等医改政策出台&#xff0c;药企开始重新重视起零售药店渠道&#xff0c;很…

C++对象模型(18)-- 函数语义学:函数调用过程

1、栈帧结构 函数执行是通过系统栈来实现的&#xff0c;系统栈分为若干个栈帧。 栈帧就是函数运行的环境&#xff0c;每个函数在被调用时都会在系统栈区形成一个叫栈帧的结构。一次函数调用相关的数据保存在栈帧中&#xff0c;比如函数参数、函数的局部变量、函数执行完后的返…

Leetcode 21 合并两个有序链表 (链表)

Leetcode 21 合并两个有序链表 &#xff08;链表&#xff09; 解法1 复杂的第一版本&#xff08;优化大于和等于合并见方法二&#xff09;解法2 注意注意&#xff1a;先添加元素toadd.next list1&#xff0c;添加之后才可以移动指针toadd toadd.next 解法1 复杂的第一版本&a…

数字电路常用芯片合集

前言 本文归纳了本科数字电路中常见的芯片型号及其功能&#xff0c;分为以下几类&#xff1a; 组合逻辑电路芯片 时序逻辑电路芯片 D/A A/D相关芯片 组合逻辑电路芯片 优先编码器74HC148 功能&#xff1a;多→1&#xff0c;选通 逻辑框图 功能表 补充&#xff1a;可以…

react native 使用夜神模拟器开发调试 windows+android

执行adb devices, 提示List of devices attached 打开本地sdk目录中的platform-tools文件夹&#xff0c;复制下面3个文件 打开夜神模拟器安装目录中的bin目录&#xff0c;把复制出来的文件复制替换到bin目录中 在复制一份platform-tools目录中的adb.exe&#xff0c;重命名为…

java最新Springboot3+微服务实战12306高性能售票系统全套开发课程

java最新Springboot3微服务实战12306高性能售票系统全套开发课程 视频课程在文末获取 第1章 课程介绍与学习指南。 1-1 课前必读&#xff08;不读错过一个亿&#xff09; 1-2 课程导学 1-3 为什么要选择最新版本SpringBoot3和JDK17&#xff1f; 1-4 在线demo网站演示 第2…

现货黄金的走势怎么看

成功的现货黄金交易者&#xff0c;都有自己一套的看行情的方法&#xff0c;以及自己最熟悉的交易获利机会&#xff0c;这使他们获利的胜率能够保持在一定的水平之上&#xff0c;长远来说&#xff0c;这也使他们成为市场上的赢家。 现货黄金的价格走势总在不断的变化之中&#x…

GEE:绘制土地利用类型面积分布柱状图

作者:CSDN @ _养乐多_ 本文记录了,在 Google Earth Engine (GEE)中进行随机森林分类后绘制不同类型面积分布柱状图的代码片段。 完整代码请看博客《GEE:随机森林分类教程(样本制作、特征添加、训练、精度、参数优化、贡献度、统计面积)》 柱状图效果如下所示, 文章目…

Pulsar-Pulsar 之 Functions

Pulsar 之 Functions Pulsar FunctionsPulsar Functions是什么&#xff1f;为什么使用Pulsar Functions&#xff1f;实例 完全限定函数名函数实例函数workerFunctions 运行时处理保证和订阅类型上下文函数消息类型Window functionwindow的类型快速开始启用有状态的函数使用Puls…

通讯协议学习之路:RS485协议理论

通讯协议之路主要分为两部分&#xff0c;第一部分从理论上面讲解各类协议的通讯原理以及通讯格式&#xff0c;第二部分从具体运用上讲解各类通讯协议的具体应用方法。 后续文章会同时发表在个人博客(jason1016.club)、CSDN&#xff1b;视频会发布在bilibili(UID:399951374) 序&…

接口测试vs功能测试

接口测试和功能测试的区别&#xff1a; 本文主要分为两个部分&#xff1a; 第一部分&#xff1a;主要从问题出发&#xff0c;引入接口测试的相关内容并与前端测试进行简单对比&#xff0c;总结两者之前的区别与联系。但该部分只交代了怎么做和如何做&#xff1f;并没有解释为什…

“一键替换视频封面,高效批量剪辑从未如此简单

在一个充满竞争和创意的世界&#xff0c;吸引人的视频封面往往能够决定内容的成败。今天&#xff0c;我将向大家介绍一种可以轻松替换视频封面图片的实用技巧&#xff0c;让你在创作中更胜一筹&#xff01; 首先&#xff0c;我们要进入媒体梦工厂主页面&#xff0c;并点击“视…

Go语言入门心法(十一): 文件处理

Go语言入门心法(一): 基础语法 Go语言入门心法(二): 结构体 Go语言入门心法(三): 接口 Go语言入门心法(四): 异常体系 Go语言入门心法(五): 函数 Go语言入门心法(六): HTTP面向客户端|服务端编程 Go语言入门心法(八): mysql驱动安装报错onnection failed Go语言入门心法(…

Java中的代码重构:技巧、优秀实践与方法

什么是 Java 代码重构&#xff1f; Java 代码重构是一种在不影响代码外部行为的前提下进行的代码优化&#xff0c;它通过渐进和小规模的优化来改善现有代码的结构和质量。重构的目标是提高代码的可读性、性能、可维护性和效率等。 Martin Fowler 是这个领域的权威的大牛和非常…

前端 js 之 代码执行的一个过程 02

嘿&#xff0c;欢迎你来 &#xff01;&#x1f495; 文章目录 前言一、运行一个 js 文件二、运行环境三、js执行代码的过程&#xff08;普通变量&#xff09;四、打印 window五、js执行代码的过程&#xff08;函数变量&#xff09;六、函数调用函数的过程注意&#xff01;&…

Seata入门系列【10】分布式事务环境下数据库批量插入和批量更新操作

1 前言 批量插入和批量更新是常用的数据库操作&#xff0c;接下来我们分析下在seata 中如何使用。 如果使用循环遍历插入&#xff0c;效率是很慢的&#xff0c;所以一般的ORM框架都是支持批量操作的&#xff0c;接下来以Mybatis 为例&#xff0c;深入了解下如何使用批处理。 …

c语言练习94:分割链表

分割链表 给你一个链表的头节点 head 和一个特定值 x &#xff0c;请你对链表进行分隔&#xff0c;使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你不需要 保留 每个分区中各节点的初始相对位置。 示例 1&#xff1a; 输入&#xff1a;head [1,4,3,2,5,2], x…

python小游戏:打砖块完整代码

代码如下 import pygame import sys# 初始化Pygame pygame.init()# 游戏窗口尺寸 WIDTH, HEIGHT 800, 600# 颜色定义 WHITE (255, 255, 255) BLUE (0, 0, 255) GREEN (0, 255, 0)# 创建游戏窗口 win pygame.display.set_mode((WIDTH, HEIGHT)) pygame.display.set_captio…

2023年高校大数据实验室建设及大数据实训平台整体解决方案

大数据实验室作为支撑高校人培方案实施的核心设施&#xff0c;大数据实训实验室的建设一定要与学科建设、人才培养充分融合&#xff0c;是一个包含物理空间硬件资源软件资源课程内容的系统化工程。高校大数据实验室建设&#xff0c;除了考虑物理空间与硬件资源外&#xff0c;重…

实验室超声波清洗机的作用

实验室超声波清洗机的作用是什么&#xff1f;顾名思义&#xff0c;其主要作用是清洗。超声波清洗机是实验室中必不可少的清洗装置&#xff0c;利用超声波在液体中的空化效应&#xff0c;产生空化气泡&#xff0c;由于正负压的作用下&#xff0c;空化气泡会在短时间内生成并爆破…