ADAMS三维路面重构
自己做的課題中有一部分是研究機器人在路面上行走時的振動問題,之前在做的時候是通過建立動力學方程來進行建模,之后給模型輸入相應的輸入。這個過程比較繁瑣,首先是需要構建整個機器人的動力學方程,當機器人比較復雜時或者為提高精度,整個動力學方程就變得非常復雜;而且當需要的輸入量或者輸出量增加時,將直接導致模型參數矩陣維度的升高,整個建模求解過程會變得非常復雜。后來看到一些文獻中用ADAMS或者其他已經成熟的動力學軟件進行虛擬樣機的建模,深受啟發:既然已經有了前期在SOLIDWORKS中建好的機器人三維模型,為什么不直接用呢?于是后期就圍繞ADAMS與MATLAB來進行機器人在路面上行走過程中的振動分析。
ADAMS中有相關的路面文件,但這些文件不能直接用來進行自己的機器人的分析,因為ADAMS中的路面文件是設計用來分析汽車的行駛情況的。不過在了解了路面文件的結構后,自己也可以通過MATLAB編寫程序求解出需要的數據之后自己編寫需要的合適的路面文件。
常見的戶外的路面即使是看著平坦的路面也不可能是絕對光滑的,如果將路面的縱向長度定義為XXX,橫向寬度定義為YYY,路面的不平度即縱向高程定義為qqq,則qqq在X、YX、YX、Y上的分布可以用統計學的方法來進行描述,這一類路面稱為隨機路面;對于大的障礙物比如減速帶或者溝槽,可以直接用障礙物的形狀尺寸進行刻畫。許多文獻以及相應的國際標準已經對隨機路面不平度做了研究。
在空間頻率n1<n<n2n_1<n<n_2n1?<n<n2?內的路面不平度功率譜密度為Gq(n)G_q(n)Gq?(n),利用平穩隨機過程的頻譜展開性質,路面不平度的方差σq2\sigma_q^2σq2?為
σq2=∫n1n2Gq(n)dn\sigma_q^2=\int_{n_{1}}^{n_2}G_q(n)dnσq2?=∫n1?n2??Gq?(n)dn
路面不平度功率譜密度擬合表達式為
Gq(n)=Gq(n0)(nn0)?ωG_q(n)=G_q(n_0)(\frac{n}{n_0})^{-\omega}Gq?(n)=Gq?(n0?)(n0?n?)?ω
式中,ω\omegaω為路面功率譜密度頻率結構的頻率指數;n0n_0n0?為參考空間頻率,n0=0.1m?1n_0=0.1m^{-1}n0?=0.1m?1;Gq(n0)G_q(n_0)Gq?(n0?)為參考空間頻率n0n_0n0?下的路面功率密度,又稱為路面不平度系數。
對于路面不平度的擬合有很多種方法,這一方面文獻很多。自己用的是正弦波疊加法來進行擬合,具體的:
q(x)=∑i=1m2Gq(nmid?i)Δnisin(2πnmid?i+θi)q(x)=\sum_{i=1}^{m}\sqrt{2G_q(n_{mid-i})\Delta{n_i}}sin(2\pi n_{mid-i}+\theta_i)q(x)=∑i=1m?2Gq?(nmid?i?)Δni??sin(2πnmid?i?+θi?)
式中,xxx為路面延縱向長度的位移,θi\theta_iθi?為[0,2π][0,2\pi][0,2π]上均勻分布的相互獨立的隨機變量,nmid?in_{mid-i}nmid?i?為將頻率區間分成mmm個小區間后每一個小區間的中心頻率。
當然,上式也可以擴展到路面上任意點(x,y)(x,y)(x,y),
q(x,y)=∑i=1n2Gq(nmid?i)Δnisin(2πnmid?ix2+y2+θi(x,y))q(x,y)=\sum_{i=1}^{n}\sqrt{2G_q(n_{mid-i})\Delta{n_i}}sin(2\pi n_{mid-i}\sqrt{x^2+y^2}+\theta_i(x,y))q(x,y)=∑i=1n?2Gq?(nmid?i?)Δni??sin(2πnmid?i?x2+y2?+θi?(x,y))
其中,θi(x,y)\theta_i(x,y)θi?(x,y)為路面上任意點(x,y)(x,y)(x,y)處屬于[0,2π][0,2\pi][0,2π]區間的隨機數。
利用上式在MATLAB中編寫程序即可得到隨機路面不平度分布。
上圖為通過MATLAB求解出的80m×4m80m\times4m80m×4m的C級路面不平度分布。
得到上面的數據后離我們想要的路面文件還有很大差距,因為這些數據并不能直接運用到ADAMS中作為路面文件,因此首先要研究一下ADAMS路面文件的構成,這樣就可以確定如何處理上面得到的數據。
上圖是一種典型的路面文件。ADAMS的路面文件的后綴是.rdf,這些文件可以在ADAMS的安裝目錄下的C:\MSC.Software\Adams\2018\atire\roads.tbl下找到。如上圖所示,文件中規定了參數的單位“units”,路面的定義方式“3D”,節點“nodes”以及單元“elements”。其中重點關注節點“nodes”和單元“elements”:
節點“nodes”是一個四維向量,可以表示為N(i)=N(ni,xi,yi,zi)N(i)=N(n_{i},x_{i},y_{i},z_{i})N(i)=N(ni?,xi?,yi?,zi?),其中nin_ini?為節點排序后的編號,xi,yi,zix_i,y_i,z_ixi?,yi?,zi?分別為各節點的坐標值;單元“elements”是一個五維向量,可以表示為E(i)=E(na,nb,nc,μ0,μ)E(i)=E(n_a,n_b,n_c,\mu_0,\mu)E(i)=E(na?,nb?,nc?,μ0?,μ),其中na,nb,ncn_a,n_b,n_cna?,nb?,nc?分別為單元E(i)E(i)E(i)所對應的三個節點的編號,μ0,μ\mu_0,\muμ0?,μ分別為靜摩擦因數與動摩擦因數。
上述提到的節點的編號是在排序后給出的編號。在MATLAB中求解得到的q(x,y)q(x,y)q(x,y)數據可以理解為許多個坐標為(x,y,q(x,y))(x,y,q(x,y))(x,y,q(x,y))的點。對于縱向長度為XXX、橫向寬度為YYY的路面,在前面構造擬合的時候將X、YX、YX、Y分別按照Δx、Δy\Delta{x}、\Delta{y}Δx、Δy來進行分割(對于上面的80m×4m80m\times{4m}80m×4m的路面分別按照Δx=0.5和Δy=0.16\Delta{x}=0.5和\Delta{y}=0.16Δx=0.5和Δy=0.16來進行劃分,當然也可以用其他數值,不過數值越小,MATLAB的計算求解時間越長,試過當兩個值都為0.0010.0010.001時,計算時間遠遠超過四個小時),那么求解得到的q(x,y)q(x,y)q(x,y)即為一個XΔx×YΔy\frac{X}{\Delta{x}}\times \frac{Y}{\Delta{y}}ΔxX?×ΔyY?的矩陣。如果將這些數值點投影到XYXYXY平面,就會得到XΔx×YΔy\frac{X}{\Delta{x}}\times \frac{Y}{\Delta{y}}ΔxX?×ΔyY?的點陣。依次按行遍歷這些點陣,就對這些點陣進行了編號,節點編號依據“先橫后縱 、由小到大”的原則,進而生成了節點“nodes”矩陣。每三個相鄰的節點組成一個三角形單元,這樣每一個單元的前三個維度的量就確定了,之后將靜摩擦因數與動摩擦因數分別賦給第四和第五維度,繼而生成了單元“elements”矩陣。形象化的表示如圖所示:
具體的可以在MATLAB中編程實現,如下:
生成的點陣數據如圖:
投影到XYXYXY面如下所示:
將上述求解生成的節點“nodes”與單元“elements”數據拷貝到ADAMS路面文件中(可以新建一個.rdf格式的文件,按照ADAMS默認的文件格式進行編寫,主要就是“nodes”和“elements”數據的替換)。這樣一個80m×4m80m\times4m80m×4m的C級路面就構建好了。將其導入到ADAMS中,就會看到由許多三角形單元組成的三維路面。
參考文獻:
[1] 彭佳, 何杰, 叢穎, et al. 三維隨機路面通用模型建立與仿[J]. 農業機械學報,2009,40(3):1-4.
[2] 蔣榮超, 陳煥明, 劉大維, et al. 車輛三維虛擬道路減速帶重構與實現[J]. 青島大學學報(工程技術版), 2012(01):36-40.
總結
以上是生活随笔為你收集整理的ADAMS三维路面重构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MC7812BTG详细参数介绍
- 下一篇: 神经网络绘图工具