机器人系统设计与制作: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)下載本書的示例代碼。
總結
以上是生活随笔為你收集整理的机器人系统设计与制作:Python语言实现2.5 用Blender制作机器人的三维模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 推荐几个比较好的日语翻译网站还有软件(我
- 下一篇: 揭开小额信贷业务系统的秘密