gazebo 导入从blender导出的dae等文件

背景: gazebo 模型库里的模型在我需要完成的任务中不够用,还是得从 solidworks、3DMax, blender这种建模软件里面在手动画一些,或者去他们的库里面在挖一挖。

目录

1 blender

1-2 install

2 gazebo导入模型

 2-1 gazebo导入模型文件类型主要有三种

2-2 blender创建红色小方格后导出

2-2-1 blender创建红色小方格

2-2-2 导出三种模式 

2-2-2-1 制作world文件   

 2-2-2-2 gazebo 导入.dae

 2-2-2-3 gazebo 导入.obj :与.dae流程效果一模一样

 2-2-2-4  gazebo 导入.stl

2-3 blender创建小方格贴图后导出 

2-3-1 观察.gazebo/models/ 里的摆放

 2-3-2 把自己的数据整理成标准的样式

2-4 blender导入网上模型资产库,再导出三种模式文件 


1 blender

        Blender是一款免费开源三维图形图像软件,提供从建模、动画、材质、渲染、到音频处理、视频剪辑等一系列动画短片制作解决方案。

1. Blender3.5建模入门教程_超细节100集课程 :https://www.bilibili.com/video/BV1fb4y1e7PD/
2. Blender官方说明:
    https://docs.blender.org/manual/zh-hans/2.91/getting_started/index.html
3. Blender3D建模模型素材下载网 :https://blenderco.cn/

1-2 install

sudo apt install blender

2 gazebo导入模型

 2-1 gazebo导入模型文件类型主要有三种

1. .dae
    - 能带形状和颜色。
    - 翻越模型库,最多存在的,至少占半数以上。
2. .obj + .mtl
    - 能带形状和颜色。
    - 存在比较少。
3. .stl
    - 只能带形状,需要各个部位保存成不同的stl文件,然后到gazebo里面model edit在二次编辑。
    - 存在数量居中。

当然,blender 也能导出这三种的和其他种类的文件。

2-2 blender创建红色小方格后导出

    在blender创建一个红色的小方格然后导出(.dae、.obj + .mtl、 .stl)三种类型的文件在gazebo里保存成sdf的模型文件。

2-2-1 blender创建红色小方格

  1. 打开blender
  2. 界面变成中文显示 : 编辑 -> 偏好设置 -> 界面(翻译(简体中文))
  3. 添加一个立方体 :位于上侧,依次点击: 添加 -> 网格 -> 立方体
  4. 染色红色 :位于右侧,依次点击: 材质 -> +号 -> 基础色设为红色

2-2-2 导出三种模式 

mkdir cube_01 && cube_01 && touch cube_red.world && tree ./cube_01
../cube_01
├── cube_red.dae
├── cube_red.mtl
├── cube_red.obj
├── cube_red.stl
└── cube_red.world
2-2-2-1 制作world文件
   

- https://blog.csdn.net/qq_39433050/article/details/107099404?spm=1001.2014.3001.5506 

<?xml version="1.0"?>
<sdf version="1.7">
    <world name="default">
        <include>
            <uri>model://sun</uri>
        </include>
        <include>
            <uri>model://ground_plane</uri>
        </include>
        <model name="cube_red">
            <pose>0 0 0 0 0 0</pose>
            <static>true</static>
            <link name="basic">
                <visual name="visual">
                    <geometry>
                        <mesh><uri>file:///xxx/cube_01/cube_red.dae</uri></mesh>
                    </geometry>
                </visual>
            </link>
        </model>
    </world>
</sdf>

 2-2-2-2 gazebo 导入.dae
gazebo ./cube_01/cube_red.world

点击: file -> Save -> cube_red_dae

tree ./cube_01
./cube_01
├── cube_red.dae
├── cube_red_dae
│   ├── model.config
│   └── model.sdf
├── cube_red.mtl
├── cube_red.obj
├── cube_red.stl
└── cube_red.world

点击:Insert -> Add Path -> 

 2-2-2-3 gazebo 导入.obj :与.dae流程效果一模一样
 2-2-2-4  gazebo 导入.stl

        与.dae流程效果大致相同,只是在Edit Model 后在gazebo 添加颜色, stl 不带颜色信息。

 

2-3 blender创建小方格贴图后导出 

打开blender

  1. 界面变成中文显示 : 编辑 -> 偏好设置 -> 界面(翻译(简体中文))
  2. 添加一个立方体 :位于上侧,依次点击: 添加 -> 网格 -> 立方体
  3. 添加材质 :位于右侧,依次点击: 材质 -> +号 -> 新建
  4. 左下方 -> 打开着色器编辑器 -> 拽图片到下方编辑区 -> 连接节点
  5. 导出

 后续步骤和2-2-2 一模一样

2-3-1 观察.gazebo/models/ 里的摆放
 

/xxx/.gazebo/models/cafe
├── materials
│   └── textures
│       ├── __auto_10.jpg
│       ├── __auto_21.jpg
├── meshes
│   └── cafe.dae
├── model.config
└── model.sdf

 2-3-2 把自己的数据整理成标准的样式

.dae

./cube_02/cube_anime_dae
├── materials
│   └── textures
│       └── anime.jpeg
├── meshes
│   └── cube_anime.dae
├── model.config
└── model.sdf

./cube_02/cube_anime_dae/model.sdf

<?xml version='1.0'?>
<sdf version='1.7'>
  <model name='cube_anime'>
...
      <visual name='visual'>
        <geometry>
          <mesh>
            <uri>/home/wyc/ytj-temp/notebook/python/cube_02/cube_anime_dae/meshes/cube_anime.dae</uri>   <--- 修改绝对路径
          </mesh>
        </geometry>
  ...
  </model>
</sdf>

.obj

./cube_02/cube_anime_obj
├── materials
│   └── textures
│       └── anime.jpeg
├── meshes
│   ├── cube_anime.mtl
│   └── cube_anime.obj
├── model.config
└── model.sdf

<?xml version='1.0'?>
<sdf version='1.7'>
  <model name='cube_anime_obj'>
  ... <visual name='visual'> <geometry> <mesh>  <uri>/home/wyc/ytj-temp/notebook/python/cube_02/cube_anime_dae/meshes/cube_anime.obj</uri> <--- 修改绝对路径 </mesh> </geometry> ...
  </model>
</sdf>

2-4 blender导入网上模型资产库,再导出三种模式文件 

  1. 打开blender
  2. 界面变成中文显示 : 编辑 -> 偏好设置 -> 界面(翻译(简体中文))
  3. 网上下载想要的模型 -> 放到指定位置解压
  4. 编辑 -> 偏好设置 -> 文件路径 -> 资产库 -> +号 -> 选择路径
  5. 左下方 -> 资产浏览器 -> 选择模型拽到试图区
  6. 导出

 后续步骤和2-2-2 一模一样

 

<think>好的,我现在需要帮助用户解决如何将Blender模型导出导入Gazebo中的问题。首先,我需要回顾用户提供的引用内容,看看有没有相关的信息。不过用户提供的引用[1]、[2]、[3]主要是关于SolidWorks导出到URDF、编译源文件以及在Gazebo中启动模型的内容,似乎和Blender没有直接关联。可能用户希望得到类似的流程,但针对Blender的操作步骤。 接下来,我需要回想自己之前的知识库中关于Blender导出模型到Gazebo的方法。通常,Gazebo支持的格式有SDF和URDF,而Blender本身可能没有直接的导出插件,但用户可以通过其他步骤转换格式。 首先,用户需要将Blender中的模型导出为常见的3D格式,比如STLDAE,这些格式Gazebo可以识别。然后,可能需要手动创建URDF或SDF文件来描述模型的动力学属性和链接关系。此外,还需要注意材质和纹理的路径设置,确保Gazebo能正确加载。 步骤可能包括:在Blender中调整模型,确保单位正确(比如米),导出DAESTL,编写URDF文件,引用导出的网格文件,定义惯性属性和碰撞体积等。另外,可能还需要安装Blender导出插件,或者使用第三方工具如blender_urdf_exporter来生成URDF。 需要注意的是,用户可能会遇到材质路径错误、单位不匹配或惯性参数不正确的问题,因此需要提醒用户检查这些方面。此外,引用中提到的SolidWorks导出URDF的过程可能有些类似,但Blender的流程不同,需要具体说明。 最后,生成相关问题时要围绕BlenderGazebo的集成,可能涉及优化模型、处理复杂模型、调整物理属性以及自动化工具的使用等方面。</think>要将Blender创建的模型导入Gazebo进行仿真,需要经过模型格式转换和物理属性配置两个关键阶段,以下是具体步骤说明: **1. 模型导出与格式转换** - 在Blender中完成建模后,首先需确保模型比例正确(建议使用米为单位) - 导出模型为Gazebo兼容格式: - **推荐方案**:使用`.dae`(Collada)格式导出,保留材质和纹理信息 - **替代方案**:导出为`.stl`格式,但需手动配置材质文件路径 - 安装Blender-URDF插件(可选但推荐): ```bash git clone https://github.com/robotics/urdf_blender_export.git # 将插件复制到Blender的addons目录 ``` **2. 创建URDF/SDF描述文件** ```xml <!-- 示例URDF结构 --> <robot name="blender_model"> <link name="base_link"> <inertial> <mass value="5"/> <inertia ixx="0.3" ixy="0" ixz="0" iyy="0.3" iyz="0" izz="0.3"/> </inertial> <visual> <geometry> <mesh filename="package://your_pkg/meshes/model.dae"/> </geometry> </visual> <collision> <geometry> <mesh filename="package://your_pkg/meshes/model.stl"/> </geometry> </collision> </link> </robot> ``` *注意:Gazebo需要独立指定碰撞网格,建议使用简化的低模作为碰撞体[^1]* **3. 模型部署到Gazebo** 1. 创建ROS功能包(推荐): ```bash catkin_create_pkg your_model urdf xacro ``` 2. 建立标准目录结构: ``` your_model/ ├── meshes/ │ └── model.dae ├── urdf/ │ └── model.urdf └── launch/ └── display.launch ``` 3. 使用xacro进行参数化配置(可选但推荐): ```xml <xacro:macro name="blender_model" params="mass"> <inertial> <mass value="${mass}"/> <!-- 惯性矩阵计算值 --> </inertial> </xacro:macro> ``` **常见问题解决方案** - **材质丢失问题**:确保材质路径使用`package://`协议,并将纹理文件放在`meshes/textures`目录 - **模型比例异常**:在Blender导出时设置缩放系数为1.0,单位转换为米 - **物理仿真不稳定**:检查惯性矩阵计算,可使用Gazebo的`inertia_matrix_generator`工具
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值