控制摄像机¶
本页介绍如何使用 MAVLink 控制摄像机。所有版本的 ArduPilot 均支持这些命令:
MAV_CMD_DO_DIGICAM_CONTROL 拍摄照片
MAV_CMD_DO_SET_CAM_TRIGG_DIST 按固定距离间隔拍照
ArduPilot 4.4.0 及更高版本支持这些命令:
MAV_CMD_IMAGE_START_CAPTURE 用于拍照
MAV_CMD_SET_CAMERA_ZOOM 控制摄像机变焦
MAV_CMD_SET_CAMERA_FOCUS 可对摄像机进行手动或自动对焦
MAV_CMD_VIDEO_START_CAPTURE 开始录制视频
MAV_CMD_VIDEO_STOP_CAPTURE 停止录制视频
ArduPilot 4.5.0 及更高版本支持这些命令和信息:
MAV_CMD_CAMERA_TRACK_POINT 用于启动对视频画面上某一点的跟踪
MAV_CMD_CAMERA_TRACK_RECTANGLE 用于启动对视频画面中矩形的跟踪
MAV_CMD_CAMERA_STOP_TRACKING 停止跟踪
MAV_CMD_IMAGE_STOP_CAPTURE 用于停止粘贴时间间隔图片
CAMERA_FOV_STATUS 用于显示摄像机云台指向的纬度、经度和高度
CAMERA_INFORMATION 包括供应商和型号名称、固件版本等信息,供 GCS 使用
CAMERA_SETTINGS 包括变焦和对焦级别,供 GCS 使用
ArduPilot 4.6.0 及更高版本支持这些命令:
MAV_CMD_SET_CAMERA_SOURCE 用于设置所使用的镜头(又称图像传感器
这些命令和信息目前尚不支持,但可能会在未来版本中支持
mav_cmd_request_camera_capture_status
mav_cmd_reset_camera_settings
mav_cmd_set_camera_mode
mav_cmd_doo_trigger_control
MAV_CMD_VIDEO_START_STREAMING 和 MAV_CMD_VIDEO_STOP_STREAMING 用于开始和停止向地面站传输视频流
摄像机捕捉状态
拍摄的图像
相机跟踪图像状态
相机跟踪地理状态
备注
ArduPilot 用于控制摄像机的 MAVLink 界面与早期版本相比,在 4.4 中进行了升级。本页主要讨论 4.4(及更高版本)的接口,其目的是符合 MAVLink 摄像机协议
备注
"这款" 相机和云台的用户维基页面在这里.
MAV_CMD_DO_DIGICAM_CONTROL 拍摄照片¶
可以通过发送 命令长 命令和参数 5 字段的设置与为 mav_cmd_doo_digicam_control 指挥。
指令字段 | 类型 | 说明 |
---|---|---|
目标系统 | uint8_t | 飞行控制器的系统 ID 或仅为 0 |
目标组件 | uint8_t | 飞行控制器的组件 ID 或仅为 0 |
指挥部 | uint16_t | mav_cmd_doo_digicam_control=203 |
证实 | uint8_t | 0 |
参数1 | 浮动 | 会话控制(未使用) |
参数2 | 浮动 | 绝对缩放(未使用) |
参数3 | 浮动 | 相对缩放(未使用) |
参数4 | 浮动 | 焦点(未使用) |
参数5 | 浮动 | 射击命令=1 |
参数6 | 浮动 | 命令标识(未使用) |
参数7 | 浮动 | 镜头 ID(未使用) |
示例
可以将下面的示例命令复制粘贴到 MAVProxy(又名 SITL)中来测试该命令。运行这些命令前,请输入
模块加载消息
MAVProxy/SITL 命令示例 |
说明 |
---|---|
|
拍照 |
MAV_CMD_DO_SET_CAM_TRIGG_DIST 按固定距离间隔拍照¶
通过发送一个 命令长 命令和参数字段的设置与 mav_cmd_doo_set_cam_trigg_dist 指挥。
指令字段 | 类型 | 说明 |
---|---|---|
目标系统 | uint8_t | 飞行控制器的系统 ID 或仅为 0 |
目标组件 | uint8_t | 飞行控制器的组件 ID 或仅为 0 |
指挥部 | uint16_t | MAV_CMD_DO_SET_CAM_TRIGG_DIST=206 |
证实 | uint8_t | 0 |
参数1 | 浮动 | 距离(米)或 0 停止触发 |
参数2 | 浮动 | 快门(未使用) |
参数3 | 浮动 | 立即触发摄像机一次。(0 = 立即不触发,1 = 立即触发) |
参数4 | 浮动 | 闲置 |
参数5 | 浮动 | 闲置 |
参数6 | 浮动 | 闲置 |
参数7 | 浮动 | 闲置 |
可以将下面的示例命令复制粘贴到 MAVProxy(又名 SITL)中来测试该命令。运行这些命令前,请输入
模块加载消息
MAVProxy/SITL 命令示例 |
说明 |
---|---|
|
每 10 米拍一张照片 |
|
每隔 10 米拍一张,然后再拍一张 |
|
停止定时拍照 |
MAV_CMD_IMAGE_START_CAPTURE 用于拍照¶
通过发送 命令长 命令、param1、param2 和 param3 字段的设置与为 mav_cmd_image_start_capture 指挥。
指令字段 | 类型 | 说明 |
---|---|---|
目标系统 | uint8_t | 飞行控制器的系统 ID 或仅为 0 |
目标组件 | uint8_t | 飞行控制器的组件 ID 或仅为 0 |
指挥部 | uint16_t | mav_cmd_image_start_capture=2000 |
证实 | uint8_t | 0 |
参数1 | 浮动 | 摄像机 ID(全部=0,1=1st,2=2nd) |
参数2 | 浮动 | 以秒为单位的拍照间隔(AP4.5.0 开始支持)。 |
参数3 | 浮动 | 图像总数(0=永远捕获) |
参数4 | 浮动 | 序列号(不支持) |
参数5 | 浮动 | 序列号(不支持) |
参数6 | 浮动 | 闲置 |
参数7 | 浮动 | 闲置 |
示例
可以将下面的示例命令复制粘贴到 MAVProxy(又名 SITL)中来测试该命令。运行这些命令前,请输入
模块加载消息
MAVProxy/SITL 命令示例 |
说明 |
---|---|
|
所有相机都会拍照 |
|
第一台相机拍照 |
|
第二台相机拍照 |
|
第一台相机每隔 2 秒钟拍摄 3 张照片 |
|
第一个摄像头以 5 秒钟为间隔拍摄无限张照片 |
|
所有相机停止拍照 |
MAV_CMD_IMAGE_STOP_CAPTURE 停止拍照¶
通过发送 命令长 命令和 param1 字段的设置与为 mav_cmd_image_stop_capture 指挥。
指令字段 | 类型 | 说明 |
---|---|---|
目标系统 | uint8_t | 飞行控制器的系统 ID 或仅为 0 |
目标组件 | uint8_t | 飞行控制器的组件 ID 或仅为 0 |
指挥部 | uint16_t | MAV_CMD_IMAGE_STOP_CAPTURE=2001 |
证实 | uint8_t | 0 |
参数1 | 浮动 | CameraId (all=0,1=1st,2=2nd) |
参数2 | 浮动 | 闲置 |
参数3 | 浮动 | 闲置 |
参数4 | 浮动 | 序列号(不支持) |
参数5 | 浮动 | 序列号(不支持) |
参数6 | 浮动 | 闲置 |
参数7 | 浮动 | 闲置 |
示例
可以将下面的示例命令复制粘贴到 MAVProxy(又名 SITL)中来测试该命令。运行这些命令前,请输入
模块加载消息
MAVProxy/SITL 命令示例 |
说明 |
---|---|
|
所有相机停止拍照 |
|
第一台相机停止拍照 |
|
第二台照相机停止拍照 |
MAV_CMD_SET_CAMERA_ZOOM 控制摄像机变焦¶
可以通过发送一个 命令长 命令和参数字段的设置与 mav_cmd_set_camera_zoom 指挥。
4.4.0 版(及更高版本)支持缩放类型=1(连续,又称速率控制)。缩放类型=2(范围,又称绝对)在 AP 4.5.0(及更高版本)中支持
指令字段 | 类型 | 说明 |
---|---|---|
目标系统 | uint8_t | 飞行控制器的系统 ID 或仅为 0 |
目标组件 | uint8_t | 飞行控制器的组件 ID 或仅为 0 |
指挥部 | uint16_t | MAV_CMD_SET_CAMERA_ZOOM=531 |
证实 | uint8_t | 0 |
参数1 | 浮动 | 缩放类型=1(连续=1,范围=2) |
参数2 | 浮动 | 缩放值(放大=1,缩小=-1,停止=0 或 0~100) |
参数3 | 浮动 | 闲置 |
参数4 | 浮动 | 闲置 |
参数5 | 浮动 | 闲置 |
参数6 | 浮动 | 闲置 |
参数7 | 浮动 | 闲置 |
可以将下面的示例命令复制粘贴到 MAVProxy(又名 SITL)中来测试该命令。运行这些命令前,请输入
模块加载消息
MAVProxy/SITL 命令示例 |
说明 |
---|---|
|
放大 |
|
放大 |
|
停止放大或缩小 |
|
缩小到 0%(全部缩小) |
|
放大到 100% (全部放大) |
MAV_CMD_SET_CAMERA_FOCUS 可对摄像机进行手动或自动对焦¶
可以通过发送一个 命令长 命令和参数字段的设置与 mav_cmd_set_camera_focus 指挥。
指令字段 | 类型 | 说明 |
---|---|---|
目标系统 | uint8_t | 飞行控制器的系统 ID 或仅为 0 |
目标组件 | uint8_t | 飞行控制器的组件 ID 或仅为 0 |
指挥部 | uint16_t | mav_cmd_set_camera_focus=532 |
证实 | uint8_t | 0 |
参数1 | 浮动 | 对焦类型=1 或 4(步进=0、连续=1、范围=2、米数=3、自动=4、自动单焦=5、自动连续=6) |
参数2 | 浮动 | 焦点值(焦点输入=-1,焦点输出=1,保持=0) |
参数3 | 浮动 | 闲置 |
参数4 | 浮动 | 闲置 |
参数5 | 浮动 | 闲置 |
参数6 | 浮动 | 闲置 |
参数7 | 浮动 | 闲置 |
可以将下面的示例命令复制粘贴到 MAVProxy(又名 SITL)中来测试该命令。运行这些命令前,请输入
模块加载消息
MAVProxy/SITL 命令示例 |
说明 |
---|---|
|
手动对焦 |
|
手动调焦 |
|
手动对焦保持 |
|
自动对焦 |
MAV_CMD_SET_CAMERA_SOURCE 用于设置所使用的镜头(又称图像传感器¶
可以通过发送一个 命令长 命令和参数字段的设置与 mav_cmd_set_camera_source 指挥。
指令字段 | 类型 | 说明 |
---|---|---|
目标系统 | uint8_t | 飞行控制器的系统 ID 或仅为 0 |
目标组件 | uint8_t | 飞行控制器的组件 ID 或仅为 0 |
指挥部 | uint16_t | mav_cmd_set_camera_source=534 |
证实 | uint8_t | 0 |
参数1 | 浮动 | 摄像机 ID(全部=0,1=1st,2=2nd) |
参数2 | 浮动 | 主源(0=默认,1=RGB,2=IR,3=NDVI,4=WideAngleRGB) |
参数3 | 浮动 | 辅助源(0=默认,1=RGB,2=IR,3=NDVI,4=WideAngleRGB) |
参数4 | 浮动 | 闲置 |
参数5 | 浮动 | 闲置 |
参数6 | 浮动 | 闲置 |
参数7 | 浮动 | 闲置 |
可以将下面的示例命令复制粘贴到 MAVProxy(又名 SITL)中来测试该命令。运行这些命令前,请输入
模块加载消息
MAVProxy/SITL 命令示例 |
说明 |
---|---|
|
所有摄像机均使用默认信号源(如 RGB) |
|
第一台摄像机使用默认信号源(如 RGB) |
|
第一台摄像机仅使用 RGB |
|
第一台摄像机仅使用红外/热像仪 |
|
第一台相机采用画中画 RGB+IR 技术 |
|
第一台相机采用画中画红外+RGB 技术 |
MAV_CMD_VIDEO_START_CAPTURE, MAV_CMD_VIDEO_STOP_CAPTURE 用于开始或停止录制视频¶
要开始或停止录制视频,请发送 命令长 命令和参数字段的设置与 mav_cmd_video_start_capture 或 mav_cmd_video_stop_capture 命令。
指令字段 | 类型 | 说明 |
---|---|---|
目标系统 | uint8_t | 飞行控制器的系统 ID 或仅为 0 |
目标组件 | uint8_t | 飞行控制器的组件 ID 或仅为 0 |
指挥部 | uint16_t | mav_cmd_video_start_capture=2500, mav_cmd_video_stop_capture=2501 |
证实 | uint8_t | 0 |
参数1 | 浮动 | 数据流 ID(全部=0,第一台摄像机=1,第二台摄像机=2) |
参数2 | 浮动 | 状态 频率(未使用) |
参数3 | 浮动 | 闲置 |
参数4 | 浮动 | 闲置 |
参数5 | 浮动 | 闲置 |
参数6 | 浮动 | 闲置 |
参数7 | 浮动 | 闲置 |
可以将下面的示例命令复制粘贴到 MAVProxy(又名 SITL)中来测试该命令。运行这些命令前,请输入
模块加载消息
MAVProxy/SITL 命令示例 |
说明 |
---|---|
|
开始录制所有摄像机的视频 |
|
开始在 1 号摄像机上录制视频 |
|
停止录制所有摄像机的视频 |
|
停止录制第一台摄像机的视频 |
MAV_CMD_CAMERA_TRACK_POINT 用于开始跟踪实时视频流中的一个点¶
要开始跟踪实时视频流中的某个点,请发送 命令长 命令和参数字段的设置与 mav_cmd_camera_track_point 命令。命令 mav_cmd_camera_stop_tracking 可用于停止跟踪。
指令字段 | 类型 | 说明 |
---|---|---|
目标系统 | uint8_t | 飞行控制器的系统 ID 或仅为 0 |
目标组件 | uint8_t | 飞行控制器的组件 ID 或仅为 0 |
指挥部 | uint16_t | MAV_CMD_CAMERA_TRACK_POINT=2004 |
证实 | uint8_t | 0 |
参数1 | 浮动 | 点 X(0 至 1,0 为左,1 为右) |
参数2 | 浮动 | Y 点(0 至 1,0 表示顶部,1 表示底部) |
参数3 | 浮动 | 半径(未使用) |
参数4 | 浮动 | 闲置 |
参数5 | 浮动 | 闲置 |
参数6 | 浮动 | 闲置 |
参数7 | 浮动 | 闲置 |
可以将下面的示例命令复制粘贴到 MAVProxy(又名 SITL)中来测试该命令。运行这些命令前,请输入
模块加载消息
MAVProxy/SITL 命令示例 |
说明 |
---|---|
|
开始跟踪视频流中间的一个点 |
|
停止跟踪 |
MAV_CMD_CAMERA_TRACK_RECTANGLE 用于开始跟踪实时视频流上的矩形区域¶
要开始跟踪实时视频流中的矩形,请发送 命令长 命令和参数字段的设置与 mav_cmd_camera_track_rectangle 命令。命令 mav_cmd_camera_stop_tracking 可用于停止跟踪。
指令字段 | 类型 | 说明 |
---|---|---|
目标系统 | uint8_t | 飞行控制器的系统 ID 或仅为 0 |
目标组件 | uint8_t | 飞行控制器的组件 ID 或仅为 0 |
指挥部 | uint16_t | mav_cmd_camera_track_rectangle=2005 |
证实 | uint8_t | 0 |
参数1 | 浮动 | 左上角 X(0 至 1,0 为左,1 为右) |
参数2 | 浮动 | Y 点(0 至 1,0 表示顶部,1 表示底部) |
参数3 | 浮动 | 右下角 X(0 至 1,0 表示左,1 表示右) |
参数4 | 浮动 | 右下 Y(0 至 1,0 表示顶部,1 表示底部) |
参数5 | 浮动 | 闲置 |
参数6 | 浮动 | 闲置 |
参数7 | 浮动 | 闲置 |
可以将下面的示例命令复制粘贴到 MAVProxy(又名 SITL)中来测试该命令。运行这些命令前,请输入
模块加载消息
MAVProxy/SITL 命令示例 |
说明 |
---|---|
|
开始跟踪视频流中间的一个矩形 |
|
从中间上方的矩形开始追踪 |
|
停止跟踪 |
CAMERA_INFORMATION、CAMERA_SETTINGS、CAMERA_FOV_STATUS 包含对全球监视系统有用的信息¶
这三个信息包括对地面站有用的信息。
摄像机信息 包括供应商和型号名称、固件版本、传感器尺寸、传感器分辨率和相机功能。
相机设置 更简单,只包括模式、变焦级别和对焦级别。
相机状态 包括摄像机(或更准确地说是载具)的位置(纬度、经度、高度)、摄像机云台指向的位置以及摄像机的姿态(用四元数表示)。
地面站可以使用 mav_cmd_request_message 命令或使用 mav_cmd_set_message_interval 上所述 请求(飞行)控制器提供数据 page.
可以将下面的示例命令复制粘贴到 MAVProxy(又名 SITL)中来测试该命令。运行这些命令前,请输入
模块加载消息
MAVProxy/SITL 命令示例 |
说明 |
---|---|
|
请求发送一次 CAMERA_INFORMATION |
|
请求发送一次 CAMERA_SETTINGS |
|
要求每秒发送一次 CAMERA_SETTINGS 信息 |
|
停止发送 CAMERA_SETTINGS 请求 |
|
请求发送一次 CAMERA_FOV_STATUS |
|
要求每秒发送一次 CAMERA_FOV_STATUS |
|
请求停止发送 CAMERA_FOV_STATUS |