日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ADAMS三维路面重构

發布時間:2023/12/15 编程问答 68 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ADAMS三维路面重构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

自己做的課題中有一部分是研究機器人在路面上行走時的振動問題,之前在做的時候是通過建立動力學方程來進行建模,之后給模型輸入相應的輸入。這個過程比較繁瑣,首先是需要構建整個機器人的動力學方程,當機器人比較復雜時或者為提高精度,整個動力學方程就變得非常復雜;而且當需要的輸入量或者輸出量增加時,將直接導致模型參數矩陣維度的升高,整個建模求解過程會變得非常復雜。后來看到一些文獻中用ADAMS或者其他已經成熟的動力學軟件進行虛擬樣機的建模,深受啟發:既然已經有了前期在SOLIDWORKS中建好的機器人三維模型,為什么不直接用呢?于是后期就圍繞ADAMS與MATLAB來進行機器人在路面上行走過程中的振動分析。
ADAMS中有相關的路面文件,但這些文件不能直接用來進行自己的機器人的分析,因為ADAMS中的路面文件是設計用來分析汽車的行駛情況的。不過在了解了路面文件的結構后,自己也可以通過MATLAB編寫程序求解出需要的數據之后自己編寫需要的合適的路面文件。
常見的戶外的路面即使是看著平坦的路面也不可能是絕對光滑的,如果將路面的縱向長度定義為XXX,橫向寬度定義為YYY,路面的不平度即縱向高程定義為qqq,則qqqX、YX、YXY上的分布可以用統計學的方法來進行描述,這一類路面稱為隨機路面;對于大的障礙物比如減速帶或者溝槽,可以直接用障礙物的形狀尺寸進行刻畫。許多文獻以及相應的國際標準已經對隨機路面不平度做了研究。
在空間頻率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?1Gq(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中編寫程序即可得到隨機路面不平度分布。

clear all global M N element node L_X=80;L_Y=4; delta_x=0.5;delta_y=0.16;OFFSET_Z=0; N=round(L_X/delta_x);M=round(L_Y/delta_y); [y,x]=meshgrid(linspace(L_Y/2,-L_Y/2,M),linspace(L_X/2,-L_X/2,N)); z=0;m=20;W=2;n0=0.1;n1=0.011;n2=2.83;Gq0=256e-6;%標準路面不平度系數 A=16,B=64,C=256,D=1024,E=4096,F=16384,G=65536,H=262144 delta_n=(n2-n1)/m; for i=1:m % m為頻率范圍【n1,n2】劃分的m個小區間n_mid=n1+(i-0.5)*delta_n; % n為每個小區間內中心頻率Gq=(n_mid/n0)^(-W)*Gq0;sita1=rand()*2*pi;z=z+sqrt(2*Gq*delta_n)*sin(2*pi*n_mid*(x+y)+2*pi*rand()); end figure(1) surf(x,y,z); title('C-level road roughness'); xlabel('x/m');ylabel('y/m');zlabel('q(x,y)/m')


上圖為通過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、YXY分別按照Δ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中編程實現,如下:

for i=1:mn_mid(i)=n1+delta_n*(i-0.5);Gq(i)=(n_mid(i)/n0).^(-2)*Gq0; end q=[]; %i=0;j=0; sita=rand(N,M)*2*pi; for i=1:Nfor j=1:M%q(i,j)=0;for k=1:mw(k)=sqrt(2*Gq(k)*delta_n).*sin(2*pi*n_mid(k)*x(i,j)+sita(i,j));q(i,j)=sum(w)endA(i,j)=(i-1)*M+j;end end node=[]; element=[]; figure(2) i=1:N;j=1:M; [J,I]=meshgrid(j,i); surf(I,J,q) title('C-level road roughness'); xlabel('i');ylabel('j');zlabel('q(i,j)/m') for i=1:Nfor j=1:Mnode((i-1)*M+j,1)=(i-1)*M+j;node((i-1)*M+j,2)=x(i,1);node((i-1)*M+j,3)=y(1,j);node((i-1)*M+j,4)=q(i,j)+OFFSET_Z;end end mu=1;dmu=1; flag=1; for i=1:N-1for j=1:M-1element(flag,1)=A(i,j);element(flag,2)=A(i,j+1);element(flag,3)=A(i+1,j);flag=flag+1;endflag=flag+M-1; end flag=M; for i=1:N-1for j=1:M-1element(flag,1)=A(i,j+1);element(flag,2)=A(i+1,j);element(flag,3)=A(i+1,j+1);flag=flag+1;endflag=flag+M-1; end element(:,4)=mu; element(:,5)=dmu; node(:,2)=node(:,2).*1000; node(:,3)=node(:,3).*1000; node(:,4)=node(:,4).*1000;

生成的點陣數據如圖:

投影到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三维路面重构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。