流程:
创建功能包,导入依赖项 → 编写 URDF 或 Xacro 文件 → 启动 Gazebo 并显示机器人模型
导入依赖包:
urdf、xacro、gazebo_ros、gazebo_ros_control、gazebo_plugins
编写URDF文件
<!--
创建一个机器人模型(盒状即可),显示在 Gazebo 中
-->
<robot name="mycar">
<link name="base_link">
<visual>
<geometry>
<box size="0.5 0.2 0.1" />
</geometry>
<origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0" />
<material name="yellow">
<color rgba="0.5 0.3 0 0.5" />
</material>
</visual>
<!-- 1. 设置碰撞参数 -->
<!-- 如果时标准几何体,直接复制 visual 的 geometry 和 origin 即可 -->
<collision>
<geometry>
<box size="0.5 0.2 0.1" />
</geometry>
<origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0" />
</collision>
<!-- 2. 设置惯性矩阵 -->
<inertial>
<origin xyz="0 0 0" />
<mass value="6" />
<inertia ixx="1" ixy="0" ixz="0" iyy="1" iyz="0" izz="1" />
</inertial>
</link>
<!-- gazebo 有自己的颜色设置标签 -->
<gazebo reference="base_link">
<material>Gazebo/Black</material>
</gazebo>
</robot>
启动Gazebo并显示模型
launch 文件实现:
<launch>
<!-- 1.需要在参数服务器中载入 urdf -->
<param name="robot_description" textfile="$(find urdf02_gazebo)/urdf/demo01_helloworld.urdf" />
<!-- 2.启动 Gazebo 仿真环境 -->
<include file="$(find gazebo_ros)/launch/empty_world.launch" />
<!-- 3.在 Gazebo 中添加机器人模型 -->
<node pkg="gazebo_ros" type="spawn_model" name="model" args="-urdf -model mycar -param robot_description" />
</launch>
代码解释:
<include file="$(find gazebo_ros)/launch/empty_world.launch" />
<!-- 启动 Gazebo 的仿真环境,当前环境为空环境 -->
<node pkg="gazebo_ros" type="spawn_model" name="model" args="-urdf -model mycar -param robot_description" />
<!--
在 Gazebo 中加载一个机器人模型,该功能由 gazebo_ros 下的 spawn_model 提供:
-urdf 加载的是 urdf 文件
-model mycar 模型名称是 mycar
-param robot_description 从参数 robot_description 中载入模型
-x 模型载入的 x 坐标
-y 模型载入的 y 坐标
-z 模型载入的 z 坐标
-->
注意
当 URDF 需要与 Gazebo 集成时,和 Rviz 有明显区别:
1.必须使用 collision 标签,因为既然是仿真环境,那么必然涉及到碰撞检测,collision 提供碰撞检测的依据。
2.必须使用 inertial 标签,此标签标注了当前机器人某个刚体部分的惯性矩阵,用于一些力学相关的仿真计算。
3.颜色设置,也需要重新使用 gazebo 标签标注,因为之前的颜色设置为了方便调试包含透明度,仿真环境下没有此选项。
本文介绍如何在Gazebo中创建和显示机器人模型,包括创建功能包、编写URDF文件定义机器人结构,并通过launch文件启动Gazebo环境加载模型。
476

被折叠的 条评论
为什么被折叠?



