drakongen 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/.vscode/launch.json +18 -0
  2. package/LICENSE +24 -0
  3. package/README.md +80 -0
  4. package/browser/drakongen.js +1303 -0
  5. package/browsertest.html +84 -0
  6. package/buildbrowser +4 -0
  7. package/buildexamples.js +61 -0
  8. package/examples/00.Empty.drakon +1 -0
  9. package/examples/00.Empty.txt +5 -0
  10. package/examples/01. /320/221/320/265/320/273/321/213/320/270/314/206.drakon" +13 -0
  11. package/examples/01. /320/221/320/265/320/273/321/213/320/271.json" +16 -0
  12. package/examples/01. /320/221/320/265/320/273/321/213/320/271.txt" +4 -0
  13. package/examples/02. /320/247/320/265/314/210/321/200/320/275/321/213/320/270/314/206.drakon" +28 -0
  14. package/examples/02. /320/247/321/221/321/200/320/275/321/213/320/271.json" +31 -0
  15. package/examples/02. /320/247/321/221/321/200/320/275/321/213/320/271.txt" +10 -0
  16. package/examples/03. /320/241/320/265/321/200/321/213/320/270/314/206.drakon" +20 -0
  17. package/examples/03. /320/241/320/265/321/200/321/213/320/271.json" +23 -0
  18. package/examples/03. /320/241/320/265/321/200/321/213/320/271.txt" +6 -0
  19. package/examples/04. /320/221/321/203/321/200/321/213/320/270/314/206.drakon" +25 -0
  20. package/examples/04. /320/221/321/203/321/200/321/213/320/271.json" +29 -0
  21. package/examples/04. /320/221/321/203/321/200/321/213/320/271.txt" +7 -0
  22. package/examples/05. /320/226/320/265/314/210/320/273/321/202/321/213/320/270/314/206.drakon" +25 -0
  23. package/examples/05. /320/226/321/221/320/273/321/202/321/213/320/271.json" +29 -0
  24. package/examples/05. /320/226/321/221/320/273/321/202/321/213/320/271.txt" +7 -0
  25. package/examples/06. /320/221/320/260/320/263/321/200/320/276/320/262/321/213/320/270/314/206.drakon" +30 -0
  26. package/examples/06. /320/221/320/260/320/263/321/200/320/276/320/262/321/213/320/271.json" +35 -0
  27. package/examples/06. /320/221/320/260/320/263/321/200/320/276/320/262/321/213/320/271.txt" +10 -0
  28. package/examples/07. /320/244/320/270/320/276/320/273/320/265/321/202/320/276/320/262/321/213/320/270/314/206.drakon" +42 -0
  29. package/examples/07. /320/244/320/270/320/276/320/273/320/265/321/202/320/276/320/262/321/213/320/271.json" +49 -0
  30. package/examples/07. /320/244/320/270/320/276/320/273/320/265/321/202/320/276/320/262/321/213/320/271.txt" +14 -0
  31. package/examples/08. /320/221/320/270/321/200/321/216/320/267/320/276/320/262/321/213/320/270/314/206.drakon" +27 -0
  32. package/examples/08. /320/221/320/270/321/200/321/216/320/267/320/276/320/262/321/213/320/271.json" +27 -0
  33. package/examples/08. /320/221/320/270/321/200/321/216/320/267/320/276/320/262/321/213/320/271.txt" +6 -0
  34. package/examples/09. /320/236/321/200/320/260/320/275/320/266/320/265/320/262/321/213/320/270/314/206.drakon" +37 -0
  35. package/examples/09. /320/236/321/200/320/260/320/275/320/266/320/265/320/262/321/213/320/271.json" +39 -0
  36. package/examples/09. /320/236/321/200/320/260/320/275/320/266/320/265/320/262/321/213/320/271.txt" +10 -0
  37. package/examples/10. /320/240/320/276/320/267/320/276/320/262/321/213/320/270/314/206.drakon" +42 -0
  38. package/examples/10. /320/240/320/276/320/267/320/276/320/262/321/213/320/271.json" +54 -0
  39. package/examples/10. /320/240/320/276/320/267/320/276/320/262/321/213/320/271.txt" +16 -0
  40. package/examples/11. /320/227/320/260/321/211/320/270/321/202/320/275/321/213/320/270/314/206.drakon" +37 -0
  41. package/examples/11. /320/227/320/260/321/211/320/270/321/202/320/275/321/213/320/271.json" +39 -0
  42. package/examples/11. /320/227/320/260/321/211/320/270/321/202/320/275/321/213/320/271.txt" +10 -0
  43. package/examples/12. /320/221/320/276/320/273/320/276/321/202/320/275/321/213/320/270/314/206.drakon" +44 -0
  44. package/examples/12. /320/221/320/276/320/273/320/276/321/202/320/275/321/213/320/271.json" +43 -0
  45. package/examples/12. /320/221/320/276/320/273/320/276/321/202/320/275/321/213/320/271.txt" +10 -0
  46. package/examples/13. /320/241/320/260/320/273/320/260/321/202/320/276/320/262/321/213/320/270/314/206.drakon" +54 -0
  47. package/examples/13. /320/241/320/260/320/273/320/260/321/202/320/276/320/262/321/213/320/271.json" +63 -0
  48. package/examples/13. /320/241/320/260/320/273/320/260/321/202/320/276/320/262/321/213/320/271.txt" +18 -0
  49. package/examples/14. /320/227/320/276/320/273/320/276/321/202/320/276/320/270/314/206.drakon" +64 -0
  50. package/examples/14. /320/227/320/276/320/273/320/276/321/202/320/276/320/271.json" +73 -0
  51. package/examples/14. /320/227/320/276/320/273/320/276/321/202/320/276/320/271.txt" +22 -0
  52. package/examples/15. /320/241/320/270/320/275/320/270/320/270/314/206.drakon" +54 -0
  53. package/examples/15. /320/241/320/270/320/275/320/270/320/271.json" +87 -0
  54. package/examples/15. /320/241/320/270/320/275/320/270/320/271.txt" +26 -0
  55. package/examples/16. /320/223/320/276/320/273/321/203/320/261/320/276/320/270/314/206.drakon" +37 -0
  56. package/examples/16. /320/223/320/276/320/273/321/203/320/261/320/276/320/271.json" +48 -0
  57. package/examples/16. /320/223/320/276/320/273/321/203/320/261/320/276/320/271.txt" +13 -0
  58. package/examples/17. /320/241/320/260/320/273/320/260/321/202/320/276/320/262/321/213/320/270/314/206.drakon" +39 -0
  59. package/examples/17. /320/241/320/260/320/273/320/260/321/202/320/276/320/262/321/213/320/271.json" +41 -0
  60. package/examples/17. /320/241/320/260/320/273/320/260/321/202/320/276/320/262/321/213/320/271.txt" +10 -0
  61. package/examples/18. /320/241/321/202/320/260/320/273/321/214/320/275/320/276/320/270/314/206.drakon" +49 -0
  62. package/examples/18. /320/241/321/202/320/260/320/273/321/214/320/275/320/276/320/271.json" +67 -0
  63. package/examples/18. /320/241/321/202/320/260/320/273/321/214/320/275/320/276/320/271.txt" +19 -0
  64. package/examples/19. Lilla.drakon +39 -0
  65. package/examples/19. Lilla.json +45 -0
  66. package/examples/19. Lilla.txt +11 -0
  67. package/examples/Adaptive design.drakon +116 -0
  68. package/examples/Adaptive design.json +153 -0
  69. package/examples/Adaptive design.txt +47 -0
  70. package/examples/And test.drakon +46 -0
  71. package/examples/And test.json +46 -0
  72. package/examples/And test.txt +10 -0
  73. package/examples/Arrow - double exit.drakon +41 -0
  74. package/examples/Arrow - double exit.json +62 -0
  75. package/examples/Arrow - double exit.txt +14 -0
  76. package/examples/Complex arrow.drakon +93 -0
  77. package/examples/Complex arrow.json +162 -0
  78. package/examples/Complex arrow.txt +43 -0
  79. package/examples/DoubleArrow.drakon +53 -0
  80. package/examples/DoubleArrow.json +86 -0
  81. package/examples/DoubleArrow.txt +18 -0
  82. package/examples/Find pointing nodes.drakon +104 -0
  83. package/examples/Find pointing nodes.json +137 -0
  84. package/examples/Find pointing nodes.txt +29 -0
  85. package/examples/How to tune PID on a quadcopter.drakon +488 -0
  86. package/examples/How to tune PID on a quadcopter.json +734 -0
  87. package/examples/How to tune PID on a quadcopter.txt +169 -0
  88. package/examples/Or test.drakon +47 -0
  89. package/examples/Or test.json +46 -0
  90. package/examples/Or test.txt +10 -0
  91. package/examples/Silhouette test 1.drakon +47 -0
  92. package/examples/Silhouette test 1.json +82 -0
  93. package/examples/Silhouette test 1.txt +24 -0
  94. package/examples/Work out action-check.drakon +30 -0
  95. package/examples/Work out action-check.json +45 -0
  96. package/examples/Work out action-check.txt +9 -0
  97. package/examples/Workout foreach.drakon +63 -0
  98. package/examples/Workout foreach.json +62 -0
  99. package/examples/Workout foreach.txt +14 -0
  100. package/examples/ar01.drakon +25 -0
  101. package/examples/ar01.json +40 -0
  102. package/examples/ar01.txt +7 -0
  103. package/examples/ar02.drakon +30 -0
  104. package/examples/ar02.json +45 -0
  105. package/examples/ar02.txt +10 -0
  106. package/examples/ar03.drakon +32 -0
  107. package/examples/ar03.json +44 -0
  108. package/examples/ar03.txt +7 -0
  109. package/examples/ar04.drakon +37 -0
  110. package/examples/ar04.json +49 -0
  111. package/examples/ar04.txt +10 -0
  112. package/examples/ar05.drakon +37 -0
  113. package/examples/ar05.json +59 -0
  114. package/examples/ar05.txt +11 -0
  115. package/examples/ar06.drakon +40 -0
  116. package/examples/ar06.json +70 -0
  117. package/examples/ar06.txt +13 -0
  118. package/examples/ar07.drakon +40 -0
  119. package/examples/ar07.json +70 -0
  120. package/examples/ar07.txt +13 -0
  121. package/examples/ar08.drakon +47 -0
  122. package/examples/ar08.json +81 -0
  123. package/examples/ar08.txt +16 -0
  124. package/examples/ar09.drakon +52 -0
  125. package/examples/ar09.json +87 -0
  126. package/examples/ar09.txt +17 -0
  127. package/examples/ar10.drakon +52 -0
  128. package/examples/ar10.json +88 -0
  129. package/examples/ar10.txt +18 -0
  130. package/examples/ar11.drakon +47 -0
  131. package/examples/ar11.json +82 -0
  132. package/examples/ar11.txt +17 -0
  133. package/examples/ar12.drakon +37 -0
  134. package/examples/ar12.json +49 -0
  135. package/examples/ar12.txt +10 -0
  136. package/examples/getToken.drakon +76 -0
  137. package/examples/getToken.json +88 -0
  138. package/examples/getToken.txt +41 -0
  139. package/examples/tmp.drakon +49 -0
  140. package/examples/tmp.json +82 -0
  141. package/examples/tmp.txt +37 -0
  142. package/package.json +21 -0
  143. package/prompts/drakonToPrompt.txt +139 -0
  144. package/prompts/index.txt +17 -0
  145. package/prompts/printPseudo.txt +116 -0
  146. package/src/browserTools.js +39 -0
  147. package/src/drakonToPromptStruct.js +44 -0
  148. package/src/drakonToStruct.js +416 -0
  149. package/src/drakongen.js +16 -0
  150. package/src/index.js +17 -0
  151. package/src/main.js +157 -0
  152. package/src/nodeTools.js +38 -0
  153. package/src/printPseudo.js +167 -0
  154. package/src/structFlow.js +382 -0
  155. package/src/technicalTree.js +84 -0
  156. package/src/tools.js +36 -0
  157. package/src/translate.js +108 -0
@@ -0,0 +1,488 @@
1
+ {
2
+ "items": {
3
+ "8": {
4
+ "type": "branch",
5
+ "branchId": 1,
6
+ "one": "824",
7
+ "content": "Prepare"
8
+ },
9
+ "10": {
10
+ "type": "branch",
11
+ "branchId": 11,
12
+ "one": "787",
13
+ "content": "I on Yaw"
14
+ },
15
+ "16": {
16
+ "type": "end"
17
+ },
18
+ "32": {
19
+ "type": "action",
20
+ "one": "35",
21
+ "content": "Backup your current PID values"
22
+ },
23
+ "35": {
24
+ "type": "action",
25
+ "one": "38",
26
+ "content": "Switch to Rate Mode (aka Acro Mode)"
27
+ },
28
+ "38": {
29
+ "type": "action",
30
+ "one": "239",
31
+ "content": "Make sure your quadcopter’s CG (centre of gravity) is right in the middle"
32
+ },
33
+ "41": {
34
+ "type": "comment",
35
+ "one": "32",
36
+ "content": "Remember, PID tuning is subjective!"
37
+ },
38
+ "70": {
39
+ "type": "branch",
40
+ "branchId": 3,
41
+ "one": "87",
42
+ "content": "P on Roll"
43
+ },
44
+ "80": {
45
+ "type": "action",
46
+ "one": "90",
47
+ "content": "Cruise around"
48
+ },
49
+ "87": {
50
+ "type": "comment",
51
+ "one": "213",
52
+ "content": "With good P, the control should feel precise"
53
+ },
54
+ "90": {
55
+ "type": "action",
56
+ "one": "93",
57
+ "content": "Do some sharp turns"
58
+ },
59
+ "93": {
60
+ "type": "question",
61
+ "flag1": 0,
62
+ "one": "131",
63
+ "two": "153",
64
+ "content": "Does the quad dip to one side (like a wobble)?"
65
+ },
66
+ "131": {
67
+ "type": "question",
68
+ "flag1": 0,
69
+ "one": "168",
70
+ "two": "153",
71
+ "content": "Do slow oscillations occur?"
72
+ },
73
+ "150": {
74
+ "type": "comment",
75
+ "one": "221",
76
+ "content": "When P is right, you should get minimum oscillations when doing sharp turns."
77
+ },
78
+ "153": {
79
+ "type": "action",
80
+ "one": "213",
81
+ "content": "Increase P on Roll"
82
+ },
83
+ "168": {
84
+ "type": "question",
85
+ "flag1": 0,
86
+ "one": "150",
87
+ "two": "197",
88
+ "content": "Do fast oscilations occur?"
89
+ },
90
+ "197": {
91
+ "type": "action",
92
+ "one": "213",
93
+ "content": "Decrease P on Roll"
94
+ },
95
+ "213": {
96
+ "type": "arrow-loop",
97
+ "one": "80",
98
+ "content": ""
99
+ },
100
+ "221": {
101
+ "type": "branch",
102
+ "branchId": 4,
103
+ "one": "303",
104
+ "content": "P on Pitch"
105
+ },
106
+ "239": {
107
+ "type": "branch",
108
+ "branchId": 2,
109
+ "one": "251",
110
+ "content": "Set initial values"
111
+ },
112
+ "251": {
113
+ "type": "insertion",
114
+ "one": "254",
115
+ "content": "Set RC rates, super rates and expo"
116
+ },
117
+ "254": {
118
+ "type": "action",
119
+ "one": "257",
120
+ "content": "Set default PID values"
121
+ },
122
+ "257": {
123
+ "type": "action",
124
+ "one": "70",
125
+ "content": "Lower all the values by at least half"
126
+ },
127
+ "260": {
128
+ "type": "action",
129
+ "one": "263",
130
+ "content": "Do a split-S (where you move both the throttle and pitch sticks)"
131
+ },
132
+ "263": {
133
+ "type": "action",
134
+ "one": "266",
135
+ "content": "Increase throttle to recover, pay attention to the pitch movement"
136
+ },
137
+ "266": {
138
+ "type": "question",
139
+ "flag1": 0,
140
+ "one": "276",
141
+ "two": "286",
142
+ "content": "Does the quad pitch up more than it should?"
143
+ },
144
+ "276": {
145
+ "type": "question",
146
+ "flag1": 0,
147
+ "one": "323",
148
+ "two": "289",
149
+ "content": "Do fast oscilations occur?"
150
+ },
151
+ "286": {
152
+ "type": "action",
153
+ "one": "303",
154
+ "content": "Increase P on Pitch"
155
+ },
156
+ "289": {
157
+ "type": "action",
158
+ "one": "303",
159
+ "content": "Decrease P on Pitch"
160
+ },
161
+ "303": {
162
+ "type": "arrow-loop",
163
+ "one": "260",
164
+ "content": ""
165
+ },
166
+ "320": {
167
+ "type": "comment",
168
+ "one": "342",
169
+ "content": "The quad feels very responsive and nimble"
170
+ },
171
+ "323": {
172
+ "type": "question",
173
+ "flag1": 0,
174
+ "one": "320",
175
+ "two": "289",
176
+ "content": "Are the motors making a twitching sound?"
177
+ },
178
+ "342": {
179
+ "type": "branch",
180
+ "branchId": 5,
181
+ "one": "374",
182
+ "content": "TPA"
183
+ },
184
+ "352": {
185
+ "type": "question",
186
+ "flag1": 0,
187
+ "one": "382",
188
+ "two": "365",
189
+ "content": "Does the quad get oscillations with high throttle?"
190
+ },
191
+ "362": {
192
+ "type": "action",
193
+ "one": "352",
194
+ "content": "Do a punch out"
195
+ },
196
+ "365": {
197
+ "type": "action",
198
+ "one": "368",
199
+ "content": "Increase TPA"
200
+ },
201
+ "368": {
202
+ "type": "comment",
203
+ "one": "374",
204
+ "content": "Do not increase TPA higher than 0.4"
205
+ },
206
+ "374": {
207
+ "type": "arrow-loop",
208
+ "one": "362",
209
+ "content": ""
210
+ },
211
+ "382": {
212
+ "type": "branch",
213
+ "branchId": 6,
214
+ "one": "451",
215
+ "content": "D on Roll and Pitch"
216
+ },
217
+ "392": {
218
+ "type": "action",
219
+ "one": "395",
220
+ "content": "Do aggressive maneuvers like flips and rolls"
221
+ },
222
+ "395": {
223
+ "type": "question",
224
+ "flag1": 0,
225
+ "one": "408",
226
+ "two": "405",
227
+ "content": "Does the quad overshoot at the end of the move then bounce back?"
228
+ },
229
+ "405": {
230
+ "type": "action",
231
+ "one": "451",
232
+ "content": "Increase D on the affected axis"
233
+ },
234
+ "408": {
235
+ "type": "question",
236
+ "flag1": 0,
237
+ "one": "427",
238
+ "two": "405",
239
+ "content": "Does prop wash happen? (oscillation when you descent)"
240
+ },
241
+ "427": {
242
+ "type": "question",
243
+ "flag1": 0,
244
+ "one": "465",
245
+ "two": "437",
246
+ "content": "Do fast oscillation happen at the end of a roll or flip?"
247
+ },
248
+ "437": {
249
+ "type": "action",
250
+ "one": "451",
251
+ "content": "Decrease D on the affected axis"
252
+ },
253
+ "451": {
254
+ "type": "arrow-loop",
255
+ "one": "392",
256
+ "content": ""
257
+ },
258
+ "465": {
259
+ "type": "comment",
260
+ "one": "468",
261
+ "content": "Note that to eliminate bounces at the end of a flip or roll, you can also use Setpoint Transition"
262
+ },
263
+ "468": {
264
+ "type": "branch",
265
+ "branchId": 7,
266
+ "one": "536",
267
+ "content": "I on Roll"
268
+ },
269
+ "478": {
270
+ "type": "action",
271
+ "one": "481",
272
+ "content": "Bank your quad to the left and right"
273
+ },
274
+ "481": {
275
+ "type": "action",
276
+ "one": "484",
277
+ "content": "Release stick"
278
+ },
279
+ "484": {
280
+ "type": "question",
281
+ "flag1": 1,
282
+ "one": "501",
283
+ "two": "553",
284
+ "content": "Is the quad holding the angle well?"
285
+ },
286
+ "501": {
287
+ "type": "question",
288
+ "flag1": 0,
289
+ "one": "559",
290
+ "two": "550",
291
+ "content": "Does the quad have stiff, robotic feeling?"
292
+ },
293
+ "536": {
294
+ "type": "arrow-loop",
295
+ "one": "478",
296
+ "content": ""
297
+ },
298
+ "550": {
299
+ "type": "action",
300
+ "one": "536",
301
+ "content": "Decrease I on Roll"
302
+ },
303
+ "553": {
304
+ "type": "action",
305
+ "one": "536",
306
+ "content": "Increase I on Roll"
307
+ },
308
+ "556": {
309
+ "type": "comment",
310
+ "one": "578",
311
+ "content": "You might want to increase I a bit more on a windy day"
312
+ },
313
+ "559": {
314
+ "type": "question",
315
+ "flag1": 0,
316
+ "one": "556",
317
+ "two": "550",
318
+ "content": "Does the quad have oscilations?"
319
+ },
320
+ "578": {
321
+ "type": "branch",
322
+ "branchId": 8,
323
+ "one": "594",
324
+ "content": "I on Pitch"
325
+ },
326
+ "588": {
327
+ "type": "action",
328
+ "one": "590",
329
+ "content": "Fly forward, do not increase throttle"
330
+ },
331
+ "590": {
332
+ "type": "question",
333
+ "flag1": 1,
334
+ "one": "810",
335
+ "two": "600",
336
+ "content": "Does the nose keep the same angle?"
337
+ },
338
+ "594": {
339
+ "type": "arrow-loop",
340
+ "one": "588",
341
+ "content": ""
342
+ },
343
+ "600": {
344
+ "type": "action",
345
+ "one": "594",
346
+ "content": "Increase I on Pitch"
347
+ },
348
+ "666": {
349
+ "type": "branch",
350
+ "branchId": 10,
351
+ "one": "719",
352
+ "content": "P on Yaw"
353
+ },
354
+ "676": {
355
+ "type": "action",
356
+ "one": "679",
357
+ "content": "Spin quickly on the yaw axis"
358
+ },
359
+ "679": {
360
+ "type": "action",
361
+ "one": "682",
362
+ "content": "Stop spinning"
363
+ },
364
+ "682": {
365
+ "type": "question",
366
+ "flag1": 0,
367
+ "one": "695",
368
+ "two": "692",
369
+ "content": "Does the quad dip one side?"
370
+ },
371
+ "692": {
372
+ "type": "action",
373
+ "one": "719",
374
+ "content": "Increase P on Yaw"
375
+ },
376
+ "695": {
377
+ "type": "question",
378
+ "flag1": 0,
379
+ "one": "733",
380
+ "two": "705",
381
+ "content": "Do you get fast oscilations?"
382
+ },
383
+ "705": {
384
+ "type": "action",
385
+ "one": "719",
386
+ "content": "Decrease P on Yaw"
387
+ },
388
+ "719": {
389
+ "type": "arrow-loop",
390
+ "one": "676",
391
+ "content": ""
392
+ },
393
+ "733": {
394
+ "type": "comment",
395
+ "one": "10",
396
+ "content": "When Yaw P is right the spin should be clean and snappy"
397
+ },
398
+ "782": {
399
+ "type": "action",
400
+ "one": "783",
401
+ "content": "Fly straight"
402
+ },
403
+ "783": {
404
+ "type": "action",
405
+ "one": "784",
406
+ "content": "Make a turn"
407
+ },
408
+ "784": {
409
+ "type": "question",
410
+ "flag1": 0,
411
+ "one": "791",
412
+ "two": "786",
413
+ "content": "Is there drift, does the quad slide out?"
414
+ },
415
+ "786": {
416
+ "type": "action",
417
+ "one": "787",
418
+ "content": "Increase I on Yaw"
419
+ },
420
+ "787": {
421
+ "type": "arrow-loop",
422
+ "one": "782",
423
+ "content": ""
424
+ },
425
+ "791": {
426
+ "type": "comment",
427
+ "one": "16",
428
+ "content": "Yaw I should not be higher than just enough to prevent drift."
429
+ },
430
+ "807": {
431
+ "type": "text",
432
+ "left": 470,
433
+ "top": -25,
434
+ "width": 200,
435
+ "height": 40,
436
+ "content": "DrakonFlow.com",
437
+ "style": "{\"borderWidth\":0,\"textAlign\":\"center\",\"lineWidth\":0,\"font\":\"18px Arimo\"}",
438
+ "zIndex": 1
439
+ },
440
+ "810": {
441
+ "type": "branch",
442
+ "branchId": 9,
443
+ "one": "819",
444
+ "content": "Anti Gravity Gain"
445
+ },
446
+ "814": {
447
+ "type": "action",
448
+ "one": "815",
449
+ "content": "Fly in a straight line"
450
+ },
451
+ "815": {
452
+ "type": "action",
453
+ "one": "816",
454
+ "content": "Do some rapid punchouts"
455
+ },
456
+ "816": {
457
+ "type": "question",
458
+ "flag1": 1,
459
+ "one": "823",
460
+ "two": "818",
461
+ "content": "Does pitch stay at the same angle?"
462
+ },
463
+ "818": {
464
+ "type": "action",
465
+ "one": "819",
466
+ "content": "Increase Anti Gravity"
467
+ },
468
+ "819": {
469
+ "type": "arrow-loop",
470
+ "one": "814",
471
+ "content": ""
472
+ },
473
+ "823": {
474
+ "type": "comment",
475
+ "one": "666",
476
+ "content": "3 to 5 is a good range"
477
+ },
478
+ "824": {
479
+ "type": "input",
480
+ "content": "<p>To the motor sound</p>",
481
+ "one": "41",
482
+ "secondary": "<p>Listen</p>"
483
+ }
484
+ },
485
+ "params": "By Oscar Liang",
486
+ "type": "drakon",
487
+ "id": "How to tune PID on a quadcopter.drakon"
488
+ }