问题标签 [qgroundcontrol]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 这是否可以从 Django(Python) Web 应用程序调用 QGroundControl 的方法?
我在 Ubuntu 18.04 上托管了一个 Django Web 应用程序,并且在我安装了 QGroundControl 的同一台机器上。
在我的 Django Web 应用程序中有两个按钮(起飞和返回陆地)。
当我从我的 Web 应用程序中按下 Take Off 按钮时,是否有可能调用 QGroundControl 的 Take Off 方法?
如何连接 Django (Python) Web 应用程序和 QGroundControl?
会有一些API或Web Service等吗?任何想法?
qt - 如何在 QGroundControl 中将新模块导入自定义层
我正在开发 QGroundcontrol 的自定义版本;我尝试将现有模块(QtQuick.shapes 1.12)导入 CustomFlyViewVideo.qml。代码正常构建,但是当我尝试运行它时,出现以下错误:
raspberry-pi - 将 mavlink(在 RPi 上)与 QGroundControl 连接
我正在尝试通过 3DR Radio Telemetry 将 Mavlink(安装在 RPi 上)与 QGroundControl 连接,以便在不依赖 Ardupilot/Px4 飞行控制器的情况下从 RPi 传输遥测数据。我想用mavlink的消息格式实现GPS或Postion等数据的传输,不依赖ardupilot/PX4。
到目前为止,我已经从mavlink git 中获取了示例代码,并按照说明构建了代码。我启动 QGroundControl 并能够从 QGC 接收系统 ID 和组件 ID。我修改了代码以将心跳从 RPI-mavlink 传输到 QGroundControl。
构建并执行此代码后,我期待 QGroundControl 连接/显示收到的消息,但 QGroundControl 没有任何可用的信息。
我需要了解我正在做的事情是否正确,或者是否有预定义的方法来建立这种沟通。请帮助我提供可用于在没有 ardupilot/Px4 的情况下完成消息传输的文档(如果有)。如果有人可以在这个问题上指导我,那将非常有帮助。
谢谢
px4 - QGroundControl 视频源问题
我正在处理 QGroundControl 上的一个棘手问题,当我连接到 UAV 时它不显示视频源选项,我不知道如何让它显示出来。已经尝试按照建议重新安装,安装 Qt Creator,但没有任何效果。
在“应用程序设置”的“飞行视图”下的“常规”中,您应该能够在“视频解码优先级”下方看到“视频源”选项。或者,像下面的这个例子,有一个“视频”子菜单。当我断开连接时,我的确实显示,但是当我在 Gazebo 模拟上连接到 Px4 时,视频源消失并显示在主页“等待视频”上。
来自 https://docs.qgroundcontrol.com/ 的示例图片
我在朋友的计算机上运行了相同的模拟,并且显示了此选项。
有谁知道如何解决这个问题?也许它与 Ubuntu 16 版本有关?
android - GStreamer mp4mux 使用自定义应用程序提供“缓冲区没有 PTS”错误
我有一个用 C++ 编码的管道,如下所示:
appsrc 将来自无人机的 USB 无线视频接收器的视频注入管道。
更多上下文:
- USB 接收器硬件为我们提供了 512 字节的非时间戳原始 Annex-B h.264 视频块
- 帧率应该是 60 fps,但实际上它很少跟上它并且取决于信号强度(因此 framerate=(fraction)0/1”,这就是 qtsink 和 filesink 都没有同步到管道的原因(同步=假))
- 硬件引入了至少 300 毫秒的延迟,如 appsrc 中所设置
- appsrc 自动为我的缓冲区添加时间戳 (do-timestamp=TRUE)
- 我正在使用 mp4mux reserved-max-duration 和 reserved-moov-update-period 来防止应用程序崩溃破坏 mp4 文件
- 我正在为 Android 使用 GStreamer 1.18.4
当无人机未在空中时,视频录制工作正常。但是当它起飞时,在大约 15 秒的正确视频录制后,mp4mux 元素失败并显示消息“<strong>Buffer has no PTS”。不幸的是,一些用户一直在报告这一点,但我无法重现它(因为它需要飞行我没有的无人机),这没有多大意义。到目前为止,我的猜测是,在那个特定时刻,无线视频链路中可能存在一些拥塞,并且某些视频数据包可能会延迟几毫秒,这可能会造成一些麻烦。
这是创建appsrc的(简化的)代码
当一个新的缓冲区被 USB 驱动程序填满时,它会像这样被推送到管道中:
这是我从受影响的机器上从 Android logcat 得到的:
我试过的:
- 将 GstBaseParser pts_interpolation 设置为 TRUE,并将 infer_ts 设置为 TRUE
所以我的问题是:
- 你能看出我的代码有什么问题吗?我错过了什么?
- 在找到真正原因之前,我可以依靠 matroskamux 暂时避免该问题吗?
编辑:我设法在“原位”复制它,同时使用连接到我的 tee 元件的接收垫的探针打印出每个缓冲区的 PTS 和 DTS,并发现问题缓冲区没有 DTS 和没有 PTS。也许我的 h264parse 或 capsfilter 在我的 appsrc 和我的 tee 之间做了一些讨厌的事情?
编辑 2:经过更多挖掘,我发现了更多线索:我编写了一些代码,将通过 USB 传来的每个视频数据包连同时间戳转储到二进制文件中,并使用播放器进行播放。然后我去现场让客户驾驶无人机,直到触发错误。这样我就有了一种随意重现错误的方法。
通过使用两个探针,一个连接到我的“appsrc”元素的“src”焊盘,一个连接到我的“tee”元素的“sink”焊盘,我打印了通过它们的每个数据包的 PTS 和 DTS。
以下是我的发现:
TL;DR:在某个(随机)点,即使 h264parse 被提供带时间戳的缓冲区,它也会输出一个没有 PTS 和 DTS 的缓冲区。
产生我通过 USB 获得的流的硬件 h264 编码器插入没有 VUI 的 SPS NALS,并且
"[parser] unable to compute timestamp: VUI not present"
在将 h264parse 调试级别设置为 6 时出现很多这样的错误“VUI 不存在”错误非常一致并且非常频繁地出现。大多数时候都没有注意到,因此我不是 100% 确定这是原因
由于appsrc 推送的h264 缓冲区没有对齐,并且h264parse 输出的是au-aligned 缓冲区,因此appsrc 中的512 字节缓冲区数与h264parse 中的缓冲区数之间没有直接关系。因此,我相信可以相当肯定地说,appsrc 生成的时间戳与 h264parse 生成的时间戳之间没有直接关系。h264parse 必须重新计算它们。
我的 h264 流非常简单:SPS->PPS->I-frame->(一些 P-frames)。没有 B 帧,每一帧都包含在一个大的脂肪片中(只有 1 个 NAL)。
所以,现在我试图在这两个选项之间进行选择:
- 每次检测到无 VUI 的 SPS 时,手动计算并插入带有 VUI 的假 SPS NAL。由于无线电信号强度(尽管它以 60fps 编码),流应该具有可变的帧速率,并且分辨率和图像属性始终相同。
- 自己解析流以向管道提供带有时间戳的 au 对齐缓冲区。
installation - 安装 QGroundControl 的问题
我正在尝试在我的 Ubuntu Linux 机器上安装 QGroundControl。我有 Linux 的发行版 18.04。我已按照他们网站上的详细说明进行操作:https ://docs.qgroundcontrol.com/master/en/getting_started/download_and_install.html
但是,当我尝试在最后一步中打开 QGroundControl.AppImage 时,它失败了,并从我的用户注销到登录屏幕。重新登录时看到此错误:
有人可以帮我指出正确的方向吗?
qt - 如何将计时器放入QGroundcontrol?
我正在运行 QGroundcontrol,它将每 5 秒通过 TCP 通信检查一个站的状态。看QT和C++的源码,不知道应该把定时器放在哪里。我知道我应该放一个 Signal and Slot 机制,但具体在哪里呢?我希望有人能在这方面帮助我,非常感谢。
tcp - 我想让 QGroundcontrol 检查 IP 和端口(通过 Modbus)并显示值
我正在修改 QT 和 C++ 中的 Qgroundcontrol,以便它在启动时检查特定的 IP 和端口。
就像:1.) 发送 00 00 00 00 00 06 01 02 00 01 00 01 到 192.168.2.200:501
我怎样才能做到这一点?如果有人可以帮助我,至少给我一个线索,真的很感激,可能是我的概念完全错误......