UAVP-NG: Conditions, Actions and Behaviors  

| | Comments (2) | TrackBacks (0)

Did you ever think of your UAV as an entity?

Now, you probably will think we have gone crazy, but think it trough! You put it on the floor and let it go. And after it's flying you hope it will do what you tell it to do. You tell it to turn right and it turns right. You tell it to raise and it raises. You told it to warn you when the battery reaches less that 10V and it warns you, when it's battery reaches 10V.

In essence every UAV has a known set of behaviors and you expect it to behave according to these!

Now imagine that these behaviors are not a fix set of rules, but imagine you could customize these behaviors according to your needs. Let's say a behavior rule consists of a behavior condition, which when it evaluated as true makes sure that an associated behavior action gets executed. If you think it trough you will see that every and all of the current UAV features can be mapped to behaviors! You need calibration on channel 5? You want your cam to make a photo when channel 8 goes to 100%? You would like to turn on the lights, when you have reached 10m or more... and... and... and...

I think you got my point...
... we can model every and all UAV features to one or more behavior rules.

We implemented the concept on the NG. You can define arbitrary behavior rules. Each behavior rule consist of a behavior condition, which when it evaluates to true will trigger an associated behavior action.

Conditions and actions are arbitrary functions implemented seperate in the NG framework. The implemented console commands show behaviors, show conditions and show actions are used to inspect the currently defined behaviors as well as the predefined conditions and actions. Users are able to define custom new behaviors using the predefined conditions and actions with the command add behavior .... Each condition and action can receive user chosen parameters. These allow further customization.

In the newest NG firmware 12 predefined standard behaviors implement the normal behaviors you are used from your UAVs. This includes sensor calibration, config- and controller-switching when not flying as well as motors on and off stick positions. Furthermore the in-flight actions like rc calibration, hover calibration, emergency landing and more are defined using behaviors. Further empty behavior rule slots allow users to add their own behavior rules.

In the future we will implement even more complex conditions and actions. We already introduced behavior variables and test conditions for them which will allow more complex behavior definitions. We will also implement more complex actions like a gps.come.home(), ctrl.do.hover(), comm.uav.near() or ctrl.do.emergency.landing().

We expect to leverage the concept even further so that we will be able to implement complex inter-UAV behaviors using them. Eventually we will even move up to a byte code compiler and interpreter. This will allow very complex new behavior programms moving the whole concept to a fully new level.

The current NG implementation allows all standard UAV behaviors you are used from normal UAVs like the MK or the UAVP. More complex behaviors will follow.

0 TrackBacks

Listed below are links to blogs that reference this entry: UAVP-NG: Conditions, Actions and Behaviors.

TrackBack URL for this entry: http://amir.ch/mt/mt-tb.cgi/118

2 Comments

Hi Amir,

do you implement priorities and what about contradictory behaviors? Don't you need relations bewteen bahaviors as well?

Andreas

Currently there's no need for relations for the normal standard behaviors. For more complex behaviors I've already implemented behavior variables. Behavior rules can set the bit fields of these variables and behavior rules can check for the values of these behavior variables. These and some special bit field and bit range check conditions allow to implement more complex relations.

If we would like even more complex relations we should think about a byte code compiler and interpreter. This would allow us to support a complex programming language allowing arbitrary complex relations and procedures.

Leave a comment

Archives

Syndication

Atom 1.0
RSS 2.0 GeoURL

W3C XHTML 1.0 W3C CSS Creative Commons License

get hCard

Add to Technorati Favorites
OpenID enabled
Powered by Movable Type 4.1

Del.icio.us Tags

About this Entry

This page contains a single entry by Amir published on June 18, 2008 10:16 AM.

UAVP-NG: A new NG has been born was the previous entry in this blog.

Beware of MarcusUAV! is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.