API 我应该用什么来控制 ARDrone 2.0?

What API should I use to control an ARDrone 2.0?

我正在做一个关于自主飞行的项目,我使用的是 ARDrone 2.0。我想知道哪个 API 更适合向无人机发送命令。我看到我可以使用 NodeJS 或 ROS 平台,但我希望有经验的人可以帮助我做出明智的决定。

对我来说最重要的是从传感器读取数据和从笔记本电脑接收数据的稳定性。如果我必须学习编程语言或库,我不会有困难。

ROS

我不知道 NodeJS,但我使用 ROS 已经有几年了,所以我可以给你一些关于它的信息。

ROS 是模块化的,并且有一个很好的 publisher/subscriber 系统,可以使用回调函数在各个模块(在 ROS 术语中称为 nodes)之间交换消息。

通常,每个任务和每个传感器都有一个单独的节点。 一个 "task node" 需要一些数据,订阅了一个特定的 topic 并注册了一个回调函数。 "sensor node" 从传感器获取数据,将数据包装在 消息 中并将此消息发布到主题。 每次发布新消息时,都会自动调用订阅该主题的所有节点的回调函数。 这样可以很容易地在各个节点之间交换数据,并且您可以轻松地交换程序的一部分,例如如果您想使用其他传感器或任务发生变化。

订阅网络中不同机器上 运行 的节点非常容易,因此您可以将数据从笔记本电脑发送到无人机而无需额外的努力(假设它们已连接到同一网络)。

ROS 同时支持 C++ 和 Python。还有 Java、JavaScript 和 LISP 的绑定,但我不知道它们有多完整和稳定(从未在其中使用过)。

除了核心框架外,ROS 还附带了许多有用的模块和一个不错的可视化工具,并且具有全面的 beginner tutorial

鉴于您的项目时间紧迫,我建议node-ar-drone,使用Javascript来控制无人机:

  1. 非常简单--你不需要学习机器人框架,只需要一个 比较简单API.
  2. 它有用户:至少有3或4 人们在 github 上积极发帖和回复问题 存储库。
  3. 有很多项目展示了如何使用该库,从简单到复杂。例如,ar-drone-rest, webflight, ar-drone-autonomy.