我正在使用編碼器來獲取車輛的行駛距離和航向角度。反過來,它不會給出精確的角度,車輛正在轉向。在我的算法中,我正在使用所有角度的積累來找到相對於世界的總角度(X-O-Y)。車輪直徑和車輪距離的比率是否對車輛的校準和預期航向有影響?
它與車輪直徑和車輪距離的比率有什麼關係嗎?
這個問題在我的腦海中升起,因爲相同的算法,它有不同的維度(車輪和車輪的直徑輪的距離)其他硬件工作,它沒有太多返回精確轉動角度。
如果提供了一些有價值的建議,我們將不勝感激。
我正在使用編碼器來獲取車輛的行駛距離和航向角度。反過來,它不會給出精確的角度,車輛正在轉向。在我的算法中,我正在使用所有角度的積累來找到相對於世界的總角度(X-O-Y)。車輪直徑和車輪距離的比率是否對車輛的校準和預期航向有影響?
它與車輪直徑和車輪距離的比率有什麼關係嗎?
這個問題在我的腦海中升起,因爲相同的算法,它有不同的維度(車輪和車輪的直徑輪的距離)其他硬件工作,它沒有太多返回精確轉動角度。
如果提供了一些有價值的建議,我們將不勝感激。
機器人的角度取決於特定的硬件,如車輪尺寸,編碼器尺寸和車輛寬度。也許你很幸運與車輪直徑輪輪距離的變化相互抵消,因此其他機器人的公式是相同的,但通常你不會這麼幸運
假設你有兩個輪式機器人,兩個不同設置的相同讀數可以產生不同的結果。在我簡單的例子中,我有一個兩輪機器人的軸,兩個機器人都有相同的wheel_diameter
並使用相同的旋轉編碼器。一個機器人具有距離車輪另一個具有距離R2
假設兩個機器人保持的車輪固定的,另一個輪移動5次點擊向前在車輪編碼器(和兩個機器人使用相同的編碼器和相同的尺寸車輪)之間R1
。使用半圓的圓周的簡單公式,我們可以找到車輪移動的距離。
dist_trav = (pi * wheel_diameter) * (#ticks/total ticks on encoder)
當然由於一個輪是靜止的,機器人實際上是樞轉上的另一半圓。我們可以計算出使用
circumference = 2*pi*dist_between_wheels
dist_between_wheels新的角度,是我們圓的半徑
angle = % of circumference traveled * units = (dist_trav/circumference) * 360
我們使用360這樣的角度爲度,但如果需要
你會發現你可以使用弧度,即使在機器人除了車輪之間的距離相同的情況下,相同數量的嘀嗒聲表示非常不同的角度。如果r2=2*r1
我們可以看到,dist_trav
是兩個機器人一樣(因爲車輪的直徑相同),但是當我們找出角度我們得到
黑色機器人
angle_black = (dist_traveled/2*pi*R1) * 360
紅機器人
angle_black = (dist_traveled/2*pi*2*R1) * 360
= (dist_traveled/4*pi *R1) * 360
因此,對於相同的輪子運動紅色機器人將只有1/2像黑色機器人那樣改變角度。這僅僅是一個玩具的例子,但你可以很容易地看到不同直徑的車輪和它們之間的距離能夠產生巨大的差異。
感謝您的回覆!請您告訴我如何選擇這些比例來獲得特定硬件的精確結果。順便說一句,在上面的答案你已經寫周長= 4 * pi * dist_between_wheels我認爲應該是「2 * pi * dist_between_wheels」。糾正我,如果我錯了! –
@Amit.D你是對的。對於這個困惑抱歉,我修復了這個帖子。如果你輸入正確的測量數據,我寫作的方程式就可以工作。但是,如果你同時有兩個車輪轉彎,這個模型將不起作用。要修正你當前的代碼尋找任何常量,並確保它們完全匹配你的機器人上的比率,你可以使用你已有的任何邏輯,只是改變比率。沒有看到代碼,我無法告訴你究竟發生了什麼變化 – andrew
我並不是說這是offtopic,但我想你可能會發現這個問題的一個更好的StackExchange網站。如[Robotics SE](http://robotics.stackexchange.com/help/on-topic)。 – Petr