# 有效载荷和摄像头
PX4 支持多种有效载荷和相机。
有效载荷连接到 战斗控制器输出通常可在任务中自动触发,或使用遥控直通或 MAVLink/MAVSDK 命令手动触发。
备注
有效载荷(执行器)可在 预上膛状态这样可以关闭电机,但允许执行器移动。这可能比在载具上膛时进行测试更安全。
# 无人机测绘
在勘测过程中,测绘无人机使用相机按时间或距离间隔捕捉图像。
支持 MAVLink 摄像机协议 (打开新窗口) 提供与 PX4 和 QGroundControl 的最佳集成。MAVSDK 提供了简单的应用程序接口,可在以下两个方面使用该协议 独立摄像机操作 (打开新窗口) 并在 任务 (打开新窗口).
也可使用 PWM 或 GPI 输出将摄像机直接连接到飞行控制器。对于连接到飞行控制器的相机,PX4 支持以下 MAVLink 命令/任务项目:
- mav_cmd_doo_set_cam_trigg_interval (打开新窗口) - 设置两次捕捉之间的时间间隔。
- mav_cmd_doo_set_cam_trigg_dist (打开新窗口) - 设置捕获间距
- mav_cmd_doo_trigger_control (打开新窗口) - 开始/停止捕捉(使用上述信息定义的距离或时间)。
以下主题介绍了如何 接通 并配置摄像机:
# 货运无人机("致动器"有效载荷)
货运无人机通常使用伺服/致动器来触发货物释放、控制绞盘等。PX4 支持通过遥控和 MAVLink 命令触发致动器。
# 有效载荷输出:控制分配
备注
PX4 v1.13 支持控制分配,但默认为禁用。
如果启用了控制分配 (sys_ctrl_alloc=1您可以指定最多 6 个输出由 RC 通道控制,最多 6 个输出由 MAVLink 控制。
在 致动器 在配置屏幕中,为任何空闲的有效载荷输出(在 执行器输出 节)。
这些功能是
RC 辅助 1
至RC 辅助 6
:输出为 遥控控制车外执行器套件 1
至车外执行器套件 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
在混音器文件中)。
# MAVLink 有效载荷控制
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 配合使用。
备注
直接连接到飞行控制装置的摄像头 只是 支持摄像机触发,不太适合大多数监控/搜索工作。
搜救无人机可能还需要携带货物,例如为受困的徒步旅行者提供应急物资。参见 货运无人机 有关有效载荷运送的信息,请参阅上文。