urdf转sdf制作模型包

本文详细介绍了如何在Gazebo环境中从SolidWorks导出URDF模型,使用Blender进行贴图,然后通过gzsdf命令将URDF转换为SDF模型包。接着,讲解了创建模型包的步骤,包括创建model.config文件和world文件,并展示了如何通过launch文件加载world。最后,针对加载world时可能出现的错误进行了分析并给出了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

urdf转sdf制作模型包

0.前言

在gazebo中我们可以将模型包放置于.gazebo/models路径下,在gazebo中可以直接将这些模型包随意拖出来用,非常的方便,本篇将以mini_gazebo中的地图模型文件创建为例,教大家如何去创建一个简易模型包。地图包地址具体可看该地址:gazebo仿真,讯飞智慧餐厅,tianbot_mini二轮差速小车请添加图片描述请添加图片描述
请添加图片描述

1.从SolidWorks中导出模型

将模型在solidworks中建立以及导出为urdf,接着用blender为模型贴图,路径以及图片名都不能有中文。简易将模型设计为装配体,这样贴图的时候会更方便一些。贴图的方便之处就是可以在模型上贴上二维码,以及一些标识图像,方便我们在仿真中做视觉方面工作的开发。导出的urdf包命名为:racetrack_v2 。
具体过程可以参考我之前写的博客,因为这一块不是本节的主要内容所以跳过。教程:
1.从SolidWorks导出URDF
2.在Blender中对模型进行贴图

2.urdf转sdf

打开racetrack_v2/urdf,路径,可以发现有urdf代码文件,使用命令:

gz sdf -p racetrack_v2.urdf > racetrack_v2.sdf

可以发现sdf文件生成了
请添加图片描述

3.创建模型包

创建一个新的文件夹,命名为任意名字,我这里命名为racetrack_V2,将上一步生成的sdf文件,以及urdf功能包中的meshes文件夹复制进去,再创建一个model.config的文件,如图:
请添加图片描述
model.config里面定义了需要加载的sdf文件名,以及可注明作者信息等,代码如下:

<?xml version="1.0"?>

<model>
  <name>racetrack_v2</name>
  <version>1.0</version>
  <sdf version="1.6">racetrack_v2.sdf</sdf>


  <author>
    <name>Yuxing Zhang</name>
    <email>1632122398@qq.com</email>
  </author>

  <description>
    A racetrack world
  </description>
</model>

此时一个简易的模型包就创建好了,将该模型包复制到.gazebo/models路径下,打开gazebo即可找到该地图模型了,将点击该模型将其加载进gazebo中:
请添加图片描述

4.另存为world

gazebo中拖出的模型,想在下一次打开时还能保持自己设置的状态,则需要将其保存为world文件,并用launch文件将其打开。点击file–>save world as,可将world暂时保存在r任意功能包world文件夹中。配置launch文件,命名为racetrack_gazebo.launch:

<?xml version="1.0"?>
<launch>

  <!-- 设置launch文件的参数 -->
    <arg name="paused" default="false"/>
    <arg name="use_sim_time" default="true"/>
    <arg name="gui" default="true"/>
    <arg name="headless" default="false"/>
    <arg name="debug" default="false"/>
    <arg name="x_pos" default="0"/>
    <arg name="y_pos" default="0"/>
    <arg name="z_pos" default="0.01"/>

    <!-- 运行gazebo仿真环境 -->
    <include file="$(find gazebo_ros)/launch/empty_world.launch">
        <arg name="world_name" value="$(find racetrack_v2)/world/racetrack.world" />    
        <arg name="debug" value="$(arg debug)" />
        <arg name="gui" value="$(arg gui)" />
        <arg name="paused" value="$(arg paused)"/>
        <arg name="use_sim_time" value="$(arg use_sim_time)"/>
        <arg name="headless" value="$(arg headless)"/>
    </include>
</launch>

启动racetrack_gazebo.launch文件:

roslaunch racetrack_v2 racetracke_gazebo.launch

可以发现,gazebo环境配置与上一次配置的一样:
请添加图片描述

5.加载world时报错

有时gazebo加载world文件时会报错:

请添加图片描述

[urdf_spawner-4] process has died [pid 17273, exit code 1, cmd /opt/ros/melodic/lib/gazebo_ros/spawn_model -urdf -model libot -param robot_description -x 0 -y 0 -z 0 -R 0 -P 0 -Y 0 __name:=urdf_spawner__log:=/home/zyx/.ros/log/cdf87ba4-c6d7-11ec-a7b9-d0abd53c1adb/urdf_spawner-4.log]. log file: /home/zyx/.ros/log/cdf87ba4-c6d7-11ec-a7b9-d0abd53c1adb/urdf_spawner-4*.log

可以修改world文件中<sim_time>标签,将两个参数都改为0,下一次加载便不会再报该错误:
请添加图片描述

参考文献

1.gazebo urdf sdf 相互转换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值