urdf转sdf制作模型包

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 相互转换

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在ROS中使用SDF模型是一种常见的方法来描述和加载机器人模型SDF(Simulation Description Format)是一种用于描述仿真环境中物体的XML格式。通过使用SDF模型,可以在ROS中进行机器人的仿真和控制。 要在ROS中使用SDF模型,首先需要将模型SolidWorks中建立并导出为URDF格式。然后,可以使用Blender为模型贴图,以便在仿真中进行视觉方面的工作开发。在贴图过程中,需要注意路径和图片名不能含中文字符。贴图的方便之处在于可以在模型上贴上二维码和标识图像,以方便开发视觉方面的工作。 导出的URDF可以命名为"racetrack_v2",具体的导出过程可以参考相关教程。在导出过程中,可能会遇到一些问题,比如引用\[2\]中提到的进程意外终止的错误。这种错误可能是由于参数设置不正确或者模型文件有误导致的。可以查看相应的日志文件来获取更多的错误信息。 在ROS中使用SDF模型时,可以通过修改.sdf文件来进行相关属性值的增删改。这些属性名称和大小与UI界面中的对应关系严格一致。通过直接编辑.sdf文件,可以更直接和全面地修改模型,相比通过UI界面进行修改更加灵活。 总之,使用SDF模型是在ROS中进行机器人仿真和控制的一种常见方法。通过将模型导出为URDF格式,并使用Blender进行贴图,可以方便地进行视觉方面的工作开发。同时,通过编辑.sdf文件,可以更灵活地修改模型的属性值。 #### 引用[.reference_title] - *1* *2* [教程 | ROS中将urdfsdf制作模型](https://blog.csdn.net/TIANBOT/article/details/125329567)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [使用SDF对ROS-Gazebo中模型进行编辑修改](https://blog.csdn.net/weixin_43467769/article/details/121469997)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值