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

news/2024/12/21 21:22:42/

机器人系统仿真是通过计算机对实体机器人系统进行模拟的技术,在 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/news/1536965.html

相关文章

Vue.js 组件开发知识详解

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

RCE(remote command/code execute)远程命令注入

远程命令注入RCE RCE(remote command/code execute&#xff0c;远程命令执行)漏洞&#xff0c;一般出现这种漏洞&#xff0c;是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口&#xff0c;比如我们常见的路由器、防火墙、入侵检测等设备的web管理界面上。一般会给…

【python机器学习】线性回归 拟合 欠拟合与过拟合 以及波士顿房价预估案例

文章目录 线性回归之波士顿房价预测案例 欠拟合与过拟合线性回归API 介绍:波士顿房价预测数据属性:机器学习代码实现 拟合 过拟合 欠拟合 模拟 及处理方法(正则化处理)导包定义函数表示欠拟合定义函数表示拟合定义函数表示过拟合 正则化处理过拟合L1正则化L2正则化 线性回归之波…

数据交换的金钟罩:合理利用安全数据交换系统,确保信息安全

政府单位为了保护网络不受外部威胁和内部误操作的影响&#xff0c;通常会进行网络隔离&#xff0c;隔离成内网和外网。安全数据交换系统是专门设计用于在不同的网络环境&#xff08;如内部不同网络&#xff0c;内部网络和外部网络&#xff09;之间安全传输数据的解决方案。 使用…

mysql事务使用和事务隔离级别与sqlserver的比较

在 MySQL 中&#xff0c;事务 (Transaction) 是一个将一组 SQL 语句作为一个整体执行的机制。事务确保要么所有操作都执行成功&#xff0c;要么在遇到错误时回滚到之前的状态&#xff0c;从而保证数据库数据的一致性和完整性。 事务的四大特性&#xff08;ACID&#xff09; 事…

【Flutter 面试题】解析 Flutter 与 Native 开发优缺点:跨平台、性能比较、生态成熟度、开发效率、原生功能支持

【Flutter 面试题】解析 Flutter 与 Native 开发优缺点:跨平台、性能比较、生态成熟度、开发效率、原生功能支持 文章目录 写在前面口述回答补充说明写在前面 🙋 关于我 ,小雨青年 👉 CSDN博客专家,GitChat专栏作者,阿里云社区专家博主,51CTO专家博主。2023博客之星T…

系统架构设计师教程 第12章 12.4 信息系统架构案例分析 笔记

12.4 信息系统架构案例分析 ★★★★☆ 12.4.1 价值驱动的体系结构——连接产品策略与体系结构 1.价值模型概述 价值模型核心的特征可以简化为三种基本形式。 (1)价值期望值&#xff1a;表示对某一特定功能的需求&#xff0c;包括功能、质量和不同 级别质量的实用性。 (2)…

Docker镜像命令汇总笔记

1.Docker镜像 Docker 镜像是用于部署容器化应用的轻量级、可执行的软件包。它们包含了运行特定应用所需的所有内容&#xff0c;包括代码、运行时环境、系统工具、系统库和设置。Docker 镜像通过文件来实现不同层的分发&#xff0c;每一层对应Dockerfile中的一个指令&#xff0…