控制摄像机

本页介绍如何使用 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 命令示例

说明

信息 命令长 0 0 203 0 0 0 0 0 1 0 0

拍照

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 命令示例

说明

信息 命令长 0 0 206 0 10 0 0 0 0 0 0

每 10 米拍一张照片

信息 命令长 0 0 206 0 10 0 1 0 0 0 0

每隔 10 米拍一张,然后再拍一张

信息 命令长 0 0 206 0 0 0 0 0 0 0 0

停止定时拍照

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 命令示例

说明

信息 命令长 0 0 2000 0 0 0 1 0 0 0 0

所有相机都会拍照

信息 命令长 0 0 2000 0 1 0 1 0 0 0 0

第一台相机拍照

信息 命令长 0 0 2000 0 2 0 1 0 0 0 0

第二台相机拍照

信息 命令长 0 0 2000 0 1 2 3 0 0 0 0

第一台相机每隔 2 秒钟拍摄 3 张照片

信息 命令长 0 0 2000 0 1 5 0 0 0 0 0

第一个摄像头以 5 秒钟为间隔拍摄无限张照片

信息 命令长 0 0 2001 0 0 0 0 0 0 0 0

所有相机停止拍照

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 命令示例

说明

信息 命令长 0 0 2001 0 0 0 0 0 0 0 0

所有相机停止拍照

信息 命令长 0 0 2001 0 1 0 0 0 0 0 0

第一台相机停止拍照

信息 命令长 0 0 2001 0 2 0 0 0 0 0 0

第二台照相机停止拍照

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 0 531 0 1 1 0 0 0 0 0

放大

信息 命令长 0 0 531 0 1 -1 0 0 0 0 0

放大

信息 命令长 0 0 531 0 1 0 0 0 0 0 0

停止放大或缩小

信息 命令长 0 0 531 0 2 0 0 0 0 0 0

缩小到 0%(全部缩小)

信息 命令长 0 0 531 0 2 100 0 0 0 0 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 命令示例

说明

信息 命令长 0 0 532 0 1 -1 0 0 0 0 0

手动对焦

信息 命令长 0 0 532 0 1 1 0 0 0 0 0

手动调焦

信息 命令长 0 0 532 0 1 0 0 0 0 0 0

手动对焦保持

信息 命令长 0 0 532 0 4 0 0 0 0 0 0

自动对焦

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 命令示例

说明

信息 命令长 0 0 534 0 0 0 0 0 0 0 0

所有摄像机均使用默认信号源(如 RGB)

信息 命令长 0 0 534 0 1 0 0 0 0 0 0

第一台摄像机使用默认信号源(如 RGB)

信息 命令长 0 0 534 0 1 1 0 0 0 0 0

第一台摄像机仅使用 RGB

信息 命令长 0 0 534 0 1 2 0 0 0 0 0

第一台摄像机仅使用红外/热像仪

信息 命令长 0 0 534 0 1 1 2 0 0 0 0

第一台相机采用画中画 RGB+IR 技术

信息 命令长 0 0 534 0 1 2 1 0 0 0 0

第一台相机采用画中画红外+RGB 技术

MAV_CMD_VIDEO_START_CAPTURE, MAV_CMD_VIDEO_STOP_CAPTURE 用于开始或停止录制视频

要开始或停止录制视频,请发送 命令长 命令和参数字段的设置与 mav_cmd_video_start_capturemav_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 命令示例

说明

信息 命令长 0 0 2500 0 0 0 0 0 0 0 0

开始录制所有摄像机的视频

信息 命令长 0 0 2500 0 1 0 0 0 0 0 0

开始在 1 号摄像机上录制视频

信息 命令长 0 0 2501 0 0 1 0 0 0 0 0

停止录制所有摄像机的视频

信息 命令长 0 0 2501 0 1 0 0 0 0 0 0

停止录制第一台摄像机的视频

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 命令示例

说明

信息 命令长 0 0 2004 0 0.5 0.5 0 0 0 0 0

开始跟踪视频流中间的一个点

信息 命令长 0 0 2010 0 0 0 0 0 0 0 0

停止跟踪

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 命令示例

说明

信息 命令长 0 0 2005 0 0.4 0.4 0.6 0.6 0 0 0

开始跟踪视频流中间的一个矩形

信息 命令长 0 0 2005 0 0.4 0.0 0.6 0.1 0 0 0

从中间上方的矩形开始追踪

信息 命令长 0 0 2010 0 0 0 0 0 0 0 0

停止跟踪

CAMERA_INFORMATION、CAMERA_SETTINGS、CAMERA_FOV_STATUS 包含对全球监视系统有用的信息

这三个信息包括对地面站有用的信息。

  • 摄像机信息 包括供应商和型号名称、固件版本、传感器尺寸、传感器分辨率和相机功能。

  • 相机设置 更简单,只包括模式、变焦级别和对焦级别。

  • 相机状态 包括摄像机(或更准确地说是载具)的位置(纬度、经度、高度)、摄像机云台指向的位置以及摄像机的姿态(用四元数表示)。

地面站可以使用 mav_cmd_request_message 命令或使用 mav_cmd_set_message_interval 上所述 请求(飞行)控制器提供数据 page.

可以将下面的示例命令复制粘贴到 MAVProxy(又名 SITL)中来测试该命令。运行这些命令前,请输入

  • 模块加载消息

MAVProxy/SITL 命令示例

说明

信息 命令长 0 0 512 0 259 0 0 0 0 0 0

请求发送一次 CAMERA_INFORMATION

信息 命令长 0 0 512 0 260 0 0 0 0 0 0

请求发送一次 CAMERA_SETTINGS

信息 命令长 0 0 511 0 260 1000000 0 0 0 0 0

要求每秒发送一次 CAMERA_SETTINGS 信息

信息 命令长 0 0 511 0 260 -1 0 0 0 0 0

停止发送 CAMERA_SETTINGS 请求

信息 命令长 0 0 512 0 271 0 0 0 0 0 0

请求发送一次 CAMERA_FOV_STATUS

信息 命令长 0 0 511 0 271 1000000 0 0 0 0 0

要求每秒发送一次 CAMERA_FOV_STATUS

信息 命令长 0 0 511 0 271 -1 0 0 0 0 0

请求停止发送 CAMERA_FOV_STATUS