簡體   English   中英

Sphero:獲取實時位置數據以停止sphero(android)

[英]Sphero: getting real time location data to stop sphero (android)

我正在嘗試為sphero構建一個android應用程序,我需要在房間的某些區域停止locatorData ,我正在嘗試使用locatorData使用DeviceMessenger.AsyncDataListener

我注意到,然而當它仍在滾動時它是不可能分辨出它並且當它處於某一組坐標時停止它,因為數據很快就會到達。 他基本上停止了更遠,我可以看到坐標隨着屏幕上的延遲而增加。 我知道通信是異步的,我可以在通信過程中以某種方式丟失一些數據,但我認為通過給他一個窗口圍繞坐標,我希望他能夠在該區域中或多或少地阻止他,但它不會看起來它運作得體。

現在,我提出的唯一解決方案是發送一個滾動命令,根據速度計算需要滾動到達那些坐標的時間並發送延遲停止命令,但我不喜歡這個從長遠來看,當我實現我需要的所有功能時,我認為它不會正常工作。 有沒有人對locatorData有什么建議?在這種情況下如何使用它?

我之前使用過'locatorData',你想要做的事情是非常有可能的。 有幾種方法可以完成它。

您遇到的巨大延遲不是通信延遲,而是定位器傳感器每秒僅更新10次(10Hz)的事實。 但是,這仍然需要足夠的時間才能在限制范圍內停止球。 另一個因素是,你有沒有想過球需要1-2英尺才能停下來? 這取決於發送停止滾動命令時球的行進速度。

駕駛室實現目標的一種方法是以較慢的速度駕駛球。 如果你以50%的功率而不是100%的速度行駛,你的結果應該更准確。 因為,時間延遲和停止延遲對精度的影響較小。

另一種可以實現此目的的方法是通過預測算法。 使用'locatorData',您知道球的位置(x,y),並且您知道它的行進速度(vx,vy),您可以預測它將來的位置。 因此,當您的算法在1-2秒內確定球將在您的目的地時,您可以提前發送停止命令。

您可能也想查看ConfigureLocator命令,因為這可以使您的球的起點為(x = 0,y = 0)。

我希望這個信息幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM