【问题标题】:Dronekit API Python: How to connect to the same vehicle from 2 different processes?Dronekit API Python:如何从 2 个不同的进程连接到同一辆车?
【发布时间】:2015-07-19 18:47:34
【问题描述】:

我正在寻求通过 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实例中的不同进程访问同一个车辆?

【问题讨论】:

    标签: python dronekit-python dronekit


    【解决方案1】:

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

    【讨论】:

    • 是的,我关注了github上的DKPY2讨论,我会再试一次。否则,对于 DKPY1,代理管理器是必需的。谢谢!
    • 我认为你在 DKPY2 上有效工作的机会很高 - 但在 DKPY1 上非常低 - 这根本不是设计要求。
    猜你喜欢
    • 2018-02-22
    • 1970-01-01
    • 2020-10-07
    • 2018-11-25
    • 1970-01-01
    • 2013-10-21
    • 2019-09-22
    • 1970-01-01
    相关资源
    最近更新 更多