# 有效载荷和摄像头

PX4 支持多种有效载荷和相机。

有效载荷连接到 战斗控制器输出通常可在任务中自动触发,或使用遥控直通或 MAVLink/MAVSDK 命令手动触发。

备注

有效载荷(执行器)可在 预上膛状态这样可以关闭电机,但允许执行器移动。这可能比在载具上膛时进行测试更安全。

# 无人机测绘

在勘测过程中,测绘无人机使用相机按时间或距离间隔捕捉图像。

支持 MAVLink 摄像机协议 (打开新窗口) 提供与 PX4 和 QGroundControl 的最佳集成。MAVSDK 提供了简单的应用程序接口,可在以下两个方面使用该协议 独立摄像机操作 (打开新窗口) 并在 任务 (打开新窗口).

也可使用 PWM 或 GPI 输出将摄像机直接连接到飞行控制器。对于连接到飞行控制器的相机,PX4 支持以下 MAVLink 命令/任务项目:

以下主题介绍了如何 接通 并配置摄像机:

# 货运无人机("致动器"有效载荷)

货运无人机通常使用伺服/致动器来触发货物释放、控制绞盘等。PX4 支持通过遥控和 MAVLink 命令触发致动器。

# 有效载荷输出:控制分配

备注

PX4 v1.13 支持控制分配,但默认为禁用。

如果启用了控制分配 (sys_ctrl_alloc=1您可以指定最多 6 个输出由 RC 通道控制,最多 6 个输出由 MAVLink 控制。

致动器 在配置屏幕中,为任何空闲的有效载荷输出(在 执行器输出 节)。

这些功能是

# 有效载荷输出:混合器分配

混合器文件 用于禁用控制分配时指定 RC 和 MAVLink 直通的有效载荷输出。

通常只有三个输出映射到 AUX1, AUX2, AUX3 飞行控制器的输出。您可以在 "RC AUX "选项卡中确认哪些输出用于载具的 RC AUX 直通。 机身参考.

例如 Quadrotor-X 具有法线映射:

  • ";AUX1: RC AUX1 通道的馈通";
  • ";AUX2: RC AUX2 通道的馈通";
  • ";AUX3: RC AUX3 通道的馈通";

如果您的载具没有指定 RC 辅助馈通输出,您可以使用自定义的 混合器文件 该地图 对照组 3 输出 5-7 至所需端口。默认直通混音器就是这样一个例子: pass.aux.mix (打开新窗口).

# 遥控有效载荷控制

通过使用 RC_MAP_AUXn 参数

如果使用控制分配,那么 RC_MAP_AUXn 将选定的 RC 通道映射到具有指定功能的输出端 RC 辅助 n其中 n 为 1 至 6(例如 RC_MAP_AUX2 将选定的 RC 通道映射到已分配功能的执行器输出上 遥控辅助 2).

如果使用混合器、 RC_MAP_AUXn 映射到混音器文件中定义的相同编号的直通输出(例如 RC_MAP_AUX2 将所选通道映射到由 AUX2 在混音器文件中)。

mav_cmd_doo_set_actuator (打开新窗口) 可在命令或任务中使用,最多可设置 6 个执行机构(一次)的值。

如果使用了控制分配,则命令的参数索引(1 至 6)将映射到指定的输出端。 车外执行器套件 n 的输出函数 n 索引(例如 参数 5 在函数 车外执行器套件 5).

如果使用混合器文件,则命令的参数索引(1 至 6)会映射到相应的直通参数 AUXn 混音器文件中的值。

# MAVSDK (脚本示例)

以下是 MAVSDK (打开新窗口) 示例代码 (打开新窗口) 演示了如何使用 MAVSDK 动作插件的 set_actuator() (打开新窗口) 方法。

set_actuator() 索引值映射到为机身定义的 MAVLink 有效载荷输出。

备注

MAVSDK 发送 mav_cmd_doo_set_actuator (打开新窗口) 引擎盖下的 MAVLink 命令。

#包括 <mavsdk/mavsdk.h>;
#包括 <mavsdk/plugins/action/action.h>;
#包括 时间顺序<chrono>;
#包括 <cstdint>;
#包括 iostream>;
#包括 未来;

使用 命名空间 mavsdk;

空白 用法( 标准::字符串及样品; bin_name)
{
    标准::cerr <<; 使用方法:"; <<; bin_name <<; " <connection_url> <actuator_index> <actuator_value>\n";
              <<; "连接 URL 格式应为 :\n";
              <<; " 对于 TCP:tcp://[server_host][:server_port]\n";
              <<; "对于 UDP:udp://[bind_host][:bind_port]/n";
              <<; " 对于串行端口:serial:///path/to/serial/dev[:baudrate]\n";
              <<; 例如,要连接到模拟器,请使用 URL:udp://:14540\n";;
}

int 主要(int 参数, 烧焦** 参数)
{
    如果 (参数 != 4) {
        用法(参数[0]);
        返回 1;
    }

     标准::字符串 connection_url = 参数[1];
     int 索引 = 标准::脚踏(参数[2]);
     浮动 价值 = 标准::单链(参数[3]);

    Mavsdk mavsdk;
     连接结果 connection_result = mavsdk.添加任意连接(connection_url);

    如果 (连接结果 != 连接结果::成功) {
        标准::cerr <<; 连接失败:"; <<; 连接结果 <<; '\n';
        返回 1;
    }

    标准::cout <<; "等待发现系统...\n";;
    汽车 舞会 = 标准::承诺<;标准::共享_ptr<;系统>>;{};
    汽车 未来 = 舞会.获取未来();

    // 我们等待着新系统的发现,一旦我们找到一个有
    //自动驾驶仪,我们决定使用它。
    mavsdk.subscribe_on_new_system([及样品;mavsdk, 及样品;舞会]() {
        汽车 系统 = mavsdk.系统().();

        如果 (系统->;has_autopilot()) {
            标准::cout <<; "Discovered autopilot\n";;

            // 再次取消订阅,因为我们只想找到一个系统。
            mavsdk.subscribe_on_new_system(nullptr);
            舞会.设置值(系统);
        }
    });

    // 我们通常以 1Hz 的频率接收心跳,因此我们应该找到一个
    最长约 3 秒钟后 // 系统肯定会启动。
    如果 (未来.等待(标准::计时器::秒钟(3)) == 标准::未来状态::超时) {
        标准::cerr <<; "未找到自动驾驶仪,退出;;
        返回 1;
    }

    // 立即发现系统。
    汽车 系统 = 未来.获取();

    // 安装插件。
    汽车 行动 = 行动{系统};

    标准::cout <<; "设置执行机构...\n";;
     行动::结果 set_actuator_result = 行动.设置促动器(索引, 价值);

    如果 (设置致动器结果 != 行动::结果::成功) {
        标准::cerr <<; "设置执行器失败:"; <<; 设置致动器结果 <<; '\n';
        返回 1;
    }

    返回 0;
}

# 监视、搜索和救援

监视和搜索救援无人机的要求与测绘无人机类似。主要区别在于,除了在规划的勘测区域内飞行外,它们通常还需要对相机进行良好的独立控制,以捕捉图像和视频,而且可能需要能够在白天和夜间工作。

使用支持 MAVLink 摄像机协议 (打开新窗口) 因为它支持图像和视频捕捉、缩放、存储管理、同一载具上的多个摄像头以及在它们之间切换等功能。这些摄像头可以通过 QGroundControl 手动控制,也可以通过 MAVSDK 控制(两者都适用于 QGroundControl 和 MAVSDK)。 独立摄像机操作 (打开新窗口) 并在 任务 (打开新窗口)).参见 相机触发 以了解如何配置您的摄像机与 MAVLink 配合使用。

备注

直接连接到飞行控制装置的摄像头 只是 支持摄像机触发,不太适合大多数监控/搜索工作。

搜救无人机可能还需要携带货物,例如为受困的徒步旅行者提供应急物资。参见 货运无人机 有关有效载荷运送的信息,请参阅上文。