mirror of https://github.com/ArduPilot/ardupilot
AP_Scripting: document trajectory scripting
This commit is contained in:
parent
0ae3b39a66
commit
4b53e16ea2
|
@ -0,0 +1,134 @@
|
||||||
|
# Scripted Aerobatics
|
||||||
|
|
||||||
|
The lua script "plane_aerobatics.lua" implements scripted aerobatics,
|
||||||
|
allowing fixed wing aircraft to execute a number of aerobatic
|
||||||
|
manoeuvres either in AUTO mission or by triggering using pilot commands
|
||||||
|
using RC switches.
|
||||||
|
|
||||||
|
## Available Manoeuvres
|
||||||
|
|
||||||
|
The following table gives the available manoeuvres. Each manoeuvre has
|
||||||
|
an ID number which is used in the AUTO mission or in the TRIKn_ID
|
||||||
|
parameters (described below).
|
||||||
|
|
||||||
|
| ID | Name | Arg1 | Arg2 | Arg3 | Arg4 | Turnaround |
|
||||||
|
| -- | ------------------------ | ------ | ---------- | -------| ---- | ---------- |
|
||||||
|
| 1 | Figure Eight | radius | bank angle | | | No |
|
||||||
|
| 2 | Loop | radius | | | | No |
|
||||||
|
| 3 | Horizontal Rectangle | length | width | radius | | No |
|
||||||
|
| 4 | Climbing Circle | radius | height | | | No |
|
||||||
|
| 5 | vertical Box | length | height | radius | | No |
|
||||||
|
| 6 | Banked Circle | radius | bank angle | | | No |
|
||||||
|
| 7 | Straight Roll | length | num rolls | | | No |
|
||||||
|
| 8 | Rolling Circle | radius | num rolls | | | No |
|
||||||
|
| 9 | Half Cuban Eight | radius | | | | Yes |
|
||||||
|
| 10 | Half Reverse Cuban Eight | radius | | | | Yes |
|
||||||
|
| 11 | Cuban Eight | radius | | | | No |
|
||||||
|
| 12 | Humpty Bump | radius | height | | | Yes |
|
||||||
|
| 13 | Straight Flight | length | bank angle | | | No |
|
||||||
|
| 14 | Scale Figure Eight | radius | bank angle | | | No |
|
||||||
|
|
||||||
|
The "Turnaround" column indicates if the manoeuvre results in a course
|
||||||
|
reversal, which impacts how it is used in AUTO missions.
|
||||||
|
|
||||||
|
## Loading the script
|
||||||
|
|
||||||
|
Put the plane_aerobatics.lua script on your microSD card in the
|
||||||
|
APM/SCRIPTS directory. You can use MAVFtp to do this.
|
||||||
|
|
||||||
|
Then set
|
||||||
|
|
||||||
|
- SCR_ENABLE = 1
|
||||||
|
- SCR_HEAP_SIZE = 200000
|
||||||
|
- SCR_VM_I_COUNT = 200000
|
||||||
|
|
||||||
|
You will need to refresh parameters after setting SCR_ENABLE. Then
|
||||||
|
reboot to start scripting.
|
||||||
|
|
||||||
|
## Aircraft Setup
|
||||||
|
|
||||||
|
The aircraft needs to be setup to perform well in ACRO mode. You need
|
||||||
|
to enable the yaw rate controller by setting:
|
||||||
|
|
||||||
|
- YAW_RATE_ENABLE = 1
|
||||||
|
- ACRO_YAW_RATE = 90
|
||||||
|
|
||||||
|
The ACRO_YAW_RATE depends on the capabilities of the aircraft, but
|
||||||
|
around 90 degrees/second is reasonable.
|
||||||
|
|
||||||
|
You need to tune the yaw rate controller by flying in AUTOTUNE mode
|
||||||
|
and moving the rudder stick from side to side until the yaw rate
|
||||||
|
tuning is reported as being finished.
|
||||||
|
|
||||||
|
## Use In AUTO Missions
|
||||||
|
|
||||||
|
To use in an AUTO mission you can create waypoint missions containing
|
||||||
|
NAV_SCRIPT_TIME elements (shown as SCRIPT_TIME in MissionPlanner). These mission items take the following arguments:
|
||||||
|
|
||||||
|
- the command ID from the table above
|
||||||
|
- the timeout in seconds
|
||||||
|
- up to four arguments as shown in the above table
|
||||||
|
|
||||||
|
The aerobatics system will use the location of the previous and next
|
||||||
|
waypoints to line up the manoeuvre. You need to plane a normal
|
||||||
|
waypoint just before the location where you want to start the
|
||||||
|
manoeuvre, then the NAV_SCRIPT_TIME and then a normal waypoint after
|
||||||
|
the manoeuvre.
|
||||||
|
|
||||||
|
## Use with "tricks on a switch"
|
||||||
|
|
||||||
|
You can trigger the manoeuvres using RC switches, allowing you to have
|
||||||
|
up to 11 tricks pre-programmed on your transmitter ready for use in
|
||||||
|
fixed wing flight. You can trigger the tricks in the following flight
|
||||||
|
modes:
|
||||||
|
|
||||||
|
- CIRCLE
|
||||||
|
- STABILIZE
|
||||||
|
- ACRO
|
||||||
|
- FBWA
|
||||||
|
- FBWB
|
||||||
|
- CRUISE
|
||||||
|
- LOITER
|
||||||
|
|
||||||
|
To setup tricks you need to first set the parameter TRIK_ENABLE to 1.
|
||||||
|
|
||||||
|
After setting TRIK_ENABLE, either restart scripting or reboot. Then
|
||||||
|
set TRIK_COUNT to the number of tricks you want to make available,
|
||||||
|
with a maximum of 11.
|
||||||
|
|
||||||
|
After setting TRIK_COUNT, reboot and refresh parameters. You will find
|
||||||
|
you will now have 5 parameters per trick.
|
||||||
|
|
||||||
|
- TRIKn_ID
|
||||||
|
- TRIKn_ARG1
|
||||||
|
- TRIKn_ARG2
|
||||||
|
- TRIKn_ARG3
|
||||||
|
- TRIKn_ARG4
|
||||||
|
|
||||||
|
The ID parameter is the manoeuvre from the above table, and the arguments are the arguments to each manoeuvre.
|
||||||
|
|
||||||
|
Now you need to setup your two control channels. You should have one 3
|
||||||
|
position switch for activating tricks, and one knob or switch to
|
||||||
|
select tricks. It is best to use a knob for the trick selector so you can have up to 11 tricks.
|
||||||
|
|
||||||
|
Work out which RC input channel you want to use for activation (a 3 position switch) and set
|
||||||
|
|
||||||
|
- RCn_OPTION = 300
|
||||||
|
|
||||||
|
Then work out what RC input channel you want to use for selection and set
|
||||||
|
|
||||||
|
- RCn_OPTION = 301
|
||||||
|
|
||||||
|
## Flying with tricks
|
||||||
|
|
||||||
|
When the activation channel (the one marked with option 300) is in the
|
||||||
|
middle position then when you move the knob it will display the
|
||||||
|
currently selected trick.
|
||||||
|
|
||||||
|
To activate a trick you move the activation channel to the top
|
||||||
|
position, and the trick will run.
|
||||||
|
|
||||||
|
Moving the activation switch to the bottom position cancels any
|
||||||
|
running trick and stops the trick system.
|
||||||
|
|
||||||
|
Changing flight modes will also cancel any active trick.
|
Loading…
Reference in New Issue