修改gazebo中的模型文件&简单添加模型

前言

本篇博客是自己的学习记录,不对任何言论负责!如果中间有任何错误欢迎指出。^ ^
简单介绍一下环境配置Ubuntu20.04 Gazebo11 PX4 1.13


1. 如何在已有的模型上添加东西

举例:在无人艇的船板上添加apriltag

笔者这里用的是sandisland.launch文件,无人艇作为可控对象,直接在launch文件中就有相关的模型的定义。
在这个场景下,对无人艇的定义如下:

<!-- Load robot model -->
  <arg name="urdf" default="$(find wamv_gazebo)/urdf/wamv_gazebo.urdf.xacro"/>
  <param name="$(arg namespace)/robot_description"
         command="$(find xacro)/xacro &#x002D;&#x002D;inorder '$(arg urdf)'
         thruster_config:=$(arg thrust_config)
         camera_enabled:=$(arg camera_enabled)
         gps_enabled:=$(arg gps_enabled)
         imu_enabled:=$(arg imu_enabled)
         lidar_enabled:=$(arg lidar_enabled)
         ground_truth_enabled:=$(arg ground_truth_enabled)
         namespace:=$(arg namespace) "/>

根据这段代码,找到这个模型对应的相关的文件,此处为wamv_gazebo.urdf.xacro,再根据前面的路径找到该文件,有的时候文件重复的比较多,容易找错。

然后在这个文件当中,可以看到一段代码是对无人艇这个模型自身的定义,而不是其他的什么传感器。

<!-- === The WAM-V platform === -->
  <xacro:include filename="$(find wamv_gazebo)/urdf/wamv_gazebo.xacro"/>

再进入wamv_gazebo.xacro这个文件。以下是这个文件的全部内容:

<?xml version="1.0"?>
<robot xmlns:xacro="http://ros.org/wiki/xacro">
  <!-- Macro to create a WAM-V with dyanmics plugins and a customizeable thruster layout -->
  <xacro:macro  name="wamv_gazebo" params="thruster_layout">
    <!-- Include macros for dynamics plugins -->
    <xacro:include filename="$(find wamv_gazebo)/urdf/macros.xacro" />
    <!-- Defines the base vehicle -->
    <xacro:include filename="$(find wamv_description)/urdf/wamv_base.urdf.xacro" />
    <!-- Thruster Layout -->
    <xacro:include filename="${thruster_layout}"/>
    <!-- Attach hydrodynamics plugin -->
    <xacro:usv_dynamics_gazebo name="wamv_dynamics_plugin"/>
  </xacro:macro>
</robot>

大致看一下可以发现wamv_base.urdf.xacro这个文件就是封装这个无人艇模型的最终文件。

<?xml version="1.0"?>
### 创建或修改Gazebo中的模型XML文件Gazebo中,可以通过多种方式创建或修改模型的XML文件(通常是SDF格式)。以下是关于如何操作这些文件的具体说明: #### 使用Building Editor工具 可以利用Gazebo内置的`Edit-&gt;Building Editor`功能来快速生成基础模型。通过此工具设计建筑或其他结构后,会自动生成对应的`.sdf`文件[^1]。生成后的文件通常存储于用户的本地路径`~/.gazebo/models/`下。 一旦生成初始`sdf`文件,可以根据需求进一步调整其属性。例如,在材料定义部分,需特别关注`&lt;material&gt;`标签下的配置项。这部分代码直接影响到渲染效果以及材质外观。 ```xml &lt;!-- Example of material section --&gt; &lt;link name=&quot;link_name&quot;&gt; &lt;visual&gt; &lt;geometry&gt;...&lt;/geometry&gt; &lt;material&gt; &lt;ambient&gt;0.8 0.8 0.8 1&lt;/ambient&gt; &lt;diffuse&gt;0.7 0.7 0.7 1&lt;/diffuse&gt; &lt;specular&gt;0.1 0.1 0.1 1&lt;/specular&gt; &lt;emissive&gt;0 0 0 1&lt;/emissive&gt; &lt;/material&gt; &lt;/visual&gt; &lt;/link&gt; ``` #### 添加二维码图片至模型 为了向模型添加特定纹理如二维码图像,可将所需图片资源放置于模型目录内的适当位置,并更新相应的`model.sdf`文件以引用该图片作为贴图素材。 ```xml &lt;!-- Texture mapping example --&gt; &lt;visual&gt; &lt;geometry&gt; &lt;box&gt;&lt;size&gt;2 2 0.1&lt;/size&gt;&lt;/box&gt; &lt;/geometry&gt; &lt;material&gt; &lt;script&gt; &lt;uri&gt;file://path_to_your_texture.png&lt;/uri&gt; &lt;/script&gt; &lt;/material&gt; &lt;/visual&gt; ``` #### 修改重力影响设置 对于希望不受地球引力作用而保持悬停状态的对象,则需要编辑对应模型描述文档里的物理参数设定。具体来说就是定位到包含`&lt;physics&gt;`或者单独针对某个链接(link)所设有的选项里寻找并更改`&lt;gravity&gt;`字段值为`false`即可实现这一目标[^2]。 ```xml &lt;!-- Disable gravity on a specific link --&gt; &lt;link name=&#39;floating_object&#39;&gt; ... &lt;pose frame=&#39;&#39;&gt;0 0 1 0 -0 0&lt;/pose&gt; &lt;self_collide&gt;false&lt;/self_collide&gt; &lt;kinematic&gt;false&lt;/kinematic&gt; &lt;gravity&gt;false&lt;/gravity&gt; &lt;!-- This line disables the effect of gravity --&gt; ... &lt;/link&gt; ``` 以上即是在Gazebo环境下处理模型XML(SDF/URDF)文件的一些基本技巧与指导原则。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值