ROS学习第二十七节——URDF集成Rviz基本流程

news2024/11/23 11:39:01

前面介绍过,URDF 不能单独使用,需要结合 Rviz 或 Gazebo,URDF 只是一个文件,需要在 Rviz 或 Gazebo 中渲染成图形化的机器人模型,当前,首先演示URDF与Rviz的集成使用,因为URDF与Rviz的集成较之于URDF与Gazebo的集成更为简单,后期,基于Rviz的集成实现,我们再进一步介绍URDF语法。

需求描述:

在 Rviz 中显示一个盒状机器人

结果演示:

实现流程:

  1. 准备:新建功能包,导入依赖

  2. 核心:编写 urdf 文件

  3. 核心:在 launch 文件集成 URDF 与 Rviz

  4. 在 Rviz 中显示机器人模型

1.创建功能包,导入依赖

创建一个新的功能包,名称自定义,导入依赖包:urdf xacro

在当前功能包下,再新建几个目录:

urdf: 存储 urdf 文件的目录

meshes:机器人模型渲染文件(暂不使用)

config: 配置文件

launch: 存储 launch 启动文件

 给urdf创建子目录 urdf xacro

2.编写 URDF 文件

新建一个子级文件夹:urdf(可选),文件夹中添加一个.urdf文件,复制如下内容:

<robot name="mycar">
    <link name="base_link">
        <visual>
            <geometry>
                <box size="0.5 0.2 0.1" />
            </geometry>
        </visual>
    </link>
</robot>

3.在 launch 文件中集成 URDF 与 Rviz

launch目录下,新建一个 launch 文件,该 launch 文件需要启动 Rviz,并导入 urdf 文件,Rviz 启动后可以自动载入解析urdf文件,并显示机器人模型,核心问题:如何导入 urdf 文件? 在 ROS 中,可以将 urdf 文件的路径设置到参数服务器,使用的参数名是:robot_description,示例代码如下:

<launch>
    <!-- 1.在参数服务器载入urdf文件
            2.启动rviz -->
    <!-- name是固定的,textfile是载入urdf文件 -->
    <!-- 设置参数 -->
    <param name="robot_description" textfile="$(find urdf01_rviz)/urdf/urdf/demo01_helloworld.urdf" />

    <!-- 启动 rviz -->
    <node pkg="rviz" type="rviz" name="rviz" />

</launch>

4.在 Rviz 中显示机器人模型

roslaunch urdf01_rviz demo01_helloworld.launch

rviz 启动后,会发现并没有盒装的机器人模型,这是因为默认情况下没有添加机器人显示组件,需要手动添加,添加方式如下:

 

添加一个坐标系,显示参数更加直观

设置完毕后,可以正常显示了

5.优化 rviz 启动

重复启动launch文件时,Rviz 之前的组件配置信息不会自动保存,需要重复执行步骤4的操作,为了方便使用,可以使用如下方式优化:首先,将当前配置保存进config目录

 

然后,launch文件中 Rviz 的启动配置添加参数:args,值设置为-d 配置文件路径


<launch>
    <param name="robot_description" textfile="$(find urdf01_rviz)/urdf/urdf/demo01_helloworld.urdf" />
    <node pkg="rviz" type="rviz" name="rviz" args="-d $(find urdf01_rviz)/config/show_mycar.rviz" />
</launch>

再启动时,就可以包含之前的组件配置了,使用更方便快捷。

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

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

相关文章

ROS学习第二十八节——URDF之robot link

1.概述 URDF 文件是一个标准的 XML 文件&#xff0c;在 ROS 中预定义了一系列的标签用于描述机器人模型&#xff0c;机器人模型可能较为复杂&#xff0c;但是 ROS 的 URDF 中机器人的组成却是较为简单&#xff0c;可以主要简化为两部分:连杆(link标签) 与 关节(joint标签)&…

数据库基础篇 《11.数据处理之增删改》

1. 插入数据 1.1 实际问题 解决方式&#xff1a;使用 INSERT 语句向表中插入数据。 1.2 方式1&#xff1a;VALUES的方式添加 使用这种语法一次只能向表中插入一条数据。 情况1&#xff1a;为表的所有字段按默认顺序插入数据 INSERT INTO 表名 VALUES (value1,value2,....);…

03.初始React脚手架

一.使用create-react-app创建react应用 1.react脚手架 xxx脚手架&#xff1a;用来帮助程序员快速创建一个基于xxx库的模板项目 包含了所有需要的配置&#xff08;语法检查&#xff0c;jsx编译&#xff0c;devServer…&#xff09;下载好了所有相关的依赖可以直接运行一个简单…

硬件还不够!激光雷达「开卷」感知算法+数据闭环

激光雷达正式进入量产周期&#xff0c;而如何用好激光雷达&#xff0c;并形成更优更具性价比的激光雷达系统方案&#xff0c;助力激光雷达量产上车并真正用好激光雷达系统&#xff0c;将是接下来两年激光雷达赛道的主要方向。 在近期开幕的上海国际车展上&#xff0c;亮道智能…

学系统集成项目管理工程师(中项)系列10_立项管理

1. 系统集成项目管理至关重要的一个环节 2. 重点在于是否要启动一个项目&#xff0c;并为其提供相应的预算支持 3. 项目建议 3.1. Request for Proposal, RFP 3.2. 立项申请 3.3. 项目建设单位向上级主管部门提交的项目申请文件&#xff0c;是对拟建项目提出的总体设想 3…

延迟渲染 Deferred Rendering

前向渲染 先计算光照再裁剪。 前向渲染是现在最基础&#xff0c;也是最多引擎使用的标准。前向渲染的流程是给定一个几何体&#xff0c;引擎对其进行从顶点到像素着色器的一系列计算&#xff0c;然后输出到最终的图像缓冲区。场景中有多个几何体时&#xff0c;引擎就是对其挨个…

薪资18K需要什么水平?来看看98年测试工程师的面试全过程…

我的情况 大概介绍一下个人情况&#xff0c;男&#xff0c;本科&#xff0c;三年多测试工作经验&#xff0c;懂python&#xff0c;会写脚本&#xff0c;会selenium&#xff0c;会性能&#xff0c;然而到今天都没有收到一份offer&#xff01;从年后就开始准备简历&#xff0c;年…

西交大-一百本书-解决不能粘贴的限制

快毕业了&#xff0c;要填四个一百&#xff0c;其他三个都几分钟就填完了。只有读一百本书要写读书笔记且不能粘贴&#xff0c;防谁呢真是的。发现一种解决不能粘贴限制的方法。顺道附上利用ChatGpt快速生成书评的方法。 四个一百网址 一、 解除粘贴限制 以edge浏览器为例 登…

Python|勘测定界TXT坐标点转shp文件——Arcpy实现

平时日常工作中,经常会遇到txt格式的测绘数据,这类数据通常只有不同地块的界址点集和坐标系信息,没法直接导入GIS软件中进行分析。拿到这类原始文本文件,首要工作就是将之转换为shp图层数据。 今天,主要分享两种转shp数据的方法,一种是在arcmap中直接转换,另一种是通过…

springboot+RateLimiter+AOP自定义注解限流

springbootRateLimiterAOP自定义注解限流 RateLimiter简介springboot集成RateLimiterpom.xml引入RateLimiter常用api代码实现自定义注解Limiter限流切面验证 RateLimiter简介 RateLimiter是Guava库中的一个限流器&#xff0c;它提供如下功能&#xff1a; (1)基于PPS进行限流 (…

论文推荐:基于联合损失函数的多任务肿瘤分割

以FFANet为主干&#xff0c;加入分类的分支&#xff0c;将模型扩展为多任务图像分割框架&#xff0c;设计了用于分类和分割的联合损失函数。 FFANetMTL 1、FFANet和分割分支 FFANet作为骨干网络&#xff0c;作为对VoVNet的重新设计和优化&#xff0c;FFANet在骨干网中加入了残…

SpringMVC请求与响应

文章目录 请求与响应请求映射路径请求传参传递普通参数传递实体类参数传递数组参数传递集合参数传递JSON参数传递日期参数 响应数据 请求与响应 请求映射路径 请求映射路径是通过注解: RequestMapping 类型&#xff1a;方法注解, 类注解 位置&#xff1a;SpringMVC控制器方法…

少儿编程 中国电子学会图形化编程等级考试Scratch编程一级真题解析(判断题)2023年3月

2023年3月scratch编程等级考试一级真题 判断题(共10题,每题2分,共20分) 26、在角色列表区和造型标签页都可以修改角色的名称。 答案:错 考点分析:考查Scratch平台使用,只有角色区可以修改角色的造型名称,造型标签不能修改,所以答案错误 27、可以在角色中切换舞台的…

Java核心技术 卷1-总结-7

Java核心技术 卷1-总结-7 lambda 表达式方法引用构造器引用变量作用域异常分类声明受查异常 lambda 表达式 方法引用 有时&#xff0c; 可能已经有现成的方法可以完成你想要传递到其他代码的某个动作。例如&#xff0c; 假设你希望只要出现一个定时器事件就打印这个事件对象。…

使用@Scope注解设置组件的作用域

前言 Spring容器中的组件默认是单例的&#xff0c;在Spring启动时就会实例化并初始化这些对象&#xff0c;并将其放到Spring容器中&#xff0c;之后&#xff0c;每次获取对象时&#xff0c;直接从Spring容器中获取&#xff0c;而不再创建对象。 1.Scope注解概述 Scope注解能…

【uni-app】【01】底部导航栏与页面切换

1.(配置文件在哪)uni-app 路由控制是在 pages.json文件中的。 2.(基本配置项有哪些)初学的时候主要有三个配置项&#xff0c;①pages ② globalStyle ③ tabbar [!TOC] 接下来主要是对这三个配置项做一个简单介绍。 pages 负责页面管理。不需要自己写的&#xff0c;你在项目的p…

【Scala入门】scala基础语法:类和对象,变量和常量

上一篇请移步【Scala入门】Scala下载及安装&#xff08;Windows&#xff09;以及Idea创建第一个scala项目_水w的博客-CSDN博客 目录 一、Scala 二、Scala基础语法 2.1 注释与标识符规范 2.2 变量与常量 【案例&#xff1a;变量声明和赋值】 2.3 object 【案例&#xff1…

合并二叉树-递归法

1题目 给你两棵二叉树&#xff1a; root1 和 root2 。 想象一下&#xff0c;当你将其中一棵覆盖到另一棵之上时&#xff0c;两棵树上的一些节点将会重叠&#xff08;而另一些不会&#xff09;。你需要将这两棵树合并成一棵新二叉树。合并的规则是&#xff1a;如果两个节点重叠…

gdb调试常用指令及案例讲解

文章目录 前言一、常用指令二、案例说明1、测试源文件2、编译和调试 三、其他指令四、案例说明 前言 GDB是一个由GNU开源组织发布的、UNIX/LINUX 操作系统下的、基于命令行的、功能强大的程序调试工具。 GDB 支持断点、单步执行、打印变量、观察变量、查看寄存器、查看堆栈等调…

【JavaEE】_2.文件与IO

目录 1.文件概述 1.1 文件的概念 1.2 文件的存储 1.3 文件的分类 1.4 目录结构 1.5 文件操作 1.5.1 文件系统操作 1.5.2 文件内容操作 2. Java文件系统操作 2.1 File类所处的包 2.2 构造方法 2.3 方法 2.3.1 与文件路径、文件名有关的方法 2.3.2 文件是否存在与普…