【ROS】机器人系统仿真-URDF集成Rviz基本流程

server/2024/10/17 18:56:28/

机器人系统仿真是通过计算机对实体机器人系统进行模拟的技术,在 ROS 中,仿真实现涉及的内容主要有三:对机器人建模(URDF)、创建仿真环境(Gazebo)以及感知环境(Rviz)等系统性实现。

1.URDF

URDF可以以一种 XML 的方式描述机器人的部分结构,比如底盘、摄像头、激光雷达、机械臂以及不同关节的自由度.....,该文件可以被 C++ 内置的解释器转换成可视化的机器人模型,是 ROS 中实现机器人仿真的重要组件。

2.Gazebo

Gazebo是一款3D动态模拟器,用于显示机器人模型并创建仿真环境,能够在复杂的室内和室外环境中准确有效地模拟机器人。与游戏引擎提供高保真度的视觉模拟类似,Gazebo提供高保真度的物理模拟,其提供一整套传感器模型,以及对用户和程序非常友好的交互方式。

运行命令        $gazebo

问题1:[Err] [REST.cc:205] Error in REST request

解决:$sudo gedit ~/.ignition/fuel/config.yaml

然后将url : https://api.ignitionfuel.org注释,添加url: https://api.ignitionrobotics.org

3.rviz

rviz以三维方式显示ROS消息,可以将 数据进行可视化表达。例如:可以显示机器人模型,可以无需编程就能表达激光测距仪(LRF)传感器中的传感 器到障碍物的距离,RealSense、Kinect或Xtion等三维距离传感器的点云数据(PCD, Point Cloud Data),从相机获取的图像值等。

运行命令        $rviz

---------------------------------------------------------------------------------------------------------------------------------

下载素材

$ git clone https://github.com/zx595306686/sim_demo.git

---------------------------------------------------------------------------------------------------------------------------------

URDF集成Rviz基本流程

URDF 不能单独使用,需要结合 Rviz 或 Gazebo,URDF 只是一个文件,需要在 Rviz 或 Gazebo 中渲染成图形化的机器人模型。

需求描述:在Rviz中显示一个盒装机器人

实现流程:

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

        2.核心:编写 urdf 文件

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

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

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

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

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

        urdf:存储 urdf 文件的目录

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

        config:配置文件

        launch:存储 launch 启动文件

2.编写URDF文件

在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文件--><param name="robot_description" textfile="$(find 功能包名)/urdf/urdf/demo01_helloworld.urdf" /><!--2.启动rviz--><node pkg="rviz" type="rviz" name="rviz" />
</launch>

运行launch文件        $roslaunch 功能包名 launch文件名

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

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

方框4:默认是map,将此处修改为urdf文件中机器人地盘名称即可正常显示。

5.优化rviz启动

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

将当前配置保存进config目录

方框3:保存在当前工作空间下的(步骤1新建的config文件夹)。

修改launch文件中rviz的配置

<launch><!--1.在参数服务器载入urdf文件--><param name="robot_description" textfile="$(find urdf01_rviz)/urdf/urdf/demo01_helloworld.urdf" /><!--2.启动rviz--><node pkg="rviz" type="rviz" name="rviz" args="-d $(find urdf01_rviz)/config/show_mycar.rviz" />
</launch>

 


http://www.ppmy.cn/server/132026.html

相关文章

JavaScript基础入门

目录 1. JavaScript简介 2. 基本语法 2.1 变量声明 2.2 数据类型 2.3 运算符 3. 控制结构 3.1 条件语句 3.2 循环语句 4. 函数 5. 数组与对象 5.1 数组 5.2 对象 6. DOM 操作 总结 JavaScript 是当今最流行的编程语言之一&#xff0c;它主要用于网页开发&#xf…

RTOS系统移植

一、完成系统移植 系统移植上官网寻找合适的系统包&#xff0c;下载后将文件移植入工程文件 二、创建任务句柄、内核对象句柄&#xff08;信号量&#xff0c;消息队列&#xff0c;事件标志组&#xff0c;软件定时器&#xff09;、声明全局变量、声明函数 三、创建主函数&#…

SpringBoot教程(三十二) | SpringBoot集成Skywalking链路跟踪

SpringBoot教程&#xff08;三十二&#xff09; | SpringBoot集成Skywalking链路跟踪 Skywalking是什么&#xff1f;Skywalking与JDK版本的对应关系Skywalking下载Skywalking 数据存储Skywalking 的启动部署探针方式一&#xff1a;IDEA 部署探针方式二&#xff1a;Java 命令行启…

【计算机网络 - 基础问题】每日 3 题(二十九)

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?typeblog &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞…

UE5 猎户座漂浮小岛 01 资源 玩家角色

UE5 猎户座漂浮小岛 01 资源 玩家角色 1.资源 1.1 准备资源 创建项目Orion创建目录结构 资源下载使用虚拟学习工具包 1.2 使用资源 1.2.1 修改默认地图 复制BlockGame下的地图到_Orion下的地图中 重命名为OrionMap 编辑-项目设置-地图和模式-默认地图 1.2.2 修改玩家角色 …

AXI GPIO按键控制——ZYNQ学习笔记4

一、AXI GPIO接口简介 是什么&#xff1f;是PL部分的一个IP软核&#xff0c;实现通用输入输出接口的功能&#xff0c;并通过AXI协议实现与处理系统通信&#xff0c;方便控制与拓展GPIO接口。 AXI GPIO IP 核为 AXI 接口提供了一个通用的输入/输出接口。 与 PS 端的 GPIO 不同&…

时代在召唤—电力行业投资逻辑解析及公司参考

每个经济体不同阶段都需要有不同的蓄水池来承载社会经济增长及产业发展溢出的财富和资金&#xff0c;20多年前&#xff0c;我们选择了地产。现在地产不行了&#xff0c;必须创造新的蓄水池&#xff0c;目前来看&#xff0c;应该大力发展资本市场应该算符合当前阶段比较好的选择…

面腾讯后台开发,二面挂掉了,,,

随着各厂秋招的开启&#xff0c;收到面试邀请的同学也越来越多。在当年和我一起找实习的同学里面&#xff0c;有实力较强的同学收到了腾讯后台开发的校招面试邀请。但面试不止是实力的竞争&#xff0c;也有很重要的运气的因素。 虽然我的同学在腾讯后台开发的二面中挂掉了&…