当前位置: 首页 > article >正文

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

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

相关文章:

  • python全栈开发是什么?
  • mac配置python出现DataDirError: Valid PROJ data directory not found错误的解决
  • 机器学习:神经网络与深度学习的原理、应用场景及优缺点
  • C++模版SFIANE应用踩的一个小坑
  • 复杂项目管理难?试试用WBS分解法,结构化细分你工作
  • 【Webpack--020】Babel辅助代码块引入
  • 系统架构设计师③:数据块系统
  • redistemplate实现点赞相关功能
  • 240604 模板进阶
  • 人检测-目标检测数据集(包括VOC格式、YOLO格式)
  • 每日C#语法题
  • 5.toString()、构造方法、垃圾回收、静态变量与静态方法、单例设计模式、内部类
  • 大贤3D家谱-一键寻找家谱本源
  • 逼近理论及应用精解【11】
  • 11.1 Linux_线程_线程相关函数
  • 多模态方法总结
  • OpenStack Yoga版安装笔记(十六)Openstack网络理解
  • Nuxt.js 应用中的 page:transition:finish 钩子详解
  • Linux系统——硬盘操作
  • 【通过WSL2安装Ubuntu24.04系统及图形化界面】