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

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开封Geotrust单域名https证书推荐

Geotrust作为全球领先的数字证书颁发机构之一&#xff0c;拥有多年的数字证书颁发经验&#xff0c;其数字证书被广泛应用于电子商务、在线支付、企业通讯、云计算等领域&#xff0c;为用户提供了安全可靠的保障。而Geotrust旗下的单域名https证书是大多数客户创建网站时的选择之…

技术应用:Docker安全性的最佳实验|聊聊工程化Docker

&#x1f525; 技术相关&#xff1a;《技术应用》 ⛺️ I Love you, like a fire! 文章目录 首先&#xff0c;使用Docker Hub控制访问其次&#xff0c;保护密钥写在最后 不可否认&#xff0c;能生存在互联网上的软件都是相互关联的&#xff0c;当我们开发一款应用程序时&#x…

如何设计一个高性能/高并发/高可用/高可靠/可扩展的系统?

作者&#xff1a;阿秀 校招八股文学习网站&#xff1a;https://interviewguide.cn 这是阿秀的第「293」篇原创 小伙伴们大家好&#xff0c;我是阿秀。 面试者和求职者的关系就好像是矛与盾&#xff0c;一个拼命堆自己的防装&#xff0c;反伤刺甲、魔女斗篷都往身上穿&#xff1…

java获取到heapdump文件后,如何快速分析?

简介 在之前的OOM问题复盘之后&#xff0c;本周&#xff0c;又一Java服务出现了内存问题&#xff0c;这次问题不严重&#xff0c;只会触发堆内存占用高报警&#xff0c;没有触发OOM&#xff0c;但好在之前的复盘中总结了dump脚本&#xff0c;会在堆占用高时自动执行jstack与jm…

MD-MTSP:星雀优化算法NOA求解多仓库多旅行商问题MATLAB(可更改数据集,旅行商的数量和起点)

一、星雀优化算法NOA 星雀优化算法(Nutcracker optimizer algorithm,NOA)由Mohamed Abdel-Basset等人于2023年提出&#xff0c;该算法模拟星雀的两种行为&#xff0c;即&#xff1a;在夏秋季节收集并储存食物&#xff0c;在春冬季节搜索食物的存储位置。星雀优化算法(Nutcrack…

WPS Office 代码执行漏洞(QVD-2023-17241)

目录 本地利用弹计算器&#xff08;自娱自乐&#xff09; 原理分析 msf的利用 1.修改win11中的hosts文件 2.MSF生成一个C#后门 3.shellcode替换 4.在创建html的目录&#xff0c;用python打开http服务来捕获请求 5.开启监听 6.在win11中点击poc文档&#xff0c;可以看到k…

LeetCode算法递归类—验证二叉搜索树

目录 98. 验证二叉搜索树 题解&#xff1a; 代码&#xff1a; 运行结果&#xff1a;​编辑 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含…

​LeetCode解法汇总1572. 矩阵对角线元素的和

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 描述&#xff1a; 给你一个正…

nodejs实现解析chm文件列表,无需转换为PDF文件格式,在线预览chm文件以及目录,不依赖任何网页端插件

特性&#xff1a; 1、支持任意深度的chm文件解析 2、解析后内容结构转换为tree数据呈现 3、点击树节点可以在html实时查看数据 4、不依赖任何浏览器端插件&#xff0c;兼容性较好 nodejs端核心代码 const $g global.SG.$g, fs global.SG.fs, router global.SG.router, xl…

【资料分享】全志科技T507-H工业核心板规格书

1 核心板简介 创龙科技SOM-TLT507是一款基于全志科技T507-H处理器设计的4核ARM Cortex-A53全国产工业核心板&#xff0c;主频高达1.416GHz。核心板CPU、ROM、RAM、电源、晶振等所有元器件均采用国产工业级方案&#xff0c;国产化率100%。 核心板通过邮票孔连接方式引出MIPI C…

聊聊51单片机

目录 1.介绍 2.发展 3.应用领域 4.发展前景 1.介绍 51单片机&#xff08;AT89C51&#xff09;是一种常见的8位微控制器&#xff0c;属于Intel MCS-51系列。它是一种低功耗、高性能的单片机&#xff0c;广泛应用于嵌入式系统中。 51单片机具有很多特点和功能&#xff0c;例如…

漫话拥塞控制:BBR 是个单流模型

概要(便于检索主题)&#xff1a;单流&#xff0c;多流收敛&#xff0c;probe buffer 挤压带宽&#xff0c;maxbw-filter wnd。 我曾经经常说 BBR 是个单流模型&#xff0c;而不是多流收敛模型&#xff0c;也做过不少评论&#xff0c;最近在复听 IETF 的大会&#xff0c;在 IET…

关于前端动态调试解密签名校验的分享

首先我们先来看一下&#xff0c;下面这张图是笔者近期测试遇到的问题&#xff0c;那就是程序每次生成请求都会生成signature的验签&#xff0c;该验签生成方式暂不可知&#xff0c;唯一知道的就是用一次就失效&#xff0c;这对测试的成本造成了很不好的影响&#xff0c;那么我们…

JAVA设计模式----原型设计模式

文章目录 一、简介二、实现方式三、原型模式的注意事项浅拷贝与深拷贝浅拷贝深拷贝一、简介 定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。 类型:创建类模式 类图: 原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Protot…

Golang函数以及函数和方法的区别

在接触到go之前&#xff0c;我认为函数和方法只是同一个东西的两个名字而已&#xff08;在我熟悉的c/c&#xff0c;python&#xff0c;java中没有明显的区别&#xff09;&#xff0c;但是在golang中者完全是两个不同的东西。官方的解释是&#xff0c;方法是包含了接收者的函数。…

【C++11】lambda表达式 | 包装器

文章目录 一.lambda表达式1.lambda表达式概念2.lambda表达式语法3.lambda表达式交换两个数4.lambda表达式底层原理 二.包装器1.function包装器①function包装器介绍②function包装器统一类型③function包装器的意义 2.bind包装器①bind包装器介绍②bind包装器绑定固定参数③bin…

构建Docker容器监控系统(Cadvisor +Prometheus+Grafana)

Cadvisor PrometheusGrafana 1.1、Cadvisor产品简介 Cadvisor是Google开源的一款用于展示和分析容器运行状态的可视化工具。通过在主机上运行Cadvisor用户可以轻松的获取到当前主机上容器的运行统计信息&#xff0c;并以图表的形式向用户展示。 1.2、安装docker-ce [rootloc…

30.基于XML的声明式事务

基于XML的声明式事务 主要是使用XML去代替注解&#xff0c;来实现起到代替注解的作用&#xff0c;实际使用频率很低 将BookServiceImpl.java中的Transactional注解删除&#xff0c;确保用户余额充足 spring-tx-xml.xml <?xml version"1.0" encoding"UTF-8…

uniapp 获取 view 的宽度、高度以及上下左右左边界位置

<view class"cont-box"></view> /* 获取节点信息的对象 */ getElementRect() {const query uni.createSelectorQuery().in(this);query.select(".cont-box").boundingClientRect(res > {console.log(res);console.log(res.height); // 10…

算法基础之插入排序

1、插入排序基本思想 插入排序的工作原理是通过构建有序序列&#xff0c;对于未排序数据&#xff0c;在已排序序列中从后向前扫描&#xff0c;找到相应位置并插入。插入排序在实现上&#xff0c;通常采用in-place排序&#xff08;即只需用到O(1)的额外空间的排序&#xff09;&a…