初學車的人都希望能找到方向盤轉的角度和汽車本身轉過的角度之間的關係。是啊,如果能有乙個明確的對應關係,學車就容易不少了,但是很遺憾,事情並不是這麼簡單的。自己嘗試著初步研究了一下這個問題,發現方向盤轉動和汽車本身運動之間存在非常複雜的非線性關係。所以,基本上是沒有人通過求解這個線性系統來學車的,而是通過rl或者q-learning來進行神經網路學習的,這就是為什麼你們要上駕校學習很久的原因。。。
但是,如果我們要設計乙個自動駕駛的機車,那麼這個問題非解決不可,我們需要掌握機車的運動學方程才能進一步編寫控制演算法。簡單的觀察後發現,一輛汽車的運動無非是兩種運動的組合——圓周運動和直線運動(輪子不打滑)。一條連續的行車軌跡可以被分解為若干個圓周運動和直線運動的片段,注意到直線可以看作是乙個半徑無窮大的圓周,所以所有的運動都可以被拆借為不同半徑的圓周運動。
換句話說,對於軌跡上的任意足夠小的乙個曲線片段,我們都可以找到乙個對應的圓剛好覆蓋這個片段。而這個圓的半徑是由什麼決定的?沒錯!就是由前輪轉過的角度還有汽車的中心軸距(這是常量)決定的,而前輪轉過的角度和方向盤轉過的角度是線性關係,所以完全可以把汽車圓周運動的半徑看作是方向盤轉角的函式。為了簡便分析,我們先考慮半徑作為時間的函式時候的情形。
進行如下思想試驗,假設汽車在某個很小的時間段內方向盤的轉角是恆定的,所以轉動的半徑和速度也是恆定的,現在假設汽車在這個時間段dt內轉過了乙個很小的角度theta,假設汽車在這個時間段起始時的速度向量是v=(x'(t),y'(t)),那麼在經過了dt的時間後速度方向也變化了theta角度,這時我們來開速度增量的模|dv|=2|v|sin(theta/2)(因為dv剛好是等腰向量三角形的底邊,對因的角剛好是theta)。由於這個角度非常小,所以sin(x)=x,也就是說|dv|=|v|theta,另外,回憶弧長公式s=r theta我們馬上可以得出對應的半徑就是ds/theta,考慮到r可能會取無窮大,我們取倒數方便計算:1/r=theta/ds=|dv/ds|/|v|。如果一開始,我們就把速度向量正則化,以t表示,結果就是1/r=|dt/ds|。
回憶曲線的弧長公式:
ds^2=dx^2+dy^2 => ds = sqrt(x'^2+y'^2)dt
接下來是求dt/dt, 已知t=1/sqrt(x(t)^2+y(t)^2) (x(t),y(t)), 這個計算略微複雜,最後的結果是:
注意到這個結果有個很有趣的特性,最開始的正則化使得t與dt互相垂直,如果不正則化就不會有這種正交性存在。
接下來計算k(t)=1/r(t)=|dt/ds|=|dt/dt/(ds/dt)|=
至此我們可以求解汽車的運動方程:
汽車在t時刻的方向t(t) =
進一步對速度進行積分就可以獲得軌跡方程。
方向盤應該轉多少度?
方向盤應該轉多少度?初學車的人都希望能找到方向盤轉的角度和汽車本身轉過的角度之間的關係。是啊,如果能有乙個明確的對應關係,學車就容易不少了,但是很遺憾,事情並不是這麼簡單的。自己嘗試著初步研究了一下這個問題,發現方向盤轉動和汽車本身運動之間存在非常複雜的非線性關係。所以,基本上是沒有人通過求解這個線...
方向盤左右能搖動 方向盤怎樣握才是正確的?
有多少人還記得駕校教練教導的方向盤握法?正常駕駛時,通常都是要求左右手握在方向盤3 9點的位置。為什麼駕校教的3 9點握姿是最正確的呢?因為這一平行對稱的握法便於在緊急躲避時,無論向左還是向右都能做到最大幅度轉向,從而做出精準反應,回正方向的時候,也可以保證輪胎和車輛前進方向一致性。正確的3 9點握...
學車思考之一 方向盤轉多少,車輪就轉多少度對嗎
by long luo 最近乙個月在駕校學車,前2次去練車,總是不得要領,連曲線行駛開不好,被教練狂k。經歷了當學渣的痛苦之後,痛定思痛,立志成為學霸。我分析遇到的問題之後,得出我面臨的幾個問題 方向盤打法不規範 離合器踩的不到位,車速偏快 不清楚方向盤轉的度數和車輪轉的度數關係 不記得當前車輪方向...