基于ROS的机器人模型建立及3D仿真【物理/机械意义】

前言


在这里插入图片描述

在前面的博客中,我们已经学习过了如何对目标机器人进行数学意义上的模型建立,以便实现基础控制,而在实际生活中,由于机器人造价高昂,我们往往难以获得实际的目标机器人进行部署研究,这就需要我们对目标进行仿真,采用编程或可视化方法建立机器人3D模型,从而在ROS中使用RVIZ和GAZEBO组件进行相应的仿真分析。本篇文章首先分析了建立机器人3D模型的基本方法,包括使用URDF文件和Gazebo可视化建立等,在之后简单介绍了使用机器人3D模型进行ROS仿真的基本流程,主要涉及RVIZ和Gazebo两个强大的功能组件。


一、建立3D模型

1. URDF文件

  • 概念:Unified Robot Description Format ,统一(标准化)机器人描述格式,主要使用XML格式描述机器人模型结构。

在这里插入图片描述

  • 使用方法:通过XML格式描述机器人结构,包含底盘、摄像头、雷达等传感器,以及机械臂和不同关节的自由度,该文件通过C++内置的解释器可以转换成可视化机器人模型。

如下代码就是一个简单的机器人模型代码文件:

<robot name="mycar">
    <link name="base_link">
        <visual>
            <geometry>
                <box size="0.5 0.2 0.1" />
            </geometry>
        </visual>
    </link>
</robot>
  • 仿真:使用URDF创建机器人模型,之后通过Gazebo搭建仿真环境,通过RVIZ进行3D可视化分析机器人模型,最后通过传感器获取环境数据最终实现控制仿真

2. 可视化建立3D模型并转换

  • 建模流程:通过Gazebo或者一些其他的三维建模软件,例如Solidworks等,利用可视化的方法建立3D模型,最后通过转换导出成为URDF文件。Solidworks的界面如下图所示:

在这里插入图片描述

  • Gazebo可视化建模:对于Gazebo而言,存在一种新的机器人模型文件,为SDF格式,改进了一些URDF的缺点,在后续的Gazebo教程中,会深入进行分析Gazebo的相关操作和知识。并且对于Gazebo来说,在仿真中更多的也是作为一种仿真环境的建立,如下图所示:

在这里插入图片描述

  • Solidwork模型转换:

在工具栏中选择下拉选项中的Tool,选择Export as URDF可得:

在这里插入图片描述

通过选择坐标系和机器人关节等,最终可以导出完整对应的URDF文件;


二、ROS仿真流程

1. 机器人系统仿真

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

  • 作用:

仿真的优点:

  1. 成本低:实际机器人的成本常常高达几十W,风险大,难以进行实际研究;
  2. 效率高:强大的仿真软件可以为我们提供大量真实的仿真环境,可以在短时间内提高测试效率和覆盖率
  3. 安全性:由于在虚拟世界中进行的实验研究,可以避免耗损等安全问题。

仿真的缺点:

  1. 环境失真:仿真软件的物理引擎无法真实代替现实世界;
  2. 硬件失真:仿真器构建的是关节驱动器(电机&齿轮箱)、传感器与信号通信的绝对理想情况,目前不支持模拟实际硬件缺陷或者一些临界状态等情形
  • 涉及组件:

URDF,统一机器人描述格式:通过XML格式的文件描述机器人结构。可转换成可视化机器人模型,具体在上述已有介绍

RVIZ,ROS的三维可视化工具:通过三维方式显示ROS消息数据,可以继承雷达、激光等传感器获取环境数据,并进行可视化表达

安装方法:

sudo apt install ros-[ROS_DISTRO]-rviz

使用方法:命令rviz或者rosrun rviz rviz

Gazebo,ROS的3D动态模拟器:用于显示机器人模型并创建仿真环境,提供高保真度的物理模拟及传感器模型,拥有非常良好的交互方式

安装方法:

sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" 
wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
sudo apt update
sudo apt install gazebo11 
sudo apt install libgazebo11-dev

使用方法:命令gazebo或者rosrun gazebo_ros gazebo

注意:在实际的仿真中,使用 URDF 结合 Gazebo 搭建仿真环境,并结合 Rviz 显示感知的虚拟环境信息,结合使用完成综合应用


2. URDF集成RVIZ流程

① 创建功能包,导入依赖项

  1. 自定义名称,创建性功能包(依赖项:urdf、xacro)
  2. 功能包下新建目录:
    urdf:存储urdf文件;meshes:存储机器人模型渲染文件;config:存储配置文件;launch:存储启动文件

② 编写urdf文件:在urdf文件夹下新建子级文件夹urdf,添加.urdf文件,内容暂略;

③ 编写launch文件:启动RVIZ、导入urdf文件、显示机器人模型,代码如下:

<launch>

    <!-- 设置参数 -->
    <param name="robot_description" textfile="$(find 包名)/urdf/urdf/urdf01_HelloWorld.urdf" />

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

</launch>

④ 修改RVIZ配置:默认情况没有机器人显示组件,手动添加方式如下:

在这里插入图片描述
在这里插入图片描述


⑤ 优化RVIZ实现自动保存:保证重复启动launch文件可以保存先前组件配置信息:

  1. 将组件皮遏制保存到config目录下:

在这里插入图片描述

  1. 启动配置添加参数:
<launch>
   <param name="robot_description" textfile="$(find 包名)/urdf/urdf/urdf01_HelloWorld.urdf" />
   <node pkg="rviz" type="rviz" name="rviz" args="-d $(find 报名)/config/rviz/show_mycar.rviz" />
</launch>

总结

  • 声明:本节博客部分参考了CSDN用户赵虚左的ROS教程,本篇博客主要针对于如何进行机器人3D建模及仿真完成了简单介绍,在之后的博客中会进一步介绍urdf文件的编写方法、rviz的可视化使用以及Gazebo的入门教程,敬请期待。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/lc1852109/article/details/125876728