javascript - 如何将 Parrot AR.Drone 编程为直线飞行

标签 javascript node.js ar.drone

我正在使用 node.js 和 node-ar-drone 对我的 AR.Drone 2.0 进行编程,以在室内执行一些基本的飞行操作。据我所知,无人机似乎永远不会直线飞行。无论我从哪里设置起飞点,它都会左右摇摆,悬停几秒钟,或者撞到墙上。换句话说,如果我运行同一个程序在走廊上飞 10 次,每次都会做不同的事情。

如果它真的穿过走廊,它每次都会落在不同的地方。我会内置计数器移动来调整随机摇摆,例如如果它向右摇摆,我会告诉它向左移动,但这似乎永远不够。再多的反击 Action 似乎也无法让它直线飞行。我在无人机上使用最新的固件。

有人告诉我,无人机上没有任何东西可以纠正飞行过程中的错误,例如反馈回路。除此之外,我还被告知这些无人机主要是为在户外或非常开阔的空间中使用而设计的,这样它就不会坠毁。

我想看看这是否适用于其他任何人,或者是否有人有任何建议让它直线飞行。任何输入或评论都会有所帮助

最佳答案

AR.Drone 确实使用来自其传感器组合的反馈来改进其飞行,如下图所示(来自“The Navigation and Control technology inside the AR.Drone micro UAV”):

enter image description here

对于您的情况,最重要的可能是使用加速度计、陀螺仪和相机的姿态和速度估计的工作情况。您可以采取一些措施来帮助这些系统正常工作:

  1. 确保从完全水平的表面起飞。
  2. 在起飞前调用 ftrim 设置平整水平。
  3. 视觉算法旨在尝试做好工作,即使向下摄像头下的表面没有太多纹理,但如果地板/地面太单调,它们仍然会感到困惑。尝试飞越更有质感和对比度的物体。

对于#3,飞越颜色均匀的地毯或水泥地板等物体会使无人机更难看清它在做什么——这与在光滑、无特征的表面上使用光电鼠标的问题非常相似。当您看到 Parrot 炫耀 AR.Drone 的能力时,您会注意到它们经常飞过一个显然是为了让导航更容易而选择的表面。例如,

来自 https://www.youtube.com/watch?v=IcxBf-kegKo : enter image description here

来自 https://www.youtube.com/watch?v=pEMD6P_j5uQ#t=8m25s : enter image description here

也就是说,对于我的无人机,我有时会遇到这样的情况,即在起飞时无人机立即转向一边直到坠毁,即使我调用了 ftrim 并认为我是从平坦的地方起飞的表面。您可能需要反复试验才能找到一个好的起飞点。

无人机被设计为能够在室内飞行(例如,带有螺旋桨保护器的聚苯乙烯泡沫塑料外壳推荐用于室内飞行,但不推荐用于室外飞行,并且 FreeFlight 应用程序具有室内和室外飞行模式),但根据我的经验无人机仍然会有一点漂移,因此您将在较大的房间内获得最佳效果。

这是一个演示,其中我的无人机在室内非常稳定的方式飞行,在一个大房间里,铺着质地良好的地毯,从一个非常平坦的位置:https://www.youtube.com/watch?v=uhBa11gdbeU

enter image description here

即便如此,您也可以看到无人机在 0:23 处进行了一次小而快速的修正。 .

关于javascript - 如何将 Parrot AR.Drone 编程为直线飞行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29883185/

相关文章:

javascript - Round Date() 毫秒

mysql - 使用 NodeJS、MySQL 测量查询执行时间

java - 如何将 FFmpeg ffplay 框架放入我自己的 Java 应用程序中?

javascript - 如何在 Express.js 中为路由的子路径呈现不同的 View ?

javascript - 谷歌分析如何避免欺骗?

ubuntu - 来自 AR 无人机的流式视频

flash - AR 无人机 2 和 ffserver + ffmpeg 流

javascript - 如何实现跨浏览器的 console.log 功能

javascript - 如何检查 Chrome 扩展程序是否已完全安装

javascript - 在 JavaScript 中是否可以定义负数的平方根?