0

我正在从 2 个不同的流程中寻求使用同一辆车的帮助。

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

4

1 回答 1

0

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

于 2015-10-28T02:52:59.303 回答