Dronekit API Python:如何从两个不同的流程连接到同一车辆?

时间:2015-07-19 18:47:35

标签: python dronekit-python dronekit

我正在寻找与来自两个不同流程的同一车辆合作的帮助。

我有一个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实例中的不同进程访问同一个工具?

1 个答案:

答案 0 :(得分:0)

你应该再试一次 - DKPY2(刚刚发布)使用独立脚本,其设计理念是使用connect()函数返回的每个Vehicle对象是完全独立的。当然可以在同一个脚本中连接到不同的车辆(相同的过程),因此很可能您可以连接到同一车辆和不同的过程。