Skip to content

Waypoint

Zhexuan Liu edited this page Jun 21, 2018 · 1 revision

本文档描述此 Feature 的 JSON 数据格式,关于其调用方法,可到此处查看

Waypoint Feature 可以让飞机按照指定的 GPS 点序列来自动飞行。通过 JSON 指定 Waypoint Feature 的一系列属性,以及其 GPS 序列。所有坐标系数据均采用 WGS84 坐标,也就是我们通常所指的标准 GPS 坐标。从 Missoin Component 中的 Map 获取到的 GPS 坐标即为 WGS84 坐标。

JSON 格式

{
	"type": "waypointFeature",
	"data": {
		// Automatic speed of aircraft, with range [0, 15] m/s
		"speed": 10,
		
		// Optional, refers to section below
		"headingMode": 0,
		
		// Optional, refer to section below
		"resumeAction": actionJson,
		
		// Optional, if setted, aircraft will always be heading to 
		// the point while executing feature
		"pointOfInterest": {
			"lat": xxx,
			"lng": xxx
		},
		
		// Waypoint count must in range [2, 99]
		// Section below would mention about waypoint
		// more detailly
		"waypoints": [
			{
				"lat": 23.11235793568096,
				"lng": 113.3242636120849,
				"altitude": 120,
				
				"heading": 0, // Optional
				"turnMode": 0, // Optional
				
				"actions": [ // Optional
					{
						"type": "shootPhoto",
						"param": xxx
					}
				],
				
				"finishAction": actionJson, // Optional
			},
			{
				"lat": 23.11249301324579,
				"lng": 113.3242636120849,
				"altitude": 120
			},
			...
		],
	}
}

headingMode

指定飞机执行 WaypointFeature 时的机头朝向模式,默认为 0,也就是 auto 模式。所有可用模式如下:

Type Mode Description
0 auto Aircraft's heading will always be in the direction of flight.
1 usingInitialDirection Aircraft's heading will be set to the heading when reaching the first waypoint. Before reaching the  first waypoint, the aircraft's heading can be controlled by the remote controller. When the aircraft  reaches the first waypoint, its heading will be fixed.
2 controledByRemoteController Aircraft's heading will be controlled by the remote controller.
3 usingWaypointHeading Aircraft's heading will be gradually set to the next waypoint heading while travelling between two adjacent waypoints.
4 towardPointOfInterest Aircraft's heading will always toward point of interest.

Waypoint

location

latlng 分别指定 Waypoint 的经纬度;而 altitude 则指定了 Waypoint 相对起飞点的高度,单位为 m

heading

指定飞机到达此 Waypoint 时的机头朝向。如果两个 Waypoint 之间具有不同的 heading,那么飞机在这两个点之间移动时机头会逐渐改变。如果想要 heading 能起作用,WaypointFeature 的 headingMode 需要设置为 3.

heading 是一个整型变量,它的取值范围是 [-180, 180],其中 0 表示正北方。

turnMode

指定飞机在两个 headding 不同的 Waypoint 之间改变朝向时,其旋转的方向。

0 为顺时针,1 为逆时针,默认为 0

finishAction

此字段对应的 data 为一个 Action 的 JSON,如 shootPhotoAction, recordVideoAction 等,它将会在飞机到达相应的位置时被调用。

注意,在 Waypoint 被 Pause/Stop 或者执行完成时,对应的 Action 也会被停止。

resumeAction

finishAction 类似,此字段对应的 data 为一个 Action 的 JSON,目前只能为 shootPhotoAction 或者 recordVideoAction,它将会在 Waypoint 进行 Resume 的时候被调用。

在 Waypoint 被 Pause/Stop 或者执行完成时,对应的 Action 也会被停止。

Waypoint Action

Waypoint Action 为 DJISDK 对于 Waypoint Mission 原生支持的一些 Action,与 Mesh 定义的 Action 不同,注意区分。

Waypoint Action 指定了一系列特定的操作,在飞机到达指定的位置时将被顺序执行。当飞机执行完成所有的这些 Waypoint Action 之后,才会继续飞往下一个 Waypoint。

每个 action 的最大执行时间是 6s,超过 6s 此 action 将被忽略,转而执行下一个 action。action 有以下几种类型:

1. shootPhoto

拍一张照片

{
  "type": "shootPhoto"
}

2. startRecord

开始录像

{
  "type": "startRecord"
}

3. stopRecord

停止录像

{
  "type": "stopRecord"
}

4. rotateGimbalPitch

旋转云台的 pitch 轴角度,范围是 [-90, 0]

{
  "type": "rotateGimbalPitch",
  "param": -90
}

5. rotateAircraft

旋转飞机的朝向,参数范围是 [-180, 180]

{
	"type": "rotateAircraft",
	"param": 90
}
Clone this wiki locally