Difference between revisions of "DevGuide/BoozDesign"
From PaparazziUAV
(→Use Cases) |
|||
(16 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
Here we want to collect our thoughts on the re-design of the booz airborne code. | Here we want to collect our thoughts on the re-design of the booz airborne code. | ||
+ | |||
+ | == brain storm == | ||
+ | |||
+ | '''Aims:''' | ||
+ | * Interface on Navigation, Guidance, Stabilization and Supervision level | ||
+ | * Priority system | ||
+ | * Overlay of different inputs | ||
+ | * Events | ||
+ | |||
+ | '''Use Cases''' | ||
+ | * priority of RC to switch to manual mode | ||
+ | * RC overlay of guidance | ||
+ | * FMS overlay of RC (e.g. test signal) | ||
+ | * Limit max. throttle with RC | ||
+ | |||
+ | '''Events:''' | ||
+ | * Mode change from RC | ||
+ | * Mode change from GCS | ||
+ | ** give priority of mode from RC over mode set in GCS? | ||
+ | * RC lost | ||
+ | ** if in Nav mode goto Home mode | ||
+ | ** if in Nav mode do nothing | ||
+ | ** if in Manual/Auto1 mode goto Failsafe mode | ||
+ | * datalink lost | ||
+ | ** if in Manual do nothing | ||
+ | ** if in Nav do nothing | ||
+ | ** if in Nav goto Home mode | ||
+ | * GPS lost | ||
+ | ** if in Nav do Safety landing | ||
+ | ** in Manual do nothing | ||
+ | * outside zone | ||
+ | ** kill motors | ||
+ | ** in Manual do nothing | ||
+ | ** if in Nav mode goto Home mode | ||
+ | * battery critical | ||
+ | |||
+ | === Autopilot === | ||
+ | Describe modules (nav, guidance, stabilization, etc.) as xml with in and outputs. A mode is a specific connection of modules. | ||
+ | Events can change the mode. | ||
+ | |||
+ | |||
+ | possible priority systems: | ||
+ | #Every mode belongs to a certain priority level. If an event requests a new mode with a higher priority than the current mode it is switched to the new mode.<br>Better suited for a lot of different modes which can be grouped into priority levels. | ||
+ | #Every event has a condition (current mode) and associated requested mode (or multiple conditions). If the condition matches the current mode the autopilot will switch to the new mode.<br>e.g. '''Event:''' GPS lost '''Condition:''' Nav mode '''ReqMode:''' Failsafe<br>This will get tedious with a lot of modes.... | ||
+ | |||
+ | === Interfaces === | ||
+ | |||
+ | '''navigation''' | ||
+ | * interface here needed at all? | ||
+ | |||
+ | '''guidance''' | ||
+ | * pos setpoint in LTP | ||
+ | * speed setpoint in LTP ? | ||
+ | |||
+ | '''stabilization''' | ||
+ | * quaternion fixed point | ||
+ | * quaternion float | ||
+ | |||
+ | '''supervision''' | ||
+ | * roll, pitch, yaw and thrust command. unit? limit? | ||
== Current Status == | == Current Status == | ||
<graphviz border='frame' format='svg'> | <graphviz border='frame' format='svg'> | ||
digraph G { | digraph G { | ||
− | " | + | nodesep="0.5" |
− | + | ranksep="0.25" | |
− | + | size="5,5" | |
− | + | ||
− | + | actuators [ | |
− | + | shape=box | |
− | |||
] | ] | ||
"supervision" [ | "supervision" [ | ||
Line 16: | Line 75: | ||
fontcolor=blue | fontcolor=blue | ||
] | ] | ||
− | + | ||
− | + | INS [shape=Mrecord,label="{{<hf> horizontal\ filter | <vf> vertical\ filter} | <ins> INS }"] | |
− | + | {rank=same baro mag GPS IMU} | |
− | + | {rank=same AHRS INS} | |
− | + | ||
− | + | GPS -> INS:ins [label="init ltp"] | |
− | + | GPS -> INS:hf | |
− | + | ||
− | + | IMU -> INS | |
− | + | IMU -> AHRS | |
− | + | ||
− | + | baro -> INS:vf | |
− | + | mag -> AHRS | |
− | + | ||
+ | AHRS -> INS | ||
+ | |||
+ | INS -> guidance_h | ||
+ | INS -> navigation | ||
+ | |||
+ | subgraph cluster_guidance { | ||
+ | guidance_v | ||
+ | guidance_h | ||
+ | } | ||
+ | |||
+ | AHRS -> "stabilization attitude" | ||
+ | "stabilization attitude" -> supervision [label="roll,pitch,yaw commands"] | ||
+ | supervision->actuators | ||
+ | guidance_v -> supervision [label="thrust command"] | ||
+ | guidance_h -> "stabilization attitude" [label="euler"] | ||
+ | navigation -> guidance_h [label=carrot] | ||
+ | navigation -> guidance_v [label=alt] | ||
+ | |||
} | } | ||
</graphviz> | </graphviz> | ||
== ReDesign == | == ReDesign == | ||
− | === | + | Example of input and control loops. For normal navigation mode the the setpoints follow the black path only. But via the green path the RC command can be overlaid on guidance (the two input quaternions to stabilization are multiplied). For manual attitude mode only the green input is considered for stabilization. |
+ | |||
+ | <graphviz border='frame' format='svg'> | ||
+ | digraph G { | ||
+ | compound=true | ||
+ | nodesep="0.75" | ||
+ | ranksep="0.25" | ||
+ | size="7,4.5" | ||
+ | node [shape=box] | ||
+ | //rankdir=LR | ||
+ | |||
+ | guidance [group=control] | ||
+ | stabilization [group=control] | ||
+ | supervision [group=control] | ||
+ | actuators [group=control] | ||
+ | navigation [shape=ellipse] | ||
+ | overo [shape=ellipse] | ||
+ | stick [shape=Mrecord,label="<stick> stick | {<rc> RC | <fms> joystick |<test> test\ signal}"] | ||
+ | |||
+ | guidance -> stabilization -> supervision -> actuators | ||
− | + | navigation-> guidance [label="pos,alt", color=yellow] | |
− | + | navigation-> stabilization [label="quat", color=yellow] | |
− | + | overo -> guidance [label="pos,alt", color=red] | |
− | + | stick:w -> guidance:e [label="speed_sp", ltail=cluster_input, color=blue] | |
− | + | //guidance -> stabilization -> supervision -> actuators [color=blue] | |
+ | stick:stick:s -> stabilization:e [label="quat", ltail=cluster_input, color=green] | ||
+ | //stabilization -> supervision -> actuators [color=green] | ||
+ | |||
+ | } | ||
+ | </graphviz> | ||
− | + | [[Category:Software]] [[Category:Developer_Documentation]] |
Latest revision as of 16:36, 9 March 2011
Here we want to collect our thoughts on the re-design of the booz airborne code.
brain storm
Aims:
- Interface on Navigation, Guidance, Stabilization and Supervision level
- Priority system
- Overlay of different inputs
- Events
Use Cases
- priority of RC to switch to manual mode
- RC overlay of guidance
- FMS overlay of RC (e.g. test signal)
- Limit max. throttle with RC
Events:
- Mode change from RC
- Mode change from GCS
- give priority of mode from RC over mode set in GCS?
- RC lost
- if in Nav mode goto Home mode
- if in Nav mode do nothing
- if in Manual/Auto1 mode goto Failsafe mode
- datalink lost
- if in Manual do nothing
- if in Nav do nothing
- if in Nav goto Home mode
- GPS lost
- if in Nav do Safety landing
- in Manual do nothing
- outside zone
- kill motors
- in Manual do nothing
- if in Nav mode goto Home mode
- battery critical
Autopilot
Describe modules (nav, guidance, stabilization, etc.) as xml with in and outputs. A mode is a specific connection of modules. Events can change the mode.
possible priority systems:
- Every mode belongs to a certain priority level. If an event requests a new mode with a higher priority than the current mode it is switched to the new mode.
Better suited for a lot of different modes which can be grouped into priority levels. - Every event has a condition (current mode) and associated requested mode (or multiple conditions). If the condition matches the current mode the autopilot will switch to the new mode.
e.g. Event: GPS lost Condition: Nav mode ReqMode: Failsafe
This will get tedious with a lot of modes....
Interfaces
navigation
- interface here needed at all?
guidance
- pos setpoint in LTP
- speed setpoint in LTP ?
stabilization
- quaternion fixed point
- quaternion float
supervision
- roll, pitch, yaw and thrust command. unit? limit?
Current Status
The ImageMap extension is not installed.
ReDesign
Example of input and control loops. For normal navigation mode the the setpoints follow the black path only. But via the green path the RC command can be overlaid on guidance (the two input quaternions to stabilization are multiplied). For manual attitude mode only the green input is considered for stabilization.
The ImageMap extension is not installed.