2015-09-14 131 views
0

我有飞机上的Ardupilot,在地面上使用3DR无线电回到Raspberry Pi做一些先进的地理和姿态数学,并向飞行员提供音频反馈比寻找屏幕)。ArduPilot,Dronekit-Python,Mavproxy和Mavlink - 寻找瓶颈

我正在使用Dronekit-python,它反过来使用Mavproxy和Mavlink。我所发现的是,我只在3Hz左右得到新的姿态数据到PI - 我不知道在哪里的瓶颈是:

  • 3DR在57.6 kHz的频率运行,所有快乐
  • 我有关闭从Ardupilot向下自动推送日志到Pi(Mavproxy的一部分)
  • Pi可以通过DroneKit Python API请求Attitude数据(滚动,偏航等),但它只会获取新数据(即值的变化)大约每1/3秒。

我的底层架构不够深入,无法理解瓶颈可能是什么 - 任何人都可以帮忙吗?是否可能是从基地到计划的往返信息响应时间和返回(其他人似乎从我读过的Mavlink获得的8hz左右)?或Mavproxy,Mavlink和Drone Kit组合的延迟?或者Ardupilot或Telemetry内部有一些设置可以解决这个问题。

我知道这不一定是DroneKit问题,但不能确定它在哪里,因为它跨越了很多组件。

回答

0

请求单个数据包应该可以工作,但是这绝不意味着每秒请求很多次。

为了每秒获得一个特定的数据包多次,建立流。流将每秒触发一定次数,然后将自动发送与其关联的任何分组。 ATTITUDE消息位于名为EXTRA1的组中。

假设您希望每秒接收10条ATTITUDE消息。相关参数称为SR0_EXTRA1。这定义了每秒发送的态度数据包的数量。默认是4.尝试增加该参数到10.

+0

将尝试 - 我的APM似乎是一个看起来不喜欢改变SR0设置(至少Mission Planner);会做固件更新并在此之后立即尝试(如某些线程所示)。你知道SR0_Params控制流媒体吗? SR1设置是否与我的安装相关 - 3DR在平面(APM)和地面(Pi)端使用USB。 – gibbo9000