2015-07-19 62 views
0

我在尋找使用來自2個不同過程的相同車輛的幫助。Dronekit API Python:如何從兩個不同的進程連接到同一輛車?

我有一個SITL實例運行。我試圖從我的DroneKit腳本的主進程和同一腳本中產生的子進程連接到同一個實例。

兩個連接都正常工作(MPAPIConnection對象在兩種情況下返回,具有相同的@引用),但在子進程中,連接對象看起來不是活的,並且車輛參數未更新。

在下面的例子中,無人機移動時主進程返回的位置是實際位置,但子進程返回的位置在第一次啓動子進程時仍保持在初始位置。

實施例:

import time 
from pymavlink import mavutil 
import multiprocessing 


class OtherProcess(multiprocessing.Process): 
    def __init__(self): 
     super(OtherProcess,self).__init__() 

    def run(self): 
     sp_api = local_connect() 
     sp_v = api.get_vehicles()[0] 

     while True: 
      print "SubProcess : " + str(sp_v.location) 
      time.sleep(1) 

api = local_connect() 
v = api.get_vehicles()[0] 

sp = OtherProcess() 
sp.start() 

while True: 
    print "MainProcess : " + str(v.location) 
    time.sleep(1) 

那麼,有在同一mavproxy實例內訪問來自不同的過程相同的車輛的方法嗎?

回答

0

您應該再試一次 - DKPY2(剛剛發佈)使用獨立腳本,其設計思想是每個使用connect()函數返回的Vehicle對象都是完全獨立的。當然可以用同一個腳本連接到不同的車輛(相同的過程),所以很有可能您可以連接到相同的車輛和不同的流程。

+0

是的,我跟着關於github的DKPY2討論,我會再試一次。否則,使用DKPY1代理管理器是必要的。謝謝 ! – benblass

+0

我認爲你對DKPY2有效運作的機會相當高 - 但DKPY1很低 - 這根本不是設計要求。 –

相關問題