2015-10-22 117 views
2

故事:假設我有一個帶有距離(超聲波?)傳感器的機器人。機器人可以計算與其前方任何物體的距離,但無法知道物體的座標。因此,機器人稍稍移動一下以獲得不同的視角,並計算距離該視圖的距離,從而知道距離第一視圖有多遠。獲取(真實)物體的位置

如何在Python 3.4中使用以下輸入來獲取真實生活對象的座標或某種位置。從對象在視圖A. 從物體的距離在圖B.視圖A和B之間的距離

距離

A和B總是在相同的X座標。

輸入例:

a = 3.5 #Distance from object at point A (in cm) 

b = 7 # Disatance from object at point B (in cm) 

c = 5 # Distance between A and B (in cm) 

輸出應該是一些座標或東西,我可以用它來找到一個對象的位置。

我該如何計算物體的位置?我知道有一種算法,但我不知道它叫什麼或它是如何工作的。

我想這是一個比編程問題更多的數學問題,但我想通過編程來實現。

反正輸入不需要是這個。我想你還需要一個角度或類似的東西,所以如果需要極端輸入,只需在anwser中使用它。

謝謝!

(我是在Win 10位,64位,Python的3.4)

如果你知道如何做到這一點還是有些算法的名字,但你不知道的Python,請指出來或給予如何的例子用數學來做,我會嘗試在Python中實現它。

+2

你基本上有一個三角形,你知道3邊的長度。由於您沒有任何參照系,因此獲得任何絕對位置信息都是不夠的。然而,你可以使用餘弦定律得到三角形的角度。 –

+0

如果機器人的座標知道那麼耶,該對象的座標可以找到 –

回答

0

用座標(0,0), (b,0), (cx,cy)繪製三角形ABC(將原點固定在A處,以便在任何地方更好地放置它 - 稍後可以隨時移動座標)。

那麼你知道這個數量AC^2 = cx^2 + cy^2BC^2 = (cx-b)^2 + cy^2。這些公式可以解決cx = (AC^2 - BC^2 + b^2)/2bcy = +/- sqrt(AC^2 - cx^2)。 請注意,您不提供足夠的信息來推斷cy的符號(您的對象所在的x軸的「側」)。

這對Python中的代碼很簡單。

+0

你能解釋一下這個更簡單嗎?我只有13歲,英語不是我的主要語言。現在我不知道該怎麼做。我瞭解它是如何計算的,但是什麼是cx和cy?哪個變量應該是/我該如何計算最終結果,對象位置? –

+0

cx和cy是對象的座標,這些是你試圖解決的變量 –

+0

是的,對象的位置是'(cx,cy)'。我們選擇'A'在原點,'B'是另一個固定點(在x軸上,我寫的方式),所以'AC'是從'A'到'C'的距離「BC」是從「B」到「C」的距離。 'AB',從'A'到'B'的距離就是我所說的'b'。 – xnx

0

對象有兩個圓周,一個在機器人位置1的中心位置(已知)和半徑爲a(=從位置1到對象的距離),另一個位於中心位置2和半徑b(=距離位置的距離2到對象)。那麼這是一個找到這兩個環節的交集的問題。由於圓周將在兩點相交,因此您仍然必須確定物體是在哪一點上。因此,您需要一些額外的信息來決定這一點,但我相信這一點你可以開始。

0

您是否使用超聲波傳感器?

A = (-c/2, 0) 
B = (+c/2, 0) 
C = (tx, ty), ty >= 0 

然後

AC^2 = (tx+c/2)^2 + ty^2 = a^2 
BC^2 = (tx-c/2)^2 + ty^2 = b^2 

因爲答案是唯一確定的,它只是解決了之後。

+0

Thx!這對我的理解幫助很大。 –