• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Python的管路彎管坐標(biāo)轉(zhuǎn)換工具設(shè)計(jì)

      2021-07-21 10:39鄭曉芳丁龍斌

      鄭曉芳 丁龍斌

      摘要: 當(dāng)前軌道車輛彎管工作中,存在需要轉(zhuǎn)換彎管空間坐標(biāo)到角度坐標(biāo)、需要根據(jù)實(shí)際管路數(shù)值進(jìn)行數(shù)值修正的情況,而當(dāng)前的工具使用不便,且沒有實(shí)現(xiàn)自動(dòng)計(jì)算修正值的功能。本文深入分析了管路彎管工作的數(shù)學(xué)原理,詳細(xì)分析了彎管坐標(biāo)轉(zhuǎn)換的具體過程,并使用python編程語言實(shí)現(xiàn)了管路彎管坐標(biāo)轉(zhuǎn)換運(yùn)算的算法和圖形用戶界面GUI的設(shè)計(jì),完成了一套彎管坐標(biāo)轉(zhuǎn)換和自動(dòng)修正數(shù)值的軟件,并加入各種管路數(shù)值合理性判斷條件,能夠有效提升生產(chǎn)一線在彎管計(jì)算上的工作效率。

      關(guān)鍵詞:管路彎管 彎管空間坐標(biāo) 坐標(biāo)變換 彈性值修正 應(yīng)用程序開發(fā)

      Design of Pipe Bend Coordinate Transformation Tool Based on Python

      ZHENG Xiaofang DING Longbin

      (CRRC Qingdao Co., Ltd., Qingdao, Shandong Province, 266111 China)

      Abstract: At present, in the bend work of rail vehicles, it is necessary to convert the spatial coordinates of the bend to the Angle coordinates and make numerical correction according to the actual pipeline value. However, the current tool is inconvenient to use and does not realize the function of automatically calculating the repair value. This paper deeply analyzes the mathematical principle of pipe bending machine work, describes in detail the concrete process of pipe bending coordinate transformation and using the python programming language to realize the algorithm and the design of GUI, implements a set of pipe bending coordinate transformation and automatic correction numerical software, rationality and join various numerical judgement conditions, effectively improve the production line on the pipe bending calculation efficiency.

      Key Words: Pipe elbow; Elbow space coordinates; Coordinate transformation; Elastic value correction; Application development

      0 引言

      在軌道車輛中,制動(dòng)及給水裝置大多使用管路送風(fēng)給水,部分電路也通過管路保護(hù)電線。管路分布較為復(fù)雜,需要多種多樣的管路彎管避免空間上管路鋪設(shè)時(shí)的相互碰撞和對(duì)抗。

      數(shù)控彎管機(jī)采用矢量彎管的原理,工作時(shí)需要輸入直線進(jìn)給量(Y軸)、空間旋轉(zhuǎn)角(B軸)和平面彎曲角(C軸)[1]。在當(dāng)前普遍使用的三維軟件設(shè)計(jì)管路時(shí),只能輸出彎管空間幾何坐標(biāo)(X,Y,Z)。因此對(duì)空間坐標(biāo)轉(zhuǎn)換為數(shù)控彎管機(jī)可以使用的矢量坐標(biāo)是彎管工作中一項(xiàng)重要環(huán)節(jié)。

      由于加工工藝、實(shí)際打磨和各個(gè)管道生產(chǎn)廠家的標(biāo)準(zhǔn)不同,實(shí)際使用的管路總是和其理論值有所偏差。此外,由于管路并不是絕對(duì)剛體,在彎管過程中也有一些彈性,不同材質(zhì)的管路彈性不同,因此彎曲角度的誤差不同,需要修正的彎曲角度也有所不同。

      本文通過對(duì)管道彎管計(jì)算方法進(jìn)行深入分析,開發(fā)彎管三維空間坐標(biāo)系坐標(biāo)轉(zhuǎn)換為線長和角度計(jì)量的坐標(biāo)的軟件工具,將三維空間坐標(biāo)轉(zhuǎn)換為(直線段長,彎曲角度,旋轉(zhuǎn)角度)的矢量坐標(biāo),并提供不同精確值不同修正參考值條件下的彎管偏差值修正的計(jì)算。此外,將各種設(shè)備的誤差計(jì)算匯總,方便選擇設(shè)備來進(jìn)一步規(guī)范彎管數(shù)值計(jì)算。該工具能夠改善管道彎管實(shí)際工作過程中的坐標(biāo)轉(zhuǎn)換不便,理論值修正值計(jì)算不便的現(xiàn)狀,提升管道彎管工作效率[2]。

      1 彎管轉(zhuǎn)換原理

      首先研究彎管轉(zhuǎn)換原理和轉(zhuǎn)換方法。矢量彎管是基于空間矢量技術(shù)的原理,將彎管加工中管件形位尺寸及空間角度的計(jì)算直接運(yùn)用矢量坐標(biāo)計(jì)算的方法,這一方法是將管件設(shè)置在一空間直角坐標(biāo)系中,則管件上的任一點(diǎn)具有相應(yīng)的坐標(biāo)值,任一直線段具有量值的大小且有方向,根據(jù)這一特性,可將管件彎曲加工的參數(shù),直接求出管件展開長度和有關(guān)工藝參數(shù)[3]。

      采用矢量方法增量型數(shù)控彎管機(jī)加工彎管,其彎管運(yùn)動(dòng)所需要的數(shù)據(jù)主要有三方面內(nèi)容:兩彎管之間的直線送進(jìn)距離,彎曲角度和空間旋轉(zhuǎn)角度[4]。彎管運(yùn)動(dòng)簡化描述如圖1所示。

      該圖中,紅色線路表示管路,該管路由直線段和圓弧段中心線構(gòu)成。相鄰兩中心線延長后產(chǎn)生交點(diǎn),即直線段P1G與直線段HM延長后相交點(diǎn)P2、直線段HM與直線段NP4延長后相交點(diǎn)P3,P1和P4是管子的兩端,且點(diǎn)P1、P2在平面YOZ內(nèi),點(diǎn)P3、P4在平面XOZ內(nèi),G、H、M、N為圓弧與直線段的交點(diǎn)。

      2坐標(biāo)轉(zhuǎn)換方法

      在彎管坐標(biāo)轉(zhuǎn)換計(jì)算中,需要計(jì)算直線段長度l,弧線段長度s、管子彎曲角度α和管子旋轉(zhuǎn)角度β. 輸入數(shù)據(jù)為空間坐標(biāo)點(diǎn){P1, P2, … Pn}, n>3. 設(shè)P1,P2P3為管子的三個(gè)相鄰點(diǎn),其中P2為相鄰兩直線段延長線的交點(diǎn),即彎曲部位弧線兩端切線的交點(diǎn),則三個(gè)點(diǎn)確定一個(gè)空間平面,向量和的夾角即為彎曲角度α,因此利用向量夾角的計(jì)算公式,可得:

      然后利用反三角函數(shù)公式即可求出.

      在得到彎曲角度之后,由弧長和半徑及弧度之間的關(guān)系,可根據(jù)彎管半徑求得弧線段長度s

      彎管坐標(biāo)計(jì)算中,旋轉(zhuǎn)角度為兩平面的夾角,設(shè)P1P2P3 P2P3P4為彎管上相鄰的兩個(gè)平面,交于直線P1P2,則兩平面的夾角與平面法向量的夾角相等(正向旋轉(zhuǎn)時(shí))或相反(負(fù)向旋轉(zhuǎn)時(shí))。

      平面法向量平行于平面內(nèi)相交的兩個(gè)向量的矩,其向量表示可由公式(3)求出:

      其中為P1P2P3的空間坐標(biāo)。由于P1P2P2P3相交且不平行,利用向量夾角公式(1)即可得到向量夾角.

      由于空間平面旋轉(zhuǎn)角度在變化,在該區(qū)間內(nèi)余弦公式只能得到角度的值,而無法得到角度的符號(hào)。判斷旋轉(zhuǎn)角度的正負(fù),即判斷P4在平面P1P2P3的上方還是下方。規(guī)定彎管方向?yàn)橹本€段方向的右側(cè),則在的右側(cè),根據(jù)右手定則,兩向量的矩的方向?yàn)榇怪逼矫?em>P1P2P3向下. 當(dāng)P4在平面P1P2P3的上方時(shí),向量與的點(diǎn)乘為負(fù),當(dāng)P4在平面P1P2P3的下方時(shí),向量與的點(diǎn)乘為正,即旋轉(zhuǎn)角度β的符號(hào)與三個(gè)向量混合積的結(jié)果符號(hào)相反,如公式(4)所示:

      為計(jì)算簡便,公式(4)右側(cè)表示為行列式形式為:

      到此,即可得到旋轉(zhuǎn)角度β的準(zhǔn)確值。

      得到彎曲角度后,由圖1可得到第一段直線段長度l的計(jì)算公式(6):

      其中為直線段左端點(diǎn),為與下一段直線段延長線的交點(diǎn)(在最后一段直線段為終點(diǎn))。對(duì)于第2段到第n-1段直線段,還需要再減去前面一段弧線對(duì)應(yīng)的直線段長度,如公式(7)所示:

      對(duì)于最后一段直線段,是該段直線長度減去前面半個(gè)弧度對(duì)應(yīng)的直線長度,即公式(8):

      由于實(shí)際管路和理論上的管路模型特性參數(shù)有誤差,因此需要對(duì)誤差部分進(jìn)行修正。設(shè)管路彎曲角度的理論值和實(shí)際值對(duì)應(yīng)關(guān)系為(i >1),利用彈性系數(shù)修正的方法,當(dāng)計(jì)算出的彎曲角度為時(shí),處于區(qū)間內(nèi),則修正值計(jì)算公式(9)-(12)為:

      其中,為參考點(diǎn)的理論值和修正值,如理論彎曲度數(shù)為90度時(shí),修正值為89度等等。,為彎曲角度的修正值,為直線段長度的修正值,k、b為彈性系數(shù)。

      3 應(yīng)用程序設(shè)計(jì)

      3.1 彎管坐標(biāo)轉(zhuǎn)換算法實(shí)現(xiàn)

      彎管坐標(biāo)轉(zhuǎn)換算法可描述如下:<!-- 表格格式如 -->

      輸入:彎曲半徑R,多個(gè)空間三維坐標(biāo)點(diǎn){P1, P2, … Pn}, n>3,彎曲角度的理論值與實(shí)際值

      約束條件:相鄰四點(diǎn)不共線,相鄰兩點(diǎn)不重合

      輸出:直線段長度l,弧線段長度s、管子彎曲角度α和管道旋轉(zhuǎn)角度β;修正后的直線段長度和彎曲角度.

      本文選用數(shù)學(xué)科學(xué)計(jì)算工具Python語言實(shí)現(xiàn),版本為3.7.5,使用科學(xué)數(shù)據(jù)包有numpy[5].

      算法共分為兩個(gè)模塊,理論值計(jì)算和修正值計(jì)算。理論值計(jì)算包含數(shù)據(jù)輸入方法,彎曲角度計(jì)算方法,直線段長度計(jì)算方法和旋轉(zhuǎn)角度計(jì)算方法。修正值計(jì)算包括彈性區(qū)間選擇、彈性系數(shù)計(jì)算和修正值計(jì)算。后文將結(jié)合偽代碼對(duì)轉(zhuǎn)換算法進(jìn)行分析。

      首先是彎曲角度α的計(jì)算,如下偽代碼所示。輸入P1、P2、P3,首先使用二階范數(shù)函數(shù)norm計(jì)算P1P2和P2P3的長度,然后進(jìn)行判斷,如果長度有一個(gè)為0,則表示有相鄰點(diǎn)重合,這是不被允許的,因此升起數(shù)值錯(cuò)誤,若是沒有問題,則使用dot函數(shù)計(jì)算P1P2和P2P3向量的點(diǎn)乘后除去線段的長度,即得到彎曲角度α的余弦值,取反余弦函數(shù)acos,就得到了α.

      def cosalpha(p1, p2, p3):

      a = norm(p1-p2)

      b = norm(p3-p2)

      if a == 0 or b ==0:

      raise ValueError("相鄰的點(diǎn)不能相同")

      alpha = acos(dot(p2 - p1, p3 - p2) / a / b)

      return alpha

      第二部分是旋轉(zhuǎn)角度β的計(jì)算,如下偽代碼所示。輸入P1、P2、P3、P4,首先使用cross計(jì)算相鄰向量的矩,也就是叉乘,得到兩個(gè)平面的矩向量。然后,判斷矩向量長度是否為0,如果為零則表示共線,升起錯(cuò)誤。如果沒有錯(cuò)誤,則計(jì)算兩個(gè)矩向量的夾角的絕對(duì)值,即得到β的絕對(duì)值。計(jì)算出絕對(duì)值后,還需計(jì)算β的符號(hào)。β的符號(hào)和向量、、的混合積符號(hào)相反?;旌戏e的計(jì)算可以先計(jì)算、的叉乘,在與點(diǎn)乘,最后將得到的結(jié)果與0比較,如果大于0則β的值為負(fù)數(shù),小于等于0則為正數(shù)[7]

      def beta(p1, p2, p3, p4):

      n1 = cross(p1p2, p2p3)

      n2 = cross(p2p3, p2p4)

      a = norm(n1)

      b = norm(n2)

      if a == 0 or b ==0:

      raise ValueError("連續(xù)四點(diǎn)共線錯(cuò)誤")

      beta = acos(dot(n1, n2) / a / b)

      sign = 1 if dot(p1p4, cross(p1p2, p1p3))<=0 else -1

      return beta * sign

      第三部分是直線段長度的計(jì)算,如下偽代碼所示。如果該直線段是第一段直線,則計(jì)算P1P2段的長度后減去一半弧度對(duì)應(yīng)的長度即可。如果該直線段是第2到第n-1段直線,則還需減去直線之前的一半弧度對(duì)應(yīng)的長度。如果是最后一段直線段,則需要在計(jì)算P1P2段的長度后減去之前的一半弧度對(duì)應(yīng)的長度[8]。

      def length(p1, p2, r, alpha):

      if i == 1:

      length[i] = norm(p2-p1) – r*tan(alpha[i]/2)

      else if 1 < i <n-1:

      length[i] = norm(p2-p1)-r*tan(alpha[i]/2)

      –r*tan(alpha[i-1]/2)

      if i == n:

      length[i] = norm(p2-p1)- –r*tan(alpha[i-1]/2)

      return length

      然后是修正值的計(jì)算。如表5所示,首先選擇合適的彈性區(qū)間section。當(dāng)一個(gè)彎曲角度α位于區(qū)間[theory[i], theory[i+1]]內(nèi)時(shí),該區(qū)間即為α的彈性區(qū)間。通過彈性系數(shù)計(jì)算公式(9)和(10),可得到k和b的值。corr_alpha 為alpha的修正值,等于alpha乘上k加b. 求出corr_alpha后,第一段直線段長度不做修正,之后的直線段需要減去弧長的差值。

      k = (theory[i+1]-theory[i])/(reality[i+1]-reality[i])

      b = (theory[i+1]*reality[i+1]-theory[i+1]*reality[i])

      /(reality[i+1]-reality[i])

      corr_alpha = k * alpha + b

      3.2 GUI設(shè)計(jì)[6]

      如圖3所示,GUI主要包含三個(gè)部分,菜單欄、工作區(qū)以及結(jié)果顯示區(qū)。菜單欄主要有設(shè)備管理、計(jì)算結(jié)果的主要功能,和精確度管理、文件讀取等輔助功能。工作區(qū)左側(cè)包括設(shè)備選擇,空間坐標(biāo)輸入,空間坐標(biāo)增刪改以及彎曲半徑選擇,右側(cè)表格顯示已經(jīng)添加的空間坐標(biāo),空間坐標(biāo)也可通過菜單欄的文件讀取選項(xiàng)從excel文件中讀取。界面下方為結(jié)果顯示界面,使用兩個(gè)標(biāo)簽界面分別顯示理論值的計(jì)算結(jié)果和實(shí)際值的計(jì)算結(jié)果。

      設(shè)備管理的功能主要有添加設(shè)備、修改設(shè)備和刪除設(shè)備。圖4為添加設(shè)備界面,設(shè)備主要參數(shù)包括設(shè)備型號(hào)、模具規(guī)格和材質(zhì),以及該材質(zhì)對(duì)應(yīng)的彎曲角度理論值與修正值。圖5為修改設(shè)備界面,可修改模具、材質(zhì)和彎曲值對(duì)應(yīng)關(guān)系。圖6為刪除設(shè)備界面,可通過設(shè)備名稱刪除存在的設(shè)備條目。

      圖7為修正值的顯示界面,包含兩個(gè)表格,分別顯示修正值結(jié)果和所選設(shè)備設(shè)置的理論值與實(shí)際值。默認(rèn)保留整數(shù),可通過菜單欄的精確度菜單選擇保留的小數(shù)位數(shù)。

      3.3 代碼結(jié)構(gòu)

      彎管左邊轉(zhuǎn)換工具quality的代碼結(jié)構(gòu)如圖8所示。Dist文件夾中存放程序打包后的exe可執(zhí)行文件,bendpipe中實(shí)現(xiàn)了理論值與修正值的計(jì)算算法,plus_factory、update_factory和del_factory實(shí)現(xiàn)了設(shè)備添加、修改和刪除界面,myPlusFactory是對(duì)plus_factory的包裝,實(shí)現(xiàn)了設(shè)備添加的邏輯功能,主程序?yàn)閝uality_define,所有的邏輯功能實(shí)現(xiàn)在該文件中集成,quality_window是主界面的設(shè)計(jì)代碼。添加的設(shè)備信息以字典和列表的形式存儲(chǔ)在factories.json文件中。

      如圖9所示,當(dāng)輸入表1中的空間坐標(biāo)點(diǎn)時(shí),點(diǎn)擊運(yùn)行后直接顯示理論值,并通過右圖中右下角的理論值;修正值的參考表計(jì)算出彈性系數(shù)kb,然后自動(dòng)計(jì)算出當(dāng)前理論值下的修正值情況。

      糾錯(cuò)功能:當(dāng)輸入相鄰兩點(diǎn)相同或者相鄰四點(diǎn)共線時(shí),彈出警告對(duì)話框,如圖11所示。

      5總結(jié)

      本文基于Python語言的管道彎管坐標(biāo)轉(zhuǎn)換工具設(shè)計(jì)結(jié)合了一線管路彎管工作的生產(chǎn)實(shí)際,通過對(duì)彎管空間坐標(biāo)變換到彎管矢量坐標(biāo)的數(shù)學(xué)理論研究,實(shí)現(xiàn)了空間坐標(biāo)點(diǎn)到彎管機(jī)實(shí)際使用數(shù)據(jù)的自動(dòng)轉(zhuǎn)換功能,并能供結(jié)合提供的彈性區(qū)間自動(dòng)進(jìn)行修正值的計(jì)算。利用Python編程語言和科學(xué)工具包numpy,將其用編程語言實(shí)現(xiàn),然后利用Qt編寫GUI提供給用戶使用,并添加了多種特殊情況判斷,優(yōu)化了坐標(biāo)轉(zhuǎn)換的計(jì)算過程和使用者對(duì)數(shù)據(jù)的判斷流程,能夠提高彎管的生產(chǎn)效率。

      今后,可在本文研究的基礎(chǔ)上,繼續(xù)深入,進(jìn)一步開發(fā)三維彎管仿真模型的三維視覺仿真程序,并在當(dāng)前基礎(chǔ)上增加更細(xì)粒度的邏輯判斷,以直觀地展示當(dāng)前數(shù)據(jù)的生成模型,減少在判斷彎管數(shù)據(jù)上的時(shí)間和出錯(cuò)的幾率,提升工作效率。

      注:軟件源代碼可在https://github.com/dlb123/pipebend-caculate獲取

      6參考文獻(xiàn)

      1. 王立新. 矢量彎管[M]. 國防工業(yè)出版社, 1984.

      2. 陳亞樓. 一體化彎管數(shù)控機(jī)床的伺服驅(qū)動(dòng)器的研究與設(shè)計(jì)[D].武漢理工大學(xué),2018.

      3. 羅志猛. 基于三角形算法的數(shù)控彎管信息轉(zhuǎn)換及仿真[D].武漢理工大學(xué),2006.

      4. 張德乾,李豐,姜楊楊,夏元平.基于易語言的彎管坐標(biāo)轉(zhuǎn)換加工程序研究[J].科技創(chuàng)新導(dǎo)報(bào),2020,17(07):111-112.

      5. 丁龍斌,伍忠東,蘇佳麗.基于集成深度森林的入侵檢測方法[J].計(jì)算機(jī)工程,2020,46(03):144-150.

      6. 孫守江. 供熱管道系統(tǒng)的受力分析及優(yōu)化[D].北京建筑大學(xué),2020.

      7. 丁龍斌. 隨機(jī)森林入侵檢測算法研究[D].蘭州交通大學(xué),2020.

      8. 蘇佳麗,伍忠東,丁龍斌,劉菲菲.基于IGWO-RBF的LTE-R切換算法研究[J].計(jì)算機(jī)工程與應(yīng)用,2020,56(08):74-80.

      晋江市| 平江县| 清徐县| 东港市| 巴林左旗| 蕲春县| 阿拉善右旗| 康保县| 枝江市| 海晏县| 陆丰市| 衢州市| 上思县| 迁安市| 阿拉尔市| 梨树县| 大余县| 阿拉善左旗| 荔浦县| 临澧县| 甘泉县| 永宁县| 巴南区| 得荣县| 松溪县| 太康县| 手游| 西乡县| 青神县| 朝阳市| 山东| 临海市| 板桥市| 鞍山市| 陈巴尔虎旗| 桑植县| 铜川市| 女性| 新疆| 新竹市| 固安县|