机器人系统设计与制作:Python语言实现2.5 用Blender制作机器人的三维模型

简介:

2.5 用Blender制作机器人的三维模型


在这一节中,我们将设计机器人的3D模型。3D模型主要用来进行三维仿真,采用Blender工具软件进行建模。Blender的版本必须要在V2.6以上,目前我们只在V2.6以上版本中测试过。

Blender软件主界面上的工作空间和用于3D建模的工具栏如图2-14的屏幕截图所示。

我们选择用Blender这个工具的主要原因是,它可以用Python脚本语言进行机器人的3D建模。Blender有一个内置的Python解释器和脚本编辑器,用于代码编写。这里,我们就先不讨论Blender的用户界面了,可以在网上找到详细的教程,可参考下面的链接:http://www.blender.org/support/tutorials/。

下面,我们用Python在Blender中开始为机器人进行3D建模吧!

2.5.1 Blender中的Python脚本语言

Blender软件主要使用C、C++和Python语言。用户可以通过编写自己的Python脚本语言,调用Blender中的所有功能函数。如果你非常精通Blender中Python的API接口,那么可以完全通过编写Python脚本代码构造机器人的3D模型,代替通过人工拖曳工具栏上的工具软件进行建模。

 

图2-14 Blender软件主界面

Blender使用Python 3.x.Blender版本。Python API大部分都比较稳定,但有些地方的功能仍需要补充和改进。详细的Python API文档可参考:http://www.blender.org/documen-tation/blender_python_api_2_69_7/。

下面,我们开始用Blender中的Python API编写机器人模型的脚本代码。

2.5.2 Blender中的Python API介绍

Blender中的Python API接口能够完成绝大部分的功能,能完成的工作主要有以下几项:

可以编辑Blender中的任何数据,例如场景、网格、单点数据等;

修改用户偏好设置、索引图及界面主题;

创建新的Blender工具;

用Python编写OpenGL命令行,绘制3D视角。

Blender给Python解释器提供了一个bpy模块,这个模块可以导入Python脚本语言中,并访问Blender中的数据、类和函数。Python脚本必须通过这个模块,才能处理Blender中的数据。bpy中我们所用到的Python模块有以下几种:

Context Access(上下文访问):允许从bpy.context脚本访问Blender用户界面功能。

Data Access(数据访问):允许访问Blender内部数据(bpy.data)。

Operators(运算符):允许Python访问调用运算符,其中包括C、Python和Macros的运算符(bpy.ops)。

为了在Blender中切换到脚本编辑状态,需要改变Blender的界面布局。图2-15所示的屏幕截图中用方框标明的选项,可以帮您很容易地切换到脚本编辑的界面状态。

 

图2-15 脚本编辑状态

在切换到脚本编辑状态之后,在Blender中可以看到一个文本编辑器和Python的控制台窗口。在文本编辑器中,我们可以通过调用Blender的API接口进行代码编写,也可以尝试通过Python控制台进行Python命令操作。单击“新建”(New)按钮,可以创建一个新的Python脚本文件,并命名为robot.py。现在,我们可以仅通过使用Python脚本语言对机器人的3D模型进行建模。接下来的部分包含对机器人进行3D建模的完整脚本设计过程。在运行之前,我们先来讨论一下它的代码编写过程。希望在此之前,你已经从网站上了解过Blender中提供的Python API接口设置。可以把接下来的代码部分成6个Python功能函数,目的是为了设计出机器人的底座、中间层和顶层,机器人的电机和轮子,4个支撑管,最后将它们输出形成STL(STereoLithography,立体平板印刷)格式的3D文件,用于模型的仿真。

2.5.3 机器人建模中的Python脚本

下面,我们来看看在机器人建模过程中,如何一步步编写Python脚本。

1.?在开始编写Python脚本之前,我们必须在Blender中先导入bpy模块。bpy模块包含Blender中所有的功能函数,并且只能通过Blender应用程序进行内部访问:

 

2.?下面的函数将画出机器人的底座。一个半径为5cm的圆柱面,在它的两侧都削减去一部分,用于机器人电机的连接,连接状态在Blender中可以用布尔型(Boolean)修饰符:

 

3.?创建两个半径为0.05m的立方体,它们分别位于底座的两边。创建这两个立方体是为了从底座上抠掉这两个立方体。这样,我们会得到一个底座,它的两边有两个空心的立方体。之后,要将之前创建的这两个立方体删除,该过程的代码如下:

 

 

4.?绘制机器人底座上的电机和轮子:

 

5.?绘制轮子,它是由一个半径为0.045m高为0.01m的圆柱体制成的。在轮子生成以后,它可以旋转到合适的角度,放置在底座两边空心的立方体处:

 

 

6.?在底座上添加两个虚拟的电机。电机的2D设计尺寸在前面已经提到过。电机大致就是一个圆柱体的形状,通过旋转到合适的角度将其放置在底座上:

 

7.?在电机上添加一个轴,相当于对电机进行建模。电机的轴也可以看作是一个小的圆柱体,将其旋转合适的角度,插入电机模型中:

 

8.?在底座上添加两个脚轮。这里我们用圆柱体代替轮子,在仿真的时候,可以把它当作是轮子:

 

9.?添加一个虚拟的Kinect传感器:

 

10.?绘制机器人的中间层:

 

 

11.?绘制连接底层、中间层和顶层的4个支撑空心管:

 

12.?将设计好的机器人图纸输出成STL格式文件。在执行脚本命令之前,要更改STL文件的路径:

 

13.?在文本编辑器中键入代码之后,通过点击“运行脚本”按钮执行该脚本,如

图2-16屏幕截图上的方框所示。输出的3D模型会在Blender的3D视图窗口显示。同时,如果认真查看桌面,能够找到用于仿真的exported.stl文件。

exported.stl文件可以用MeshLab软件打开,MeshLab的屏幕截图如图2-17所示。

 

图2-16 执行脚本后的屏幕截图

 

图2-17 MeshLab截图

下载示例代码

你可从华章网站(www.hzbook.com)下载本书的示例代码。

相关文章
|
28天前
|
机器人
1024 云上见 使用 PAI+LLaMA Factory 微调 Qwen2-VL 模型,搭建 “文旅领域知识问答机器人” 领精美计时器
1024 云上见 使用 PAI+LLaMA Factory 微调 Qwen2-VL 模型,搭建 “文旅领域知识问答机器人” 领精美计时器
84 3
|
2月前
|
机器学习/深度学习 人工智能 分布式计算
使用PAI+LLaMA Factory 微调 Qwen2-VL 模型,搭建文旅领域知识问答机器人
本次教程介绍了如何使用 PAI ×LLaMA Factory 框架,基于全参方法微调 Qwen2-VL 模型,使其能够进行文旅领域知识问答,同时通过人工测试验证了微调的效果。
使用PAI+LLaMA Factory 微调 Qwen2-VL 模型,搭建文旅领域知识问答机器人
|
6天前
|
XML 算法 自动驾驶
ROS进阶:使用URDF和Xacro构建差速轮式机器人模型
【11月更文挑战第7天】本篇文章介绍的是ROS高效进阶内容,使用URDF 语言(xml格式)做一个差速轮式机器人模型,并使用URDF的增强版xacro,对机器人模型文件进行二次优化。
|
13天前
|
机器学习/深度学习 算法 TensorFlow
基于深度学习的【野生动物识别】系统设计与实现~Python
动物识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对18种动物数据集进行训练,最后得到一个识别精度较高的模型。并基于Django框架,开发网页端操作平台,实现用户上传一张动物图片识别其名称。目前可识别的动物有:'乌龟', '云豹', '变色龙', '壁虎', '狞猫', '狮子', '猎豹', '美洲狮', '美洲虎', '老虎', '蜥蜴', '蝾螈', '蟾蜍', '豹猫', '钝吻鳄', '雪豹','非洲豹', '鬣蜥'。本系统是一个完整的人工智能,机器学习,深度学习项目,包含训练预测代码,训练好的模型,WEB网页端界面,数
38 2
|
26天前
|
机器人
1024 云上见 使用 PAI+LLaMA Factory 微调 Qwen2-VL 模型,搭建 “文旅领域知识问答机器人” 领 200个 精美计时器等你领
1024 云上见 使用 PAI+LLaMA Factory 微调 Qwen2-VL 模型,搭建 “文旅领域知识问答机器人” 领 200个 精美计时器等你领
72 2
|
1月前
|
JSON 机器人 API
详解如何使用 Python 操作 Telegram(电报)机器人(一)
详解如何使用 Python 操作 Telegram(电报)机器人(一)
188 8
|
1月前
|
机器人 数据库 Python
详解如何使用 Python 操作 Telegram(电报)机器人(二)
详解如何使用 Python 操作 Telegram(电报)机器人(二)
107 2
|
1月前
|
人工智能 自然语言处理 机器人
用Python构建你的第一个聊天机器人
【10月更文挑战第7天】在这篇文章中,我们将一起探索如何利用Python编程语言和AI技术,一步步打造一个基础的聊天机器人。无论你是编程新手还是有一定经验的开发者,都能通过这个指南获得启发,并实现一个简单的对话系统。文章将引导你理解聊天机器人的工作原理,教你如何收集和处理用户输入,以及如何设计机器人的响应逻辑。通过动手实践,你不仅能够学习到编程技能,还能深入理解人工智能在语言处理方面的应用。
32 0
|
3月前
|
机器学习/深度学习 算法 机器人
使用Python实现深度学习模型:智能灾害响应与救援机器人
使用Python实现深度学习模型:智能灾害响应与救援机器人
77 16
|
3月前
|
SQL 关系型数据库 数据库
【python】python社交交友平台系统设计与实现(源码+数据库)【独一无二】
【python】python社交交友平台系统设计与实现(源码+数据库)【独一无二】
136 10