第一篇:水表指針識別大作業(yè)最終報告
水表指針識別大作業(yè)最終報告
摘 要:由于讀表過程中存在誤差和錯誤,造成水表讀數(shù)不準(zhǔn)確,在水表圖像處
理中及讀數(shù)作了詳細(xì)的講述。而圖像邊緣檢測是本次大作業(yè)的重點,著 重講解了用Sobel算子和Prewitte算子來處理圖像的邊緣檢測。通過分析 了倆種Hough變換的優(yōu)缺點以后,采用較為有效的點Hough變換作為大/小圓檢測的方式。本次大作業(yè)用前景廣泛,對人類的生產(chǎn)技術(shù)的改進(jìn)具有積極且實際的意義,有很大的市場價值。
關(guān)鍵詞:圖像處理;邊緣檢測;水表指針;Hough 變換
實驗?zāi)康模狠斎胨韴D像,輸出三個指針數(shù)值。
實驗流程:(1)邊緣檢測:利用Sobel算子實現(xiàn)水表圖像輪廓的邊緣檢測(2)反色變換:反色的實際含義是將R、G、B 值反轉(zhuǎn),使圖像有用的
信息更加明顯突出。
(3)二值化:通過直方圖,利用圖像分割方法,分割圖像中的指針信
息區(qū)域并提取指針信息;
(4)圓檢測:利用Hough 變換找到圓心,并計算半徑;
(5)指針檢測:采用模板匹配法確定指針能指示方位(指針中心線相
對于零刻度線夾角);
(6)輸出結(jié)果并查看信息:根據(jù)夾角計算出每個指針示值,由此可確
定水表的讀數(shù)。
實驗內(nèi)容及結(jié)果顯示: a.邊緣檢測及反色
第一輪利用Prewitt算子進(jìn)行邊緣檢測,用sobel算子處理后的反色效果圖如下:
b.閾值選擇及二值化
圖像二值化的目的是將圖像一分為二,即將圖像劃分為物體和背景兩個部分,利用圖像的灰度直方圖以確定相應(yīng)的分割閾值是實現(xiàn)圖像二值化的一個方法,我們可以發(fā)現(xiàn)直方圖的閾值大概取在180左右。為了精確閾值,我們做了閾值選擇功能通過細(xì)調(diào)確定我們的最后閾值,而且還用于做不同水表圖的測試用,及更改步驟順序用。最后決定選取閾值為178.直方圖
閾值選擇
在此過程中還拓展了二值化中的大律法和邊界法,最后我們在把閾值設(shè)為178后的處理效果圖如下:
c.大/小圓檢測
圓Hough 變換是目前應(yīng)用最為廣泛的圓檢測方法,該方法的最大特點是可靠性高,在噪聲、變形、甚至部分區(qū)域丟失的狀態(tài)下仍然能取得理想的結(jié)果。為了確定圓心坐標(biāo)和半徑的值,圓Hough 變換是一種有效的方法。
圓的方程為(x-a)2 +(y-b)2 = r2,其中a,b,r分別表示圓的縱橫圓心坐標(biāo)和半徑的值。式中有三個參數(shù)a ,b ,r,所以需要在參數(shù)空間建立一個三維累加數(shù)組A(a,b,r),根據(jù)具體圖像計算出每一個三元組(a,b,r),對R進(jìn)行累加;R(a , b , r)← R(a , b , r)+ 1 ;然后對R(a,b,r)進(jìn)行搜索,找出一個三元組(a0,b0,c0),使得對所有的R(a,b,r)中R(a0,b0,c0)最大。經(jīng)過以上運算得到的三元組(a0,b0,c0)即認(rèn)為是指定區(qū)域內(nèi)存在的圓形目標(biāo)。該算法的關(guān)鍵是通過峰值檢測求出三元組(a0,b0,c0)以確定圓的參數(shù)。
為了確定圓心坐標(biāo)和半徑的值,圓Hough變換是一種有效的方法。根據(jù)圓的幾何性質(zhì),確定三個點K,L,M,KL的中垂線Lkl 與LM 的中垂線Ilm 必然相交于圓C 的中心O,設(shè)K、L、M 3 點的坐標(biāo)分別為(Xk,Yk)、(Xl,Yl)、(Xm,Ym),則Lkl和Ilm的方程分別為:
Lkl: y= Kkl+Dkl(Kkl=(Xk-Xl)/(Yk-Yl), Dkl =Yk +Yl-Kkl(Xkl(Xk-Xl))/2)Ilm: y= Klm+Dlm(Klm=(Xl-Xm)/(Yl-Ym), Dlm =Ym +Yl-Klm(Xlm(Xl-Xm))/2)
原理圖
從而計算出圓心x,y和半徑r,所以總結(jié)為半徑Ri,中心(Ai,Bi)的圓周上任意不共線的3 點(以下稱為點組)對應(yīng)R-B-R 空間中一點(Ai,Bi,Ri),也就是所謂的點Hough變換,具體的圓心檢測我們將在下星期做詳細(xì)的分析,目前我們做的效果顯示圖如下:
大圓檢測
小圓檢測
d.指針檢測
指針檢測有如下步驟:
(1)上邊的小圓檢測,確定了三個圓心點。即0.01,0.001,0.0001三個指針,三點組成一個三角形;
(2)確定長邊。由水表指針的三個圓心點的特點,0.01 和0.0001指針?biāo)M成的直線為長邊;
(3)確定第三點在長邊的上邊還是下邊;
(4)確定三點的位置。設(shè)為0.01->1;0.001->2;0.0001->3;
輸入0指針的偏轉(zhuǎn)角度,以點1為中心,邊13順時針旋轉(zhuǎn)到0指針方向的角度是固定的(在本設(shè)計中使用的水表角度為135 度)。將這個已知角度轉(zhuǎn)化為跟x軸正方向的轉(zhuǎn)角,計算三根指針的偏轉(zhuǎn),得到最后的讀數(shù)。效果圖如下:
指針識別效果圖
F.最終檢測結(jié)果報告
經(jīng)過一系列的處理我們可以得到大圓的圓心坐標(biāo),還有每個指針?biāo)诘男A圓心坐標(biāo)及角度,最重要的我們還可以直接從中讀出每個指針的讀數(shù)。這樣我們就可以很自然地讀出該水表的最終總的讀數(shù)。具體顯示如下:
最終檢測結(jié)果顯示
E.結(jié)論與總結(jié)
后面的重點我們將放在如何優(yōu)化上,我們作了如下計劃:
A.在邊緣檢測中,改進(jìn)原有算法,提高檢測的準(zhǔn)確度,以獲得有效邊緣,減少對毛刺邊緣的無效檢測;
B.在二值化中,我們的閾值取得看似挺好,但得尋找一種根據(jù)算法自己選擇最佳閾值的方法,不然換張水表圖就得人工選個閾值比較麻煩;
C.在圓檢測中,加快檢測的速度,提高檢測的精確性,做一些必要的改進(jìn)。D.圓檢測用于多指針式儀表上,尤其是很多企業(yè)目前依舊采用低效率的人工眼檢測,所以在目前工業(yè)上有很大的前景
第二篇:大作業(yè)報告格式
大作業(yè)報告格式
一、題目及要求
二、設(shè)計思路
三、問題分析及解決方案
四、輸入輸出
五、源代碼
六、測試結(jié)果
七、總結(jié)、系統(tǒng)評價及展望
八、***53922
第三篇:Android大作業(yè)報告
移動設(shè)備軟件應(yīng)用與開
發(fā) 大作業(yè)報告
姓 名: 學(xué) 號: 班 級: 院 系: 日 期:
任課教師:
一、程序的運行環(huán)境、安裝步驟
1、運行環(huán)境 游戲運行環(huán)境:Android1.5以上版本
2、程序的組成部份:
2.1、JDK安裝
1.我的電腦->屬性->高級->環(huán)境變量->系統(tǒng)變量中添加以下環(huán)境變量: 2.JAVA_HOME值為: D:Program FilesJavajdk1.6.0_18(你安裝JDK的目錄)3.CLASSPATH值為:.;%JAVA_HOME%libtools.jar;%JAVA_HOME%libdt.jar;%JAVA_HOME%bin;4.Path: 在開始追加 %JAVA_HOME%bin;5.NOTE:前面四步設(shè)置環(huán)境變量對搭建Android開發(fā)環(huán)境不是必須的,可以跳過。
安裝完成之后,可以在檢查JDK是否安裝成功。打開cmd窗口,輸入java –version 查看JDK的版本信息。出現(xiàn)類似下面的畫面表示安裝成功了:
2.2、Eclipse安裝 2.3、Android SDK安裝
在Android Developers下載android-sdk_r05-windows.zip,下載完成后解壓到任意路徑。運行SDK Setup.exe,點擊Available Packages。如果沒有出現(xiàn)可安裝的包,請點擊Settings,選中Misc中的“Force https://...”這項,再點擊Available Packages。
選擇希望安裝的SDK及其文檔或者其它包,點擊Installation Selected、Accept All、Install Accepted,開始下載安裝所選包
在用戶變量中新建PATH值為:Android SDK中的tools絕對路徑(本機為D:AndroidDevelopandroid-sdk-windowstools)。image圖
2、設(shè)置Android SDK的環(huán)境變量
“確定”后,重新啟動計算機。重啟計算機以后,進(jìn)入cmd命令窗口,檢查SDK是不是安裝成功。
運行 android –h 如果有類似以下的輸出,表明安裝成功:
圖
3、驗證Android SDK是否安裝成功
2.4、ADT安裝
打開 Eclipse IDE,進(jìn)入菜單中的 “Help”-> “Install New Software” 點擊Add...按鈕,彈出對話框要求輸入Name和Location:Name自己隨便取,Location輸入http://dl-ssl.google.com/android/eclipse。如下圖所示:
確定返回后,在work with后的下拉列表中選擇我們剛才添加的ADT,我們會看到下面出有Developer Tools,展開它會有Android DDMS和Android Development Tool,勾選他們。如下圖所示:
然后就是按提示一步一步next。完成之后:
選擇Window > Preferences...在左邊的面板選擇Android,然后在右側(cè)點擊Browse...并選中SDK路徑,本機為:
D:AndroidDevelopandroid-sdk-windows點擊Apply、OK。配置完成。2.5、創(chuàng)建AVD 為使Android應(yīng)用程序可以在模擬器上運行,必須創(chuàng)建AVD。
1、在Eclipse中。選擇Windows > Android SDK and AVD Manager
2、點擊左側(cè)面板的Virtual Devices,再右側(cè)點擊New
3、填入Name,選擇Target的API,SD Card大小任意,Skin隨便選,Hardware目前保持默認(rèn)值
4、點擊Create AVD即可完成創(chuàng)建AVD 注意:如果你點擊左側(cè)面板的Virtual Devices,再右側(cè)點擊New,而target下拉列表沒有可選項時,這時候你:
點擊左側(cè)面板的Available Packages,在右側(cè)勾選https://dl-ssl.google.com/android/repository/repository.xml,如下圖所示:
然后點擊Install Selected按鈕,接下來就是按提示做就行了
要做這兩步,原因是在1.3、Android SDK安裝中沒有安裝一些必要的可用包(Available Packages)。2.5、創(chuàng)建Android工程
三、程序開發(fā)平臺
(1)代碼行數(shù):1000
(2)開發(fā)環(huán)境:Android Developer Tools Build: v22.6.2-1085508
apache-ant-1.9.3
四、程序功能說明:
單機屏幕按住不放可以拖動魔方轉(zhuǎn)動,魔方上下左右空白處可以轉(zhuǎn)動魔方相對那一面。
五、應(yīng)用核心源碼
class MFtestSurfaceView extends GLSurfaceView {
private MFtestRenderer mRenderer;
private float mPreviousX;
private float mPreviousY;//上一次的點
private float mDownPreviousX;
private float mDownPreviousY;//上一次的Down點
// private int oldDownX;
// private int
private float theta;
private float fai;//球坐標(biāo)
public MFtestSurfaceView(Context context){
super(context);
theta=(float)3.14159/4;
fai=(float)3.14159/4;
// Set the Renderer for drawing on the GLSurfaceView
mRenderer = new MFtestRenderer();
setRenderer(mRenderer);
setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
}
@Override
public boolean onTouchEvent(MotionEvent e){
// MotionEvent reports input details from the touch screen
// and other input controls.In this case, you are only
// interested in events where the touch position changed.float x = e.getX();
float y = e.getY();
switch(e.getAction()){
case MotionEvent.ACTION_MOVE://如果是 移動的話
float dx = xmPreviousY;//x,y的變換值(不是0,就是1)
float te=theta;
theta=theta+dy/100;//角度是弧度值
if(!(theta>0&&theta<3.14159))
{
theta=te;//法線始終向上
}
fai=fai+ dx/100;
//x=rsinθcosφ
mRenderer.eyez=(float)(3*Math.sin(theta)*Math.cos(fai));
//y=rsinθsinφ
mRenderer.eyex=(float)(3*Math.sin(theta)*Math.sin(fai));
////z=rcosθ
利用球坐標(biāo)使觀察點始終維持在半徑為3的球上
mRenderer.eyey=(float)(3*Math.cos(theta));
requestRender();
//System.out.println(x+“
”+y);
break;
case MotionEvent.ACTION_DOWN:
mDownPreviousX=x;
mDownPreviousY=y;
break;
case MotionEvent.ACTION_UP:
if((((x-mDownPreviousX)>-5)&&((x-mDownPreviousX)<5))&&(((y-mDownPreviousY)>-5)&&((y-mDownPreviousY)<5)))//(((x-mDownPreviousX)>-3)||((x-mDownPreviousX)>-3))&&(((y-mDownPreviousY)>-3)||((y-mDownPreviousY)>-3))
{
//System.out.println(x-mDownPreviousX);
if(x
<(mRenderer.width*(1-Math.sqrt(18)/6)/2))
{
//左
//System.out.println(x+“
左
”+y);
mRenderer.action = 1;
DrawAnimation();
}
else if(x
>
mRenderer.width-(mRenderer.width*(1-Math.sqrt(18)/6)/2))
{
//右
//System.out.println(x+“
右
”+y);
mRenderer.action = 2;
DrawAnimation();
}
else if(y
<
mRenderer.height/2.0-!)
switch(mRenderer.action){
case 1:
if((mRenderer.eyex > 0)&&(mRenderer.eyez > 0)){
mRenderer.move=76;
}
else if((mRenderer.eyex > 0)&&(mRenderer.eyez < 0)){
mRenderer.move=70;
}
else if((mRenderer.eyex < 0)&&(mRenderer.eyez < 0)){
mRenderer.move=82;
}
else if((mRenderer.eyex < 0)&&(mRenderer.eyez > 0)){
mRenderer.move=66;
}
break;
case 2:
if((mRenderer.eyex > 0)&&(mRenderer.eyez > 0)){
mRenderer.move=66;
}
else if((mRenderer.eyex > 0)&&(mRenderer.eyez < 0)){
mRenderer.move=76;
}
else if((mRenderer.eyex < 0)&&(mRenderer.eyez < 0)){
mRenderer.move=70;
}
else if((mRenderer.eyex < 0)&&(mRenderer.eyez > 0)){
mRenderer.move=82;
}
break;
case 3:
mRenderer.move=85;
break;
case 4:
mRenderer.move=68;
break;
}
}
private void memcpy(int one,int two){
mRenderer.face_color[one]=mRenderer.face_color[two];
mRenderer.face_color[one+1]=mRenderer.face_color[two+1];
mRenderer.face_color[one+2]=mRenderer.face_color[two+2];
}
private void LeftShift(int a,int b,int c,int d){
// a
float temp1=mRenderer.face_color[a];
float temp2=mRenderer.face_color[a+1];
float temp3=mRenderer.face_color[a+2];
memcpy(a,b);
memcpy(b,c);
memcpy(c,d);
mRenderer.face_color[d]= temp1;
mRenderer.face_color[d+1]=temp2;
mRenderer.face_color[d+2]=temp3;
} }
private void DrawRotation(GL10 gl){
// 繪制小立方體
switch(move){ case 70: DrawCube19(gl);DrawCube11(gl);DrawCube2(gl);DrawCube22(gl);DrawCube13(gl);DrawCube5(gl);DrawCube25(gl);DrawCube16(gl);DrawCube8(gl);DrawCube18(gl);DrawCube10(gl);DrawCube1(gl);DrawCube21(gl);DrawCube4(gl);DrawCube24(gl);DrawCube15(gl);
gl.glPushMatrix();gl.glRotatef(-angle,0.0f,0.0f,1.0f);DrawCube0(gl);DrawCube9(gl);DrawCube17(gl);DrawCube3(gl);DrawCube12(gl);DrawCube20(gl);DrawCube6(gl);DrawCube14(gl);
DrawCube7(gl);
DrawCube23(gl);
gl.glPopMatrix();break;case 66: DrawCube0(gl);DrawCube9(gl);DrawCube17(gl);DrawCube3(gl);DrawCube12(gl);DrawCube20(gl);DrawCube6(gl);DrawCube14(gl);
DrawCube23(gl);DrawCube18(gl);DrawCube10(gl);DrawCube1(gl);
DrawCube21(gl);DrawCube4(gl);DrawCube24(gl);DrawCube15(gl);DrawCube7(gl);
gl.glPushMatrix();
gl.glRotatef(angle,0.0f,0.0f,1.0f);
DrawCube19(gl);DrawCube11(gl);DrawCube2(gl);DrawCube22(gl);
DrawCube13(gl);DrawCube5(gl);DrawCube25(gl);DrawCube16(gl);DrawCube8(gl);
gl.glPopMatrix();
break;
case 85:
DrawCube3(gl);DrawCube23(gl);DrawCube24(gl);DrawCube25(gl);
DrawCube4(gl);DrawCube5(gl);DrawCube6(gl);DrawCube7(gl);
DrawCube8(gl);DrawCube12(gl);DrawCube13(gl);DrawCube14(gl);
DrawCube15(gl);DrawCube16(gl);DrawCube20(gl);DrawCube21(gl);DrawCube22(gl);
gl.glPushMatrix();
gl.glRotatef(-angle,0.0f,1.0f,0.0f);
DrawCube0(gl);DrawCube1(gl);DrawCube2(gl);DrawCube9(gl);
DrawCube10(gl);DrawCube11(gl);DrawCube17(gl);DrawCube18(gl);DrawCube19(gl);
gl.glPopMatrix();
break;
case 68:
DrawCube0(gl);DrawCube1(gl);DrawCube2(gl);DrawCube3(gl);
DrawCube4(gl);DrawCube5(gl);DrawCube9(gl);DrawCube10(gl);
DrawCube11(gl);DrawCube12(gl);DrawCube13(gl);DrawCube17(gl);
DrawCube18(gl);DrawCube19(gl);DrawCube20(gl);DrawCube21(gl);DrawCube22(gl);
gl.glPushMatrix();
gl.glRotatef(angle,0.0f,-1.0f,0.0f);
DrawCube6(gl);DrawCube7(gl);DrawCube8(gl);DrawCube14(gl);
DrawCube15(gl);DrawCube16(gl);DrawCube23(gl);DrawCube24(gl);DrawCube25(gl);
gl.glPopMatrix();
break;
case 82:
DrawCube9(gl);DrawCube10(gl);DrawCube11(gl);DrawCube25(gl);
DrawCube12(gl);DrawCube13(gl);DrawCube14(gl);DrawCube15(gl);
DrawCube16(gl);DrawCube17(gl);DrawCube18(gl);DrawCube19(gl);
DrawCube20(gl);DrawCube21(gl);DrawCube22(gl);DrawCube23(gl);DrawCube24(gl);
gl.glPushMatrix();
gl.glRotatef(-angle,1.0f,0.0f,0.0f);
DrawCube0(gl);DrawCube1(gl);DrawCube2(gl);DrawCube3(gl);
DrawCube4(gl);DrawCube5(gl);DrawCube6(gl);DrawCube7(gl);DrawCube8(gl);
gl.glPopMatrix();
break;
case 76:
DrawCube0(gl);DrawCube1(gl);DrawCube2(gl);DrawCube3(gl);
DrawCube4(gl);DrawCube5(gl);DrawCube6(gl);DrawCube7(gl);
DrawCube8(gl);DrawCube9(gl);DrawCube10(gl);DrawCube11(gl);
DrawCube12(gl);DrawCube13(gl);DrawCube14(gl);DrawCube15(gl);DrawCube16(gl);
gl.glPushMatrix();
gl.glRotatef(-angle,-1.0f,0.0f,0.0f);
DrawCube17(gl);DrawCube18(gl);DrawCube19(gl);DrawCube20(gl);
DrawCube21(gl);DrawCube22(gl);DrawCube23(gl);DrawCube24(gl);DrawCube25(gl);
gl.glPopMatrix();
break;
default:
break;
}
六、工程運行效果截圖
10月20日 查找Android開發(fā)的配置及流程 10月22日 查找資料確定要使用的算法與數(shù)據(jù)結(jié)構(gòu) 10月23日 系統(tǒng)設(shè)計 10月24日 開始編碼
10月28日 游戲基本功能完成,進(jìn)入測試階段 11月2日 程序開發(fā)完成,編寫文檔
八、總結(jié)
因為之前自己學(xué)習(xí)過Android游戲開發(fā)的相關(guān)知識,也自己做過一個小游戲,所以對這方面比較了解,不過之前開發(fā)的小游戲是用Cocos2d引擎完成,和Android原生的不太一樣,通過這次大作業(yè)的完成,對Android的基本開發(fā)有了一定的了解。對圖像的繪制有了一定的了解。
第四篇:linux大作業(yè)報告
華南理工大學(xué)
Linux課程期末大作業(yè)
大作業(yè)題目:
學(xué)
院 :
專
業(yè): 姓
名: 學(xué)
號:
2013年6月
一、大作業(yè)題目及要求
二、程序設(shè)計原理圖
三、程序原理描述及設(shè)計思路
四、大作業(yè)設(shè)計總結(jié)及心得體會
五、源代碼
/ 2
第五篇:《機械工程有限元分析基礎(chǔ)》大作業(yè)報告
《機械工程有限元分析基礎(chǔ)》大作業(yè)報告
題 目 | 飛輪 |
學(xué)生姓名 | 毛雨 |
學(xué) 號 | 2118011416 |
院 部 | 機電工程與自動化 |
專 業(yè) | 機械工程 |
班 級 | 21180114 |
二〇二一年六月
一、建模過程/步驟
1、ANSYS分析開始準(zhǔn)備工作
(1)清空數(shù)據(jù)庫并開始一個新的分析,選取 Utility > File > Clear & Start New,彈出 Clear database and Start New 對話框,單擊 OK 按鈕,彈出 Verify 對話框,單擊 OK按鈕完成清空數(shù)據(jù)庫。
(2)指定新的工作文件名 指定工作文件名。選取 Utility Menu > File >Change Jobname,彈出 Change Jobname 對話框,在 Enter New Jobname 項輸入工作文件名“feilm”,單擊 OK按鈕完成工作文件名的定義。
(3)指定新的標(biāo)題指定分析標(biāo)題。選取 Utility Menu > File > Change Title,彈出 Change Title 對話框,在 Enter New Title 項輸入標(biāo)題名“feilun axis”為標(biāo)題名,然后單擊OK按鈕完成分析標(biāo)題的定義。
(4)重新刷新圖形窗口 選取 Utility Menu > Plot >Repiot,定義的信息顯示在圖形窗口中。
2、確定分析類型
(1)運行主菜單 Main Menu > Preference 彈出分析類型設(shè)定對話框,選擇分析模塊為 Structural 結(jié)構(gòu)分析,然后單擊 OK 按鈕完成分析類型定義。
(2)d定義單元及材料屬性
(3)新建單元類型 運行主菜單 Main Menu >Preprocessor > Element Type > Add/Edit/Delete 命令,彈出 Element types 對話框,單擊 Add 按鈕新建單元類型,彈出 Library of Element Types 對話框,先選擇單元大類為 solid,接著選擇 Quad 8 node 183,單擊 OK 按鈕,完成單元類型選擇。接著單擊 Option 按鈕進(jìn)入單元設(shè)置選項,在 Element behavior(K3)欄中更改選項為 Asisymmetric(軸對稱),在單擊 OK按鈕返回 Element Type 對話框,單擊 Close 按鈕完成設(shè)置。
(4)定義材料屬性 運行主菜單 Main Menu > Preprocessor > Material Props > Matorial Models 命令,系統(tǒng)顯示材料屬性設(shè)置對話框,在材料屬性對話框中一次選擇 Structure/Linear/Elastic/Isotropic。完成選擇后,彈出材料屬性對話框,方便輸入彈性模量210e9,泊松比0.27,單擊 OK 返回選擇 Density,彈出密度定義對話框,輸入密度 7800,單擊 OK返回。完成材料屬性設(shè)置后,關(guān)閉對話框離開材料屬性設(shè)置。
3、建立幾何圖形
(1)建立關(guān)鍵點
(2)繪制矩形 運行主菜單 Main Menu > Preprocessor > Modeling > Create > Areas > Rectangle > By Dimensions 命令,在對話框中分別輸入 1 點坐標(biāo) X1=50,Y1=0,2 點坐標(biāo) X2=55,Y2=50,單擊 Apply 按鈕完成第一個矩形繪制;同理,輸入3點坐標(biāo)X1=55,Y1=24,6點坐標(biāo) X2=75,Y2=16,單擊 Apply 按鈕完成第二個矩形繪制;輸入4點坐標(biāo) X1=75,Y1=40,5點坐標(biāo) X2=80,Y2=5,單擊 OK 按鈕完成第三個矩形繪制。
(3)布爾操作合并圖形 運行主菜單 Main Menu > Preprocessor > Modeling > Operate > Booleans > Add 出現(xiàn)選擇拾取對話框,依次點擊圖形再點 Apply,完成布爾加。
(4)設(shè)置顯示方式 運行菜單 Utility Menu > Plot > Line,設(shè)置顯示方式為直線,以便下一步為直線倒圓角。
(5)倒圓角 運行主菜單 Main Menu > Preprocessor > Modeling > Create > Lines > Line Fillet 彈出對話框,拾取視頻中線段,單擊 OK按鈕,出現(xiàn)圓角半徑設(shè)置對話框,F(xiàn)illet Radius 項輸入5,其他項默認(rèn),單擊 Apply 按鈕完成第一個圓角繪制;同理,完成其他三個圓角的繪制。
(6)生成面 運行菜單 Utility Menu > Plot > Line 設(shè)置直線顯示方式,運行主菜單 Main Menu > Preprocessor > Modeling > Create > Areas >Arbitrary > By Lines,出現(xiàn)選擇拾取對話框,點擊拾取視頻中的線段,單擊 Apply 按鈕完成;同理,完成其他三個面的生成,單擊 OK 按鈕結(jié)束。
(7)布爾運算 完成幾何圖形創(chuàng)建 運行主菜單 Main Menu > Preprocessor > Modeling > Operate > Booleans > Add 出現(xiàn)選擇拾取對話框,依次點擊圖形再點 Apply,完成幾何圖形創(chuàng)建。
4、劃分網(wǎng)格
(1)運行主菜單 Main Menu > Preprocessor > Meshing > Mesh Tool(網(wǎng)格劃分工具)命令,出現(xiàn) Mesh Tool 菜單,單擊 Areas 中的 set 按鈕,在單元尺寸對話框中的 Element edge length 項中輸入單元尺寸,本列中輸入1,單擊 OK 按鈕確定。在 Mesh Tool 菜單中設(shè)置 Mesh 下拉框為 Areas,shape 項選擇 Quad(四邊形單元網(wǎng)格),單擊 Mesh 按鈕劃分網(wǎng)格,出現(xiàn)的 Mesh Areas 對話框中單擊飛輪平面,在點擊Apply,系統(tǒng)將自動完成網(wǎng)格劃分。
5、加載求解
(1)顯示線段
(2)施加約束 運行主菜單 Main Menu > Solution > Define Loads > Apply > Structulal > Displacement on Lines 命令,出現(xiàn)拾取菜單,選擇視頻中線段,單擊 Apply,出現(xiàn)約束定義對話框,選擇 All DOF 約束所有自由度,在 Displacement Value 選項輸入0,在單擊OK按鈕,完成約束定義。
(3)施加載荷 運行 Main Menu > Solution > Define Loads > Apply > Structulal > Pressure > On Lines 命令,出現(xiàn)拾取菜單,選擇線段,單擊 Apply,出現(xiàn)載荷(壓力)定義對話框,輸入1e6,單擊 OK 按鈕完成。
(4)施加角速度 運行主菜單 Main Menu > Solution > Define Loads > Apply > Structulal > Inertia >Angular veloc > Globel 彈出施加速度對話框。在 OMEGY Y 項輸入62.8 單擊 OK按鈕完成。
6、求解
(1)運行主菜單 Main Menu > Solution > Current LS 命令,出現(xiàn)菜單中單擊 OK 按鈕確定。計算機開始進(jìn)行求解,求解完成后出現(xiàn)“solution is done”提示表示求解完成。單擊 Close 按鈕完成求解。
7、查看分析結(jié)果
(1)改變觀察輸出結(jié)果坐標(biāo)系 在總體柱坐標(biāo)系下觀察應(yīng)力分布和變形比較方便,因此,吧結(jié)果坐標(biāo)系轉(zhuǎn)換到柱體坐標(biāo)系下:執(zhí)行 Main Menu > General Postproc > Options for output 出現(xiàn)結(jié)果坐標(biāo)系設(shè)置對話框,設(shè)置為柱坐標(biāo)系,單擊 OK按鈕完成。
(2)顯示節(jié)點(單元)徑向位移云圖 運行主菜單 Main Menu > General Postproc > Plot Results > Contour Plot > Nodal Solu(or Element Solu)命令,選擇 DOF Solution > X-Component of Displacement 徑向位移(如果觀察周向位移,該項選擇為 Y-Component of Displacement),單擊 OK 按鈕。
(3)顯示節(jié)點(單元)應(yīng)力云圖 運行主菜單 Main Menu > General Postproc > Plot Results > Contour Plot > Nodal Solu(or Element Solu)命令,選擇 stress > X-Component stress 徑向應(yīng)力(周向應(yīng)力為 Y-Component stress),單擊 OK按鈕。
(4)三維擴展結(jié)果 運行下拉菜單 Utility Menu > PlotCtrls > Style > symmetry Expansion > 2D Axis-symmetric 彈出軸對稱擴展設(shè)置對話框,選擇 Full expansion,單擊 OK 按鈕。(也可以改成四分之一顯示)
二、結(jié)果分析圖片
圖2.1 節(jié)點徑向位移云圖
圖2.2 節(jié)點徑向應(yīng)力云圖
圖2.2 三維擴展結(jié)果圖
三、ANSYS軟件應(yīng)用小結(jié)
ANSYS軟件是融結(jié)構(gòu)、流體、電場、磁場、聲場分析于一體的大型通用有限元分析軟件。由世界上最大的有限元分析軟件公司之一的美國ANSYS開發(fā)。它能與多數(shù)CAD軟件接口,實現(xiàn)數(shù)據(jù)的共享和交換,如Pro/Engineer, NASTRAN, Alogor, I-DEAS, AutoCAD等,是現(xiàn)代產(chǎn)品設(shè)計中的高級CAE工具之一。
本次實驗是學(xué)習(xí)如何使用ANSYS 通過軟件對框架結(jié)構(gòu)內(nèi)力進(jìn)行計算,在還未學(xué)習(xí)該軟件前,對于此類問題,通常會采用力矩分配法來進(jìn)行計算,計算過程繁復(fù),計算量大,并且容易出錯。導(dǎo)致過程緩慢,效果不顯著。
在這次大作業(yè)中,我跟隨著視頻中老師的講解一步步建模和受力分析,在一開始的迷茫和不解中一次次觀看老師的教程,一點點學(xué)會使用軟件。在課堂上魏老師也在上課過程中給我們介紹了有關(guān)飛機上角架和飛輪以及她在研究生期間的研究設(shè)計,給我打開了一扇新的大門
對于其他應(yīng)用型軟件而言,ANSYS作為大型權(quán)威性的有限元分析軟件,在解題過程中是十分牢靠的。同時這也是一門不易掌握的軟件,因而,要學(xué)好ANSYS,我們要自己有較高的要求,所有實驗的基礎(chǔ)都是需要我們有理論知識的支持,因此我們要對力學(xué)有一定程度的掌握。在掌握理論知識的同時我們要對軟件的使用積累經(jīng)驗,光有理論或者經(jīng)驗都是不行的。要結(jié)合起來這樣我們才能有更深層次的探索和學(xué)習(xí)。