机器人系统设计与制作:Python语言实现2.5 用Blender制作机器人的三维模型
2.5 用Blender制作機(jī)器人的三維模型
在這一節(jié)中,我們將設(shè)計(jì)機(jī)器人的3D模型。3D模型主要用來進(jìn)行三維仿真,采用Blender工具軟件進(jìn)行建模。Blender的版本必須要在V2.6以上,目前我們只在V2.6以上版本中測(cè)試過。
Blender軟件主界面上的工作空間和用于3D建模的工具欄如圖2-14的屏幕截圖所示。
我們選擇用Blender這個(gè)工具的主要原因是,它可以用Python腳本語言進(jìn)行機(jī)器人的3D建模。Blender有一個(gè)內(nèi)置的Python解釋器和腳本編輯器,用于代碼編寫。這里,我們就先不討論Blender的用戶界面了,可以在網(wǎng)上找到詳細(xì)的教程,可參考下面的鏈接:http://www.blender.org/support/tutorials/。
下面,我們用Python在Blender中開始為機(jī)器人進(jìn)行3D建模吧!
2.5.1 Blender中的Python腳本語言
Blender軟件主要使用C、C++和Python語言。用戶可以通過編寫自己的Python腳本語言,調(diào)用Blender中的所有功能函數(shù)。如果你非常精通Blender中Python的API接口,那么可以完全通過編寫Python腳本代碼構(gòu)造機(jī)器人的3D模型,代替通過人工拖曳工具欄上的工具軟件進(jìn)行建模。
?
圖2-14 Blender軟件主界面
Blender使用Python 3.x.Blender版本。Python API大部分都比較穩(wěn)定,但有些地方的功能仍需要補(bǔ)充和改進(jìn)。詳細(xì)的Python API文檔可參考:http://www.blender.org/documen-tation/blender_python_api_2_69_7/。
下面,我們開始用Blender中的Python API編寫機(jī)器人模型的腳本代碼。
2.5.2 Blender中的Python API介紹
Blender中的Python API接口能夠完成絕大部分的功能,能完成的工作主要有以下幾項(xiàng):
可以編輯Blender中的任何數(shù)據(jù),例如場(chǎng)景、網(wǎng)格、單點(diǎn)數(shù)據(jù)等;
修改用戶偏好設(shè)置、索引圖及界面主題;
創(chuàng)建新的Blender工具;
用Python編寫OpenGL命令行,繪制3D視角。
Blender給Python解釋器提供了一個(gè)bpy模塊,這個(gè)模塊可以導(dǎo)入Python腳本語言中,并訪問Blender中的數(shù)據(jù)、類和函數(shù)。Python腳本必須通過這個(gè)模塊,才能處理Blender中的數(shù)據(jù)。bpy中我們所用到的Python模塊有以下幾種:
Context Access(上下文訪問):允許從bpy.context腳本訪問Blender用戶界面功能。
Data Access(數(shù)據(jù)訪問):允許訪問Blender內(nèi)部數(shù)據(jù)(bpy.data)。
Operators(運(yùn)算符):允許Python訪問調(diào)用運(yùn)算符,其中包括C、Python和Macros的運(yùn)算符(bpy.ops)。
為了在Blender中切換到腳本編輯狀態(tài),需要改變Blender的界面布局。圖2-15所示的屏幕截圖中用方框標(biāo)明的選項(xiàng),可以幫您很容易地切換到腳本編輯的界面狀態(tài)。
?
圖2-15 腳本編輯狀態(tài)
在切換到腳本編輯狀態(tài)之后,在Blender中可以看到一個(gè)文本編輯器和Python的控制臺(tái)窗口。在文本編輯器中,我們可以通過調(diào)用Blender的API接口進(jìn)行代碼編寫,也可以嘗試通過Python控制臺(tái)進(jìn)行Python命令操作。單擊“新建”(New)按鈕,可以創(chuàng)建一個(gè)新的Python腳本文件,并命名為robot.py。現(xiàn)在,我們可以僅通過使用Python腳本語言對(duì)機(jī)器人的3D模型進(jìn)行建模。接下來的部分包含對(duì)機(jī)器人進(jìn)行3D建模的完整腳本設(shè)計(jì)過程。在運(yùn)行之前,我們先來討論一下它的代碼編寫過程。希望在此之前,你已經(jīng)從網(wǎng)站上了解過Blender中提供的Python API接口設(shè)置。可以把接下來的代碼部分成6個(gè)Python功能函數(shù),目的是為了設(shè)計(jì)出機(jī)器人的底座、中間層和頂層,機(jī)器人的電機(jī)和輪子,4個(gè)支撐管,最后將它們輸出形成STL(STereoLithography,立體平板印刷)格式的3D文件,用于模型的仿真。
2.5.3 機(jī)器人建模中的Python腳本
下面,我們來看看在機(jī)器人建模過程中,如何一步步編寫Python腳本。
1.?在開始編寫Python腳本之前,我們必須在Blender中先導(dǎo)入bpy模塊。bpy模塊包含Blender中所有的功能函數(shù),并且只能通過Blender應(yīng)用程序進(jìn)行內(nèi)部訪問:
?
2.?下面的函數(shù)將畫出機(jī)器人的底座。一個(gè)半徑為5cm的圓柱面,在它的兩側(cè)都削減去一部分,用于機(jī)器人電機(jī)的連接,連接狀態(tài)在Blender中可以用布爾型(Boolean)修飾符:
?
3.?創(chuàng)建兩個(gè)半徑為0.05m的立方體,它們分別位于底座的兩邊。創(chuàng)建這兩個(gè)立方體是為了從底座上摳掉這兩個(gè)立方體。這樣,我們會(huì)得到一個(gè)底座,它的兩邊有兩個(gè)空心的立方體。之后,要將之前創(chuàng)建的這兩個(gè)立方體刪除,該過程的代碼如下:
?
?
4.?繪制機(jī)器人底座上的電機(jī)和輪子:
?
5.?繪制輪子,它是由一個(gè)半徑為0.045m高為0.01m的圓柱體制成的。在輪子生成以后,它可以旋轉(zhuǎn)到合適的角度,放置在底座兩邊空心的立方體處:
?
?
6.?在底座上添加兩個(gè)虛擬的電機(jī)。電機(jī)的2D設(shè)計(jì)尺寸在前面已經(jīng)提到過。電機(jī)大致就是一個(gè)圓柱體的形狀,通過旋轉(zhuǎn)到合適的角度將其放置在底座上:
?
7.?在電機(jī)上添加一個(gè)軸,相當(dāng)于對(duì)電機(jī)進(jìn)行建模。電機(jī)的軸也可以看作是一個(gè)小的圓柱體,將其旋轉(zhuǎn)合適的角度,插入電機(jī)模型中:
?
8.?在底座上添加兩個(gè)腳輪。這里我們用圓柱體代替輪子,在仿真的時(shí)候,可以把它當(dāng)作是輪子:
?
9.?添加一個(gè)虛擬的Kinect傳感器:
?
10.?繪制機(jī)器人的中間層:
?
?
11.?繪制連接底層、中間層和頂層的4個(gè)支撐空心管:
?
12.?將設(shè)計(jì)好的機(jī)器人圖紙輸出成STL格式文件。在執(zhí)行腳本命令之前,要更改STL文件的路徑:
?
13.?在文本編輯器中鍵入代碼之后,通過點(diǎn)擊“運(yùn)行腳本”按鈕執(zhí)行該腳本,如
圖2-16屏幕截圖上的方框所示。輸出的3D模型會(huì)在Blender的3D視圖窗口顯示。同時(shí),如果認(rèn)真查看桌面,能夠找到用于仿真的exported.stl文件。
exported.stl文件可以用MeshLab軟件打開,MeshLab的屏幕截圖如圖2-17所示。
?
圖2-16 執(zhí)行腳本后的屏幕截圖
?
圖2-17 MeshLab截圖
下載示例代碼
你可從華章網(wǎng)站(www.hzbook.com)下載本書的示例代碼。
總結(jié)
以上是生活随笔為你收集整理的机器人系统设计与制作:Python语言实现2.5 用Blender制作机器人的三维模型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 推荐几个比较好的日语翻译网站还有软件(我
- 下一篇: 揭开小额信贷业务系统的秘密