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 一模一样

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/68153.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

湘大 XTU OJ 1308 比赛 题解:循环结束的临界点+朴素模拟

一、链接 比赛 二、题目 题目描述 有n个人要进行比赛&#xff0c;比赛规则如下&#xff1a; 假设每轮比赛的人是m&#xff0c;取最大的k&#xff0c;k2^t且k≤m。这k个人每2人举行一场比赛&#xff0c;胜利者进入一下轮&#xff0c;失败者被淘汰。余下的m-k个人&#xff0…

从Spring源码看创建对象的过程

从Spring源码看创建对象的过程 Spring对于程序员set注入的属性叫做属性的填充、对于set注入之后的处理&#xff08;包括BeanPostProcessor的处理、初始化方法的处理&#xff09;叫做初始化。 研读AbstractBeanFactory类中的doGetBean()方法 doGetBean()方法首先完成的工作是…

mysql基础之触发器的简单使用

1.建立学生信息表 -- 触发器 -- 建立学生信息表 create table s1(id int unsigned auto_increment,name varchar(30),score tinyint unsigned,dept varchar(50),primary key(id) );2.建立学生补考信息表 -- 建立学生补考信息表 create table s2 like s1;3.建立触发器&#xf…

Grafana技术文档-概念-《十分钟扫盲》

Grafana官网链接 Grafana: The open observability platform | Grafana Labs 基本概念 Grafana是一个开源的度量分析和可视化套件&#xff0c;常用于对大量数据进行实时分析和可视化。以下是Grafana的基本概念&#xff1a; 数据源&#xff08;Data Source&#xff09;&#…

【大数据】Flink 详解(一):基础篇

Flink 详解&#xff08;一&#xff09;&#xff1a;基础篇 1、什么是 Flink &#xff1f; Flink 是一个以 流 为核心的高可用、高性能的分布式计算引擎。具备 流批一体&#xff0c;高吞吐、低延迟&#xff0c;容错能力&#xff0c;大规模复杂计算等特点&#xff0c;在数据流上提…

模板的进阶

目录 1.非类型模板参数 2.模板特化 2.1概念 2.2函数模板特化 2.3类模板特化 2.3.1全特化 2.3.2偏特化 3.模板分离编译 3.1什么是分离编译 3.2 模板的分离编译 3.3解决方法 4. 模板总结 1.非类型模板参数 模板参数分类类型形参与非类型形参。 类型形参即&#xff1a…

Python(七十五--总结)列表、字典、元组、集合总结

❤️ 专栏简介&#xff1a;本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中&#xff0c;我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 &#xff1a;本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

关于Object 0 = new Object() 的追魂九连问

文章目录 对象的创建过程对象的组成解析普通对象**结果分析&#xff1a;**给对象添加属性注意事项 补充jvm压缩指针栗子&#xff1a; 对象头包含什么对象怎么定位&#xff1f;**句柄方式和直接引用的优缺点&#xff1a;** 对象怎么分配&#xff1f;为什么hotspot不使用c对象来代…

QT的信号槽的四种写法和五种链接方式

目录 四种信号槽写法&#xff1a; 五种连接方式&#xff1a; 实例&#xff1a; 常见错误及改正&#xff1a; 错误1: 未连接信号与槽 错误2: 信号和槽参数不匹配 错误3: 未使用Q_OBJECT宏 错误4: 跨线程连接未处理 在Qt中&#xff0c;信号&#xff08;Signal&#xff09…

Stephen Wolfram:让 ChatGPT 真正起作用的是什么?

What Really Lets ChatGPT Work? 让 ChatGPT 真正起作用的是什么&#xff1f; Human language—and the processes of thinking involved in generating it—have always seemed to represent a kind of pinnacle of complexity. And indeed it’s seemed somewhat remarkabl…

go-admin 使用开发

在项目中使用redis 作为数据缓存&#xff1a;首先引入该包 “github.com/go-redis/redis/v8” client : redis.NewClient(&redis.Options{Addr: config.QueueConfig.Redis.Addr, // Redis 服务器地址Password: config.QueueConfig.Redis.Password, // Redis 密码&…

Vue自定义指令使用

本篇文章讲述使用Vue自定义指令&#xff0c;并在项目中完成相应功能。 在平常Vue脚手架项目中&#xff0c;使用到 自定义指令较少&#xff0c;一般都是使用的自带指令&#xff0c;比如 v-show 、v-if 、 v-for 、 v-bind 之类的。这些已经能够满足大多数项目使用。更多的可能也…

springboot+mybatis实现简单的增、删、查、改

这篇文章主要针对java初学者&#xff0c;详细介绍怎么创建一个基本的springboot项目来对数据库进行crud操作。 目录 第一步&#xff1a;准备数据库 第二步&#xff1a;创建springboot项目 方法1&#xff1a;通过spring官网的spring initilizer创建springboot项目 方法2&am…

UG NX二次开发(C#)-CAM自定义铣加工的出口环境

文章目录 1、前言2、自定义铣削加工操作3、出错原因4、解决方案4.1 MILL_USER的用户参数4.2 采用自定义铣削的方式生成自定义的dll4.2 配置加工的出口环境4.3 调用dll5、结论1、前言 作为一款大型的CAD/CAM软件, UG NX为我们提供了丰富的加工模板,通过加工模板能直接用于生成…

day7 8-牛客67道剑指offer-JZ74、57、58、73、61、62、64、65、把字符串转换成整数、数组中重复的数字

文章目录 1. JZ74 和为S的连续正数序列暴力解法滑动窗口&#xff08;双指针&#xff09; 2. JZ57 和为S的两个数字3. JZ58 左旋转字符串4. JZ73 翻转单词序列5. JZ61 扑克牌顺子6. JZ62 孩子们的游戏(圆圈中最后剩下的数)迭代 模拟递归 约瑟夫环问题 找规律 7. JZ64 求123...n8…

0基础学C#笔记08:插入排序法

文章目录 前言一、过程简单描述&#xff1a;二、代码总结 前言 我们在玩打牌的时候&#xff0c;你是怎么整理那些牌的呢&#xff1f;一种简单的方法就是一张一张的来&#xff0c;将每一张牌插入到其他已经有序的牌中的适当位置。当我们给无序数组做排序的时候&#xff0c;为了…

SpringBoot 该如何预防 XSS 攻击

XSS 漏洞到底是什么&#xff0c;说实话我讲不太清楚。但是可以通过遇到的现象了解一下。在前端Form表单的输入框中&#xff0c;用户没有正常输入&#xff0c;而是输入了一段代码&#xff1a;</input><img src1 onerroralert1> 这个正常保存没有问题。问题出在了列表…

竞赛项目 深度学习疲劳驾驶检测 opencv python

文章目录 0 前言1 课题背景2 实现目标3 当前市面上疲劳驾驶检测的方法4 相关数据集5 基于头部姿态的驾驶疲劳检测5.1 如何确定疲劳状态5.2 算法步骤5.3 打瞌睡判断 6 基于CNN与SVM的疲劳检测方法6.1 网络结构6.2 疲劳图像分类训练6.3 训练结果 7 最后 0 前言 &#x1f525; 优…

HCIP-linux和kvm(ks配置文件自动化安装及console连虚拟机有问题)

1、linux linux安装教程参考&#xff0c;https://blog.51cto.com/cloudcs/5245337 yum源配置 本地yum源配置&#xff1a; 8版本配置&#xff1a;将光盘iso挂载到某个目录&#xff0c;/dev/cdrom是/dev/sr0软链接&#xff0c;# mount /dev/cdrom /mnt&#xff0c;# ls /mnt Ap…

.NET6使用SqlSugar操作数据库

1.//首先引入SqlSugarCore包 2.//新建SqlsugarSetup类 public static class SqlsugarSetup{public static void AddSqlsugarSetup(this IServiceCollection services, IConfiguration configuration,string dbName "ConnectString"){SqlSugarScope sqlSugar new Sq…