问题标签 [px4]

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.

0 投票
0 回答
456 浏览

px4 - 基本 VISUAL_POSITION_ESTIMATE 样本中断 PX4 EKF2

我正在尝试使 VISUAL_POSITION_ESTIMATE 消息起作用。经过大量的尝试和错误,我最终创建了一个非常基本的示例程序,它只是以 VISUAL_POSITION_ESTIMATE 消息的形式提供 PX4 为无人机报告的位置和方向。我的预期是这将是一个 noop,因为发送到 PX4 的视觉位置与它已经计算的相同。

结果是,在这样的设置中甚至无法武装无人机。

如果一个人武装无人机并起飞而没有考虑 VISUAL_POSITION_ESTIMATE 消息,然后在无人机升空后开始考虑它们,无人机最终会翻滚和移动不规律。

我想知道我做错了什么,以及如何使 VISUAL_POSITION_ESTIMATE 消息起作用。任何帮助表示赞赏。

实验细节:

我有一个使用 AirSim 的 PX4 SITL 设置,如下所述:https ://dev.px4.io/en/simulation/airsim.html 。我正在使用最新的 PX4 固件主控。./build/posix_sitl_default/bin/px4 可执行文件从源目录启动。PX4 启动脚本是这个:https ://pastebin.com/C7ExQzuk

启动后,我启动了基于 mavlink_upd.c 示例代码的最小 VISUAL_POSITION_ESTIMATE 应用程序,这里是源代码:https ://pastebin.com/FfxRkQYJ

如果我在考虑视觉位置估计的情况下启动 PX4,我什至无法武装它:

我只使用 GPS 启动它,我可以布防和起飞,但它会在融合时超时,无人机会翻滚/四处移动:

翻滚与上面提到的融合超时事件有关。

我想知道我做错了什么,以及让 VISUAL_POSITION_ESTIMATE 消息的幼稚虚拟样本工作的最简单方法是什么。

阿科斯

0 投票
0 回答
469 浏览

python - PX4 pythondronekit,如何移动无人机?

我正在使用 PX4 1.8.0 的四旋翼无人机

我想编写一个python脚本,根据一些输入,使无人机向特定方向移动(例如向右、向左、向上移动5米等)或使无人机移动到特定的gps位置。我需要做一些非常互动的事情,这就是为什么任务不适合我的需要。

我尝试使用pymavlink/dronekit,既使用simple_goto()等特定命令,也使用message_factorycommand_long_send直接发送mavlink消息,但没有结果。我还在px4凉亭模拟器上进行了一些测试,结果与无人机相同

只有少数命令有效,例如 simple_takeoff() 或 command_long_send 和 MAV_CMD_NAV_TAKEOFF。

有人有想法让这架无人机以交互方式移动吗?如果您提供一些示例或指南,将不胜感激:)

非常感谢

0 投票
1 回答
368 浏览

ros - 在裸机硬件上处理 ROS / MAVROS 消息

我有一个项目,它涉及使用预定义的 MAVLink 和 ROS / MAVROS 消息的小子集与代理进行简单的串行通信。

我在自己的裸机嵌入式 ARM Cortex F4 硬件上运行,没有底层操作系统(除了我自己的支持串行通信和其他硬件 I/O 等的框架)。

关于此任务的 MAVLink 方面,该过程似乎相对简单。消息 ID 是预定义的,MAVLink 头文件(从 XML 生成)包含打包和序列化功能。我已经成功实现并测试了这方面。

但是,我正在努力实现与 ROS 和 MAVROS 相同的功能。

我注意到 MAVROS 发行版包含定义 MAVROS 消息和与 MAVLink 消息之间的转换的头文件。

以下要点概述了我试图理解的过程。

  • 收到一条消息作为 MAVLink 数据包,我如何确定它是否真的是 ROS / MAVROS 消息?我假设 MAVLink 消息 ID 与标准 MAVLink 消息不同,但我找不到任何有关此的信息。
  • 一旦我知道它是 ROS / MAVROS 消息,我可以使用 MAVROS 分发中定义的 MAVLink 到 MAVROS 转换代码(如上所述)将其转换。
  • 现在我有一条 MAVROS 消息,我如何确定实际的消息类型并解析和提取其有效负载?我假设这与第一个要点(识别 ROS / MAVROS 消息)有关。
  • 同样,我如何反转此过程以从特定 ROS 消息类型所需的有效负载构建 MAVROS 消息?如上所述,它随后转换为 MAVLink 和序列化很简单。

最终,我要做的就是序列化和反序列化一小部分 ROS / MAVROS 消息,而不需要大量的框架开销。虽然允许我使用 MAVLink 执行此操作的信息很容易获得且易于实现,但我找不到使用 ROS / MAVROS 消息实现相同功能所需的等效信息。

非常欢迎任何帮助或澄清!

非常感谢!

0 投票
0 回答
384 浏览

docker - 如何从 docker 容器中刷新 pixhawk?

我是使用 Docker 在 PX4 上进行开发的第一步。

因此,我通过一些额外的安装px4io/px4-dev-nuttx来扩展图像。px4dev

Dockerfile

比我运行图像/容器:

我也试过:

比我切换到/src/firmware/,构建代码。但是上传总是会导致这个错误:

我使用 Pixhawk 2.4.8,我的主机是 Ubuntu 18.04 64 位。在主机上做同样的事情会奏效。

  1. 这里出了什么问题?在刷机过程中重启 PX4 是否会导致问题?

  2. 如果通常不可能,构建的输出文件是什么,是否可以使用 QGroundControl 上传?

亲切的问候,亚历克斯


运行脚本:


出于某种原因,有时上传的结束方式会有所不同:

但即使我这样做。它卡在这里。


关于默认设备,我通过构建文件夹 grep:

px_uploader.py --port "...,/dev/serial/by-id/usb-3D_Robotics*,..."。所以我会说它寻找/dev/serial/by-id/usb-3D_Robotics_PX4_FMU_v2.x_0-if00

ls /dev/在容器内部查看可用设备,既没有列出/dev/ttyACM0也没有列出/dev/serial/by-id/usb-3D_Robotics_PX4_FMU_v2.x_0-if00。这可能是问题所在。有问题--device=...

ls显示/dev/usb/可用。所以我检查了它,lsusbPX4列在其他旁边:

也许这个 USB 设备的容器内没有正确的驱动程序?

在我的主机上,我得到了major:minor no 166:0:

据我所知,主机和容器中的文件夹/sys/dev/char/166:0是相同的。在容器上似乎是与主机上的*/tty/ttyACM0相关的链接:

在主机上,我得到了有关设备的信息 - 但容器内缺少这些信息:


在这篇文章之后,我将运行脚本更改为(没有privileged标志)

比我看到的设备。但它们不可访问。

0 投票
1 回答
459 浏览

c++ - 使用 Opencv 和 Pixhawk2 跟踪另一架无人机

我在一个无人机团队工作,我的任务是自动跟踪并锁定另一架无人机。我对我的 opencv 部分进行了编码,并使用了背景替换方法和几个过滤器。我可以从我的代码中得到绝对的结果(比如向左,向右)。我的问题是如何将此结果发送到无人机的电机。如何使用 C++ 与我的无人机通信?我已经阅读了很多来自 ardupilot、ardurov、opencv 和 pixhawk 的文档。但还是想不通。

0 投票
1 回答
167 浏览

ros - 是否可以使用 NVIDIA Jetson TX2 通过 UART 端口控制 DJI M210 无人机的速度?

我想使用 DJI M210 无人机进行测绘。我实际上是在使用 LiDAR 和 SLAM 算法来绘制 GPS 拒绝环境的地图。我想知道,如果有人知道,是否可以在没有 GPS 的情况下控制无人机的速度(我会从 SLAM 向无人机发送里程计)。我读过 DJI 的速度控制仅由 GPS 解释完成。

0 投票
0 回答
221 浏览

simulink - 从 Simulink 将代码部署到 Pixhawk4 时收到错误

我正在尝试运行 Mathworks 提供的示例 Simulink 模型,但是在将模型部署到 Pixhawk 飞行控制器时,我收到以下错误:

我已按照所有步骤正确配置硬件,除了最后一部分我也无法接收加速度计数据。当时测试连接时收到的错误是:

有人可以解释我为什么会遇到这个问题吗?谢谢

0 投票
1 回答
1701 浏览

python - 我可以用 python 连接到 pixhawk 吗?

我想在没有 Mission Planner 的情况下连接 pixhawk,因为 Mission Planner 支持 Python 2.7 脚本,但我使用 Python 3.7,所以我可以使用遥测模块连接到 pixhawk Just Python 吗?操作系统:赢 10

0 投票
1 回答
120 浏览

python - Dronekit 上传到 Pixhawk 4 - 舍入问题

当我通过 Mission Planner 上传到 Pixhawk,然后再次下载时,似乎没有任何问题。但是当我使用 Dronekit 上传任务文件时,它回来看起来很奇怪。

这是我用来上传的(简化的)代码:

--

这是我上传的内容:

这是我通过任务规划器下载它时返回的内容:

我已经阅读了官方dronekit 文档中的舍入问题: https ://dronekit-python.readthedocs.io/en/latest/examples/mission_import_export.html

但是,我一直检查到最终上传,似乎没有任何舍入问题。因此,除非它在 ​​pymavlink 库或 pixhawk 本身的深处(我怀疑这是因为通过任务规划器上传和下载不会导致此问题),否则我认为这不是问题。

有人有什么想法吗?

0 投票
1 回答
1499 浏览

c++ - 安装多个版本时使用特定的 protobuf 版本

我正在尝试根据PX4 的说明编译PX4提供的凉亭示例。我正在开发 Ubuntu-18.04。

运行 command:make px4_sitl gazebo时,出现以下错误:

将错误消息拼凑在一起给出:此文件是由与您的协议缓冲区标头不兼容的较新版本的 protoc 生成的。请更新您的标题。

我的机器上有两个不同的protoc二进制文件:

  • /usr/bin/protoc(3.0.0),所需的最低版本
  • ~/catkin_ws/devel/bin/protoc(2.6.0),太老了,默认使用

如何确保使用第一个版本?我试过这个:export PATH=/usr/bin:$PATH以确保首先找到正确的编译器,但我可能还需要指示使用正确的头文件,因此在/usr/include/google/protobuf而不是~/catkin_ws/devel/include/google/protobuf. 但是,我不确定如何进行。