Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Ardupilot
GitHub Repository: Ardupilot/ardupilot
Path: blob/master/Tools/autotest/pysim/vehicleinfo.py
9898 views
1
# flake8: noqa
2
3
class VehicleInfo(object):
4
5
def __init__(self):
6
"""
7
waf_target: option passed to waf's --target to create binary
8
default_params_filename: filename of default parameters file. Taken to be relative to autotest dir.
9
extra_mavlink_cmds: extra parameters that will be passed to mavproxy
10
"""
11
self.options = {
12
"ArduCopter": {
13
"default_frame": "quad",
14
"frames": {
15
# COPTER
16
"+": {
17
"waf_target": "bin/arducopter",
18
"default_params_filename": "default_params/copter.parm",
19
},
20
"quad": {
21
"model": "+",
22
"waf_target": "bin/arducopter",
23
"default_params_filename": "default_params/copter.parm",
24
},
25
"X": {
26
"waf_target": "bin/arducopter",
27
"default_params_filename": ["default_params/copter.parm",
28
"default_params/copter-X.parm"],
29
},
30
"bfx": {
31
"waf_target": "bin/arducopter",
32
"default_params_filename": ["default_params/copter.parm",
33
"default_params/copter-bfx.parm" ],
34
},
35
"djix": {
36
"waf_target": "bin/arducopter",
37
"default_params_filename": ["default_params/copter.parm",
38
"default_params/copter-djix.parm" ],
39
},
40
"cwx": {
41
"waf_target": "bin/arducopter",
42
"default_params_filename": ["default_params/copter.parm",
43
"default_params/copter-cwx.parm" ],
44
},
45
"hexa": {
46
"waf_target": "bin/arducopter",
47
"default_params_filename": ["default_params/copter.parm",
48
"default_params/copter-hexa.parm" ],
49
},
50
"hexax": {
51
"waf_target": "bin/arducopter",
52
"default_params_filename": ["default_params/copter.parm",
53
"default_params/copter-hexa.parm",
54
"default_params/copter-X.parm", ],
55
},
56
"hexa-cwx": {
57
"waf_target": "bin/arducopter",
58
"default_params_filename": [
59
"default_params/copter.parm",
60
"default_params/copter-hexa.parm",
61
"default_params/copter-hexa-cwx.parm"
62
],
63
},
64
"hexa-dji": {
65
"waf_target": "bin/arducopter",
66
"default_params_filename": [
67
"default_params/copter.parm",
68
"default_params/copter-hexa.parm",
69
"default_params/copter-hexa-dji.parm"
70
],
71
},
72
"octa-cwx": {
73
"waf_target": "bin/arducopter",
74
"default_params_filename": [
75
"default_params/copter.parm",
76
"default_params/copter-octa.parm",
77
"default_params/copter-octa-cwx.parm"
78
],
79
},
80
"octa-quad-cwx": {
81
"waf_target": "bin/arducopter",
82
"default_params_filename": [
83
"default_params/copter.parm",
84
"default_params/copter-octaquad.parm",
85
"default_params/copter-octaquad-cwx.parm"
86
],
87
},
88
"octa-quad": {
89
"waf_target": "bin/arducopter",
90
"default_params_filename": ["default_params/copter.parm",
91
"default_params/copter-octaquad.parm" ],
92
},
93
"octa-quad-cor": {
94
"waf_target": "bin/arducopter",
95
"default_params_filename": ["default_params/copter.parm",
96
"default_params/copter-octaquad-cor.parm" ],
97
},
98
"octa-quad-cw-cor": {
99
"waf_target": "bin/arducopter",
100
"default_params_filename": ["default_params/copter.parm",
101
"default_params/copter-octaquad-cw-cor.parm" ],
102
},
103
"octa": {
104
"waf_target": "bin/arducopter",
105
"default_params_filename": ["default_params/copter.parm",
106
"default_params/copter-octa.parm" ],
107
},
108
"octa-dji": {
109
"waf_target": "bin/arducopter",
110
"default_params_filename": [
111
"default_params/copter.parm",
112
"default_params/copter-octa.parm",
113
"default_params/copter-octa-dji.parm"
114
],
115
},
116
"deca": {
117
"waf_target": "bin/arducopter",
118
"default_params_filename": ["default_params/copter.parm",
119
"default_params/copter-deca.parm" ],
120
},
121
"deca-cwx": {
122
"waf_target": "bin/arducopter",
123
"default_params_filename": [
124
"default_params/copter.parm",
125
"default_params/copter-deca.parm",
126
"default_params/copter-deca-cwx.parm"
127
],
128
},
129
"tri": {
130
"waf_target": "bin/arducopter",
131
"default_params_filename": ["default_params/copter.parm",
132
"default_params/copter-tri.parm" ],
133
},
134
"y6": {
135
"waf_target": "bin/arducopter",
136
"default_params_filename": ["default_params/copter.parm",
137
"default_params/copter-y6.parm" ],
138
},
139
"dodeca-hexa": {
140
"waf_target": "bin/arducopter",
141
"default_params_filename": ["default_params/copter.parm",
142
"default_params/copter-dodecahexa.parm" ],
143
},
144
"dotriaconta_octaquad_x": {
145
"waf_target": "bin/arducopter",
146
"default_params_filename": [
147
"default_params/copter.parm",
148
"default_params/copter-dotriaconta_octaquad_x.parm",
149
],
150
"frame_example_script": "MotorMatrix_dotriaconta_octaquad_x.lua",
151
},
152
"hexadeca-octa": {
153
"waf_target": "bin/arducopter",
154
"default_params_filename": [
155
"default_params/copter.parm",
156
"default_params/copter-hexadeca_octa.parm"
157
],
158
"frame_example_script": "MotorMatrix_hexadeca_octa.lua",
159
},
160
"hexadeca-octa-cwx": {
161
"waf_target": "bin/arducopter",
162
"default_params_filename": [
163
"default_params/copter.parm",
164
"default_params/copter-hexadeca_octa.parm",
165
"default_params/copter-hexadeca_octa_cwx.parm"
166
],
167
"frame_example_script": "MotorMatrix_hexadeca_octa_cw_x.lua",
168
},
169
# SIM
170
"IrisRos": {
171
"waf_target": "bin/arducopter",
172
"default_params_filename": "default_params/copter.parm",
173
"external": True,
174
},
175
"gazebo-iris": {
176
"waf_target": "bin/arducopter",
177
"default_params_filename": ["default_params/copter.parm",
178
"default_params/gazebo-iris.parm"],
179
"external": True,
180
},
181
"airsim-copter": {
182
"waf_target": "bin/arducopter",
183
"default_params_filename": ["default_params/copter.parm",
184
"default_params/airsim-quadX.parm"],
185
"external": True,
186
},
187
# HELICOPTER
188
"heli": {
189
"waf_target": "bin/arducopter-heli",
190
"default_params_filename": "default_params/copter-heli.parm",
191
},
192
"heli-gas": {
193
"waf_target": "bin/arducopter-heli",
194
"default_params_filename": ["default_params/copter-heli.parm",
195
"default_params/copter-heli-gas.parm"],
196
},
197
"heli-dual": {
198
"waf_target": "bin/arducopter-heli",
199
"default_params_filename": ["default_params/copter-heli.parm",
200
"default_params/copter-heli-dual.parm"],
201
},
202
"heli-blade360": {
203
"waf_target": "bin/arducopter-heli",
204
"default_params_filename": ["default_params/copter-heli.parm",
205
],
206
},
207
"singlecopter": {
208
"waf_target": "bin/arducopter",
209
"default_params_filename": "default_params/copter-single.parm",
210
},
211
"coaxcopter": {
212
"waf_target": "bin/arducopter",
213
"default_params_filename": ["default_params/copter-single.parm",
214
"default_params/copter-coax.parm"],
215
},
216
"scrimmage-copter" : {
217
"waf_target": "bin/arducopter",
218
"default_params_filename": "default_params/copter.parm",
219
"external": True,
220
},
221
"calibration": {
222
"extra_mavlink_cmds": "module load sitl_calibration;",
223
"external": True, # lies! OTOH, hard to take off with this
224
},
225
"Callisto": {
226
"model": "octa-quad:@ROMFS/models/Callisto.json",
227
"waf_target": "bin/arducopter",
228
"default_params_filename": [
229
"default_params/copter.parm",
230
"default_params/copter-octaquad.parm",
231
"models/Callisto.param",
232
],
233
},
234
"quad-can": {
235
"waf_target": "bin/arducopter",
236
"default_params_filename": ["default_params/copter.parm", "default_params/quad-can.parm"],
237
"periph_params_filename": ["default_params/periph.parm", "default_params/quad-periph.parm"],
238
},
239
"freestyle": {
240
"model": "X:@ROMFS/models/freestyle.json",
241
"waf_target": "bin/arducopter",
242
"default_params_filename": [
243
"default_params/copter.parm",
244
"default_params/copter-X.parm",
245
"models/freestyle.param",
246
],
247
},
248
},
249
},
250
"Helicopter": {
251
"default_frame": "heli",
252
"frames": {
253
"heli": {
254
"waf_target": "bin/arducopter-heli",
255
"default_params_filename": "default_params/copter-heli.parm",
256
},
257
"heli-gas": {
258
"waf_target": "bin/arducopter-heli",
259
"default_params_filename": ["default_params/copter-heli.parm",
260
"default_params/copter-heli-gas.parm"],
261
},
262
"heli-dual": {
263
"waf_target": "bin/arducopter-heli",
264
"default_params_filename": ["default_params/copter-heli.parm",
265
"default_params/copter-heli-dual.parm"],
266
},
267
# "heli-compound": {
268
# "waf_target": "bin/arducopter-heli",
269
# "default_params_filename": ["default_params/copter-heli.parm",
270
# "default_params/copter-heli-compound.parm"],
271
# },
272
"heli-blade360": {
273
"waf_target": "bin/arducopter-heli",
274
"default_params_filename": ["default_params/copter-heli.parm",
275
],
276
},
277
},
278
},
279
"Blimp": {
280
"default_frame": "Blimp",
281
"frames": {
282
"Blimp": {
283
"waf_target": "bin/blimp",
284
"default_params_filename": "default_params/blimp.parm",
285
},
286
},
287
},
288
"ArduPlane": {
289
"default_frame": "plane",
290
"frames": {
291
# PLANE
292
"quadplane-tilttri": {
293
"waf_target": "bin/arduplane",
294
"default_params_filename": ["default_params/quadplane.parm",
295
"default_params/quadplane-tilttri.parm"],
296
},
297
"quadplane-tilttrivec": {
298
"waf_target": "bin/arduplane",
299
"default_params_filename": ["default_params/quadplane.parm",
300
"default_params/quadplane-tilttrivec.parm"],
301
},
302
"quadplane-tilthvec": {
303
"waf_target": "bin/arduplane",
304
"default_params_filename": ["models/plane.parm", "default_params/quadplane-tilthvec.parm"],
305
},
306
"quadplane-tri": {
307
"waf_target": "bin/arduplane",
308
"default_params_filename": ["default_params/quadplane.parm",
309
"default_params/quadplane-tri.parm"],
310
},
311
"quadplane-cl84" : {
312
"waf_target" : "bin/arduplane",
313
"default_params_filename": ["default_params/quadplane.parm",
314
"default_params/quadplane-cl84.parm"],
315
},
316
"quadplane": {
317
"waf_target": "bin/arduplane",
318
"default_params_filename": "default_params/quadplane.parm",
319
},
320
"quadplane-ice": {
321
"waf_target": "bin/arduplane",
322
"default_params_filename": ["default_params/quadplane.parm", "default_params/plane-ice.parm", "default_params/quadplane-ice.parm"],
323
},
324
"quadplane-can": {
325
"waf_target": "bin/arduplane",
326
"default_params_filename": ["default_params/quadplane.parm", "default_params/quadplane-can.parm"],
327
"periph_params_filename": ["default_params/periph.parm", "default_params/quadplane-periph.parm"],
328
},
329
"quadplane-tilt": {
330
"waf_target": "bin/arduplane",
331
"default_params_filename": ["default_params/quadplane.parm",
332
"default_params/quadplane-tilt.parm"],
333
},
334
"firefly": {
335
"waf_target": "bin/arduplane",
336
"default_params_filename": ["default_params/quadplane.parm",
337
"default_params/firefly.parm"]
338
},
339
"plane-elevon": {
340
"waf_target": "bin/arduplane",
341
"default_params_filename": ["models/plane.parm", "default_params/plane-elevons.parm"],
342
},
343
"plane-vtail": {
344
"waf_target": "bin/arduplane",
345
"default_params_filename": ["models/plane.parm", "default_params/plane-vtail.parm"],
346
},
347
"plane-tailsitter": {
348
"waf_target": "bin/arduplane",
349
"default_params_filename": "default_params/plane-tailsitter.parm",
350
},
351
"plane-jet": {
352
"waf_target": "bin/arduplane",
353
"default_params_filename": ["models/plane.parm", "default_params/plane-jet.parm"],
354
},
355
"plane-ice": {
356
"waf_target": "bin/arduplane",
357
"default_params_filename": ["models/plane.parm", "default_params/plane-ice.parm"],
358
},
359
"plane-3d": {
360
"waf_target": "bin/arduplane",
361
"default_params_filename": [], # defaults are loaded in SIM_Plane.cpp
362
},
363
"glider": {
364
"waf_target": "bin/arduplane",
365
"default_params_filename": "default_params/glider.parm",
366
},
367
"quadplane-copter_tailsitter": {
368
"waf_target": "bin/arduplane",
369
"default_params_filename": ["default_params/quadplane.parm","default_params/quadplane-copter_tailsitter.parm"],
370
},
371
"plane": {
372
"waf_target": "bin/arduplane",
373
"default_params_filename": "models/plane.parm",
374
},
375
"plane-dspoilers": {
376
"waf_target": "bin/arduplane",
377
"default_params_filename": ["models/plane.parm", "default_params/plane-dspoilers.parm"]
378
},
379
"plane-redundant": {
380
"waf_target": "bin/arduplane",
381
"default_params_filename": ["models/plane.parm", "default_params/plane-redundant.parm"]
382
},
383
"plane-soaring": {
384
"waf_target": "bin/arduplane",
385
"default_params_filename": ["models/plane.parm", "default_params/plane-soaring.parm"]
386
},
387
"gazebo-zephyr": {
388
"waf_target": "bin/arduplane",
389
"default_params_filename": "default_params/gazebo-zephyr.parm",
390
"external": True,
391
},
392
"last_letter": {
393
"waf_target": "bin/arduplane",
394
"default_params_filename": "models/plane.parm",
395
"external": True,
396
},
397
"CRRCSim": {
398
"waf_target": "bin/arduplane",
399
"default_params_filename": "models/plane.parm",
400
"external": True,
401
},
402
"jsbsim": {
403
"waf_target": "bin/arduplane",
404
"default_params_filename": "default_params/plane-jsbsim.parm",
405
"external": True,
406
},
407
"scrimmage-plane" : {
408
"waf_target": "bin/arduplane",
409
"default_params_filename": "models/plane.parm",
410
"external": True,
411
},
412
"calibration": {
413
"extra_mavlink_cmds": "module load sitl_calibration;",
414
"external": True, # lies! OTOH, hard to take off with this
415
},
416
"stratoblimp": {
417
"waf_target": "bin/arduplane",
418
"default_params_filename": "default_params/stratoblimp.parm",
419
},
420
},
421
},
422
"Rover": {
423
"default_frame": "rover",
424
"frames": {
425
# ROVER
426
"rover": {
427
"waf_target": "bin/ardurover",
428
"default_params_filename": "default_params/rover.parm",
429
},
430
"rover-skid": {
431
"waf_target": "bin/ardurover",
432
"default_params_filename": ["default_params/rover.parm",
433
"default_params/rover-skid.parm"],
434
},
435
"rover-omni3mecanum": {
436
"waf_target": "bin/ardurover",
437
"default_params_filename": ["default_params/rover.parm",
438
"default_params/rover-omni3mecanum.parm"],
439
},
440
"rover-vectored": {
441
"waf_target": "bin/ardurover",
442
"default_params_filename": ["default_params/rover.parm",
443
"default_params/rover-vectored.parm"],
444
},
445
"balancebot": {
446
"waf_target": "bin/ardurover",
447
"default_params_filename": ["default_params/rover.parm",
448
"default_params/rover-skid.parm",
449
"default_params/balancebot.parm"],
450
},
451
"motorboat": {
452
"waf_target": "bin/ardurover",
453
"default_params_filename": ["default_params/rover.parm",
454
"default_params/motorboat.parm"],
455
},
456
"motorboat-skid": {
457
"waf_target": "bin/ardurover",
458
"default_params_filename": ["default_params/rover.parm",
459
"default_params/motorboat.parm",
460
"default_params/rover-skid.parm"],
461
},
462
"sailboat": {
463
"waf_target": "bin/ardurover",
464
"default_params_filename": ["default_params/rover.parm",
465
"default_params/sailboat.parm"],
466
},
467
"sailboat-motor": {
468
"waf_target": "bin/ardurover",
469
"default_params_filename": ["default_params/rover.parm",
470
"default_params/sailboat-motor.parm"],
471
},
472
"gazebo-rover": {
473
"waf_target": "bin/ardurover",
474
"default_params_filename": ["default_params/rover.parm",
475
"default_params/rover-skid.parm"],
476
"external": True,
477
},
478
"airsim-rover": {
479
"waf_target": "bin/ardurover",
480
"default_params_filename": ["default_params/rover.parm",
481
"default_params/airsim-rover.parm"],
482
"external": True,
483
},
484
"calibration": {
485
"extra_mavlink_cmds": "module load sitl_calibration;",
486
"external": True,
487
},
488
},
489
},
490
"ArduSub": {
491
"default_frame": "vectored",
492
"frames": {
493
"vectored": {
494
"waf_target": "bin/ardusub",
495
"default_params_filename": "default_params/sub.parm",
496
},
497
"vectored_6dof": {
498
"waf_target": "bin/ardusub",
499
"default_params_filename": "default_params/sub-6dof.parm",
500
},
501
"gazebo-bluerov2": {
502
"waf_target": "bin/ardusub",
503
"default_params_filename": "default_params/sub.parm",
504
},
505
},
506
},
507
"AntennaTracker": {
508
"default_frame": "tracker",
509
"frames": {
510
"tracker": {
511
"waf_target": "bin/antennatracker",
512
},
513
},
514
},
515
"sitl_periph_universal": {
516
"frames": {
517
"universal": {
518
"configure_target": "sitl_periph_universal",
519
"waf_target": "bin/AP_Periph",
520
"default_params_filename": "default_params/periph.parm",
521
},
522
}
523
},
524
}
525
526
527
def default_frame(self, vehicle):
528
return self.options[vehicle]["default_frame"]
529
530
def default_waf_target(self, vehicle):
531
"""Returns a waf target based on vehicle type, which is often determined by which directory the user is in"""
532
default_frame = self.default_frame(vehicle)
533
return self.options[vehicle]["frames"][default_frame]["waf_target"]
534
535
def options_for_frame(self, frame, vehicle, opts):
536
"""Return information about how to sitl for frame e.g. build-type==sitl"""
537
ret = None
538
frames = self.options[vehicle]["frames"]
539
if frame in frames:
540
ret = self.options[vehicle]["frames"][frame]
541
else:
542
for p in ["octa", "tri", "y6", "firefly", "heli", "gazebo", "last_letter", "jsbsim", "quadplane", "plane-elevon", "plane-vtail", "plane", "airsim"]:
543
if frame.startswith(p):
544
ret = self.options[vehicle]["frames"][p]
545
break
546
if ret is None:
547
if frame.endswith("-heli"):
548
ret = self.options[vehicle]["frames"]["heli"]
549
if ret is None:
550
print("WARNING: no config for frame (%s)" % frame)
551
ret = {}
552
553
if "model" not in ret:
554
ret["model"] = frame
555
556
if "sitl-port" not in ret:
557
ret["sitl-port"] = True
558
559
if opts.model is not None:
560
ret["model"] = opts.model
561
562
if (ret["model"].find("xplane") != -1 or ret["model"].find("flightaxis") != -1):
563
ret["sitl-port"] = False
564
565
566
if "waf_target" not in ret:
567
ret["waf_target"] = self.default_waf_target(vehicle)
568
569
if opts.build_target is not None:
570
ret["waf_target"] = opts.build_target
571
572
return ret
573
574
575
576
577