欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

ROS 理论与实践学习笔记 - 5 ROS 机器人系统模拟 URDF 集成 Gazebo

最编程 2024-10-19 07:18:13
...

5.1 URDF与Gazebo基本集成流程

(1)创建功能包,导入依赖项:urdf、xacro、gazebo_ros、gazebo_ros_control、gazebo_plugins

(2)编写 URDF 或 Xacro 文件

(3)启动 Gazebo 并显示机器人模型

5.2 URDF集成Gazebo相关设置

(1)collision

        如果机器人link是标准的几何体形状,和link的 visual 属性设置一致即可。

(2)inertial

        惯性矩阵的设置需要结合link的质量与外形参数动态生成

球体惯性矩阵

<!-- Macro for inertia matrix -->
    <xacro:macro name="sphere_inertial_matrix" params="m r">
        <inertial>
            <mass value="${m}" />
            <inertia ixx="${2*m*r*r/5}" ixy="0" ixz="0"
                iyy="${2*m*r*r/5}" iyz="0" 
                izz="${2*m*r*r/5}" />
        </inertial>
    </xacro:macro>

圆柱惯性矩阵

<xacro:macro name="cylinder_inertial_matrix" params="m r h">
        <inertial>
            <mass value="${m}" />
            <inertia ixx="${m*(3*r*r+h*h)/12}" ixy = "0" ixz = "0"
                iyy="${m*(3*r*r+h*h)/12}" iyz = "0"
                izz="${m*r*r/2}" /> 
        </inertial>
    </xacro:macro>

立方体惯性矩阵

 <xacro:macro name="Box_inertial_matrix" params="m l w h">
       <inertial>
               <mass value="${m}" />
               <inertia ixx="${m*(h*h + l*l)/12}" ixy = "0" ixz = "0"
                   iyy="${m*(w*w + l*l)/12}" iyz= "0"
                   izz="${m*(w*w + h*h)/12}" />
       </inertial>
   </xacro:macro>

        原则上,除了 base_footprint 外,机器人的每个刚体部分都需要设置惯性矩阵,且惯性矩阵必须经计算得出,如果随意定义刚体部分的惯性矩阵,那么可能会导致机器人在 Gazebo 中出现抖动,移动等现象。

(3)颜色设置

<gazebo reference="link节点名称">
     <material>Gazebo/Blue</material>
</gazebo>

PS:material 标签中,设置的值区分大小写,颜色可以设置为 Red Blue Green Black .....

5.3 URDF集成Gazebo实践

(1)需要编写封装惯性矩阵算法的 xacro 文件

(2)为机器人模型中的每一个 link 添加 collision 和 inertial 标签,并且重置颜色属性

(3)在 launch 文件中启动 gazebo 并添加机器人模型

5.4 Gazebo仿真环境搭建

(1)外部仿真环境载入

(2)添加内置组件创建仿真环境  

(3)自定义仿真环境

(4)使用官方提供的插件

        下载官方模型库:git clone GitHub - osrf/gazebo_models: Gazebo database of SDF models. This is a predecessor to https://app.gazebosim.org

        将模型库复制进 gazebo:将得到的gazebo_models文件夹内容复制到 /usr/share/gazebo-*/models

        应用:重启 Gazebo,选择左侧菜单栏的 insert 可以选择并插入相关道具。