afrl-rq / OpenUxAS

Project for multi-UAV cooperative decision making
Other
52 stars 25 forks source link

Detailed Task Documentation #2

Closed bobkr closed 3 years ago

bobkr commented 4 years ago

Is there documentation which describes in detail all of the different options available to the OpenUxAS tasks?

For instance, is there a way to change weights that the planner uses, or ways to influence the route(s) generated.

The Uxas User's manual has a lot of general information, but id leaves out a lot of details.

The Services.md in the UserManual adds some details, but drops off at the task services.

Any pointers to more internal details would be appreciated.

lhumphrey commented 4 years ago

In terms of task options, a good place to look is the documentation for the CMASI message set that forms the core of UxAS. Depending on how you built UxAS, you may already have this documentation in OpenUxAS/doc/LMCP/index.html. If not, you can generate it using LmcpGen. Depending on how you built UxAS, you might already have LmcpGen. If not, you'll need to clone the LmcpGen repository at https://github.com/afrl-rq/LmcpGen. I recommend putting LmcpGen in the same directory as OpenUxAS. Supposing you have done that, go into the LmcpGen directory and issue the following command: ant jar This will build LmcpGen. Once LmcpGen is built, issue the following command: java -Xmx2048m -jar dist/LmcpGen.jar -mdmdir "../OpenUxAS/mdms" -doc -dir "../OpenUxAS/doc" This will create a directory in OpenUxAS: OpenUxAS/doc/LMCP. In that directory is an index.html. Open it and you can see the CMASI message set, which contains the various Task messages. For instance, take PointSearchTask. It has fields for SearchLocation, StandoffDistance, and ViewAngleList, whose purposes are described in the documentation. These are the primary parameters for that task.

You can also look at examples in the OpenUxAS/examples. Most directories in examples will have a 'MessagesToSend' directory with the task messages. I recommend 05_AssignTasks and 06_AutomationDiagram in particular.

We are in the middle of restructuring the repository, but I have added a number of publications to the Wiki. Two of these focus on UxAS tasks: IntroToUxAS and SurveillanceTasks.

There is currently no way to change the weights that the planner uses. However, you can put constraints on the possible ordering of tasks using a process algebra string. See examples/05_AssignTasks/MessagesToSend/AutomationRequest_All.xml for an example of an AutomationRequest message that contains a meaningful process algebra string.

In terms of routes, we make a distinction between "en route" waypoints, which connect the end of one task to the start of another task, and "on task" waypoints, which route the vehicle during tasks. "On task" waypoints can be influenced by task parameters, though not individually manipulated, since by design they're trying to accomplish a particular task. En route waypoints are going to optimize the path between tasks, so they cannot be directly manipulated either. However, you could insert something like a PointSearch task if you wanted a vehicle to have to fly over a particular point. You could constrain when this would occur relative to other tasks using a process algebra string. However, if multiple vehicles are eligible to perform the tasks in the process algebra string, the assignment algorithm might split the PointSearch task and other tasks across vehicles. So you'd either want to specify a single eligible vehicle ID in the AutomationRequest, or specify a specific vehicle ID in the tasks you're trying to constrain.

bobkr commented 4 years ago

Thanks for the update. That helps a lot.

A question on example 06, there are keepout areas created, but the craft do not obey them. Are keepouts only considered when creating a route?

I ask this because I use keepouts, but the LineSearchTask in my AutomationRequest ignores the keepouts.

From: lhumphrey notifications@github.com Reply-To: afrl-rq/OpenUxAS reply@reply.github.com Date: Monday, August 3, 2020 at 8:18 PM To: afrl-rq/OpenUxAS OpenUxAS@noreply.github.com Cc: krivacic krivacic@parc.com, Author author@noreply.github.com Subject: Re: [afrl-rq/OpenUxAS] Detailed Task Documentation (#2)

In terms of task options, a good place to look is the documentation for the CMASI message set that forms the core of UxAS. Depending on how you built UxAS, you may already have this documentation in OpenUxAS/doc/LMCP/index.html. If not, you can generate it using LmcpGen. Depending on how you built UxAS, you might already have LmcpGen. If not, you'll need to clone the LmcpGen repository at https://github.com/afrl-rq/LmcpGen. I recommend putting LmcpGen in the same directory as OpenUxAS. Supposing you have done that, go into the LmcpGen directory and issue the following command: ant jar This will build LmcpGen. Once LmcpGen is built, issue the following command: java -Xmx2048m -jar dist/LmcpGen.jar -mdmdir "../OpenUxAS/mdms" -doc -dir "../OpenUxAS/doc" This will create a directory in OpenUxAS: OpenUxAS/doc/LMCP. In that directory is an index.html. Open it and you can see the CMASI message set, which contains the various Task messages. For instance, take PointSearchTask. It has fields for SearchLocation, StandoffDistance, and ViewAngleList, whose purposes are described in the documentation. These are the primary parameters for that task.

You can also look at examples in the OpenUxAS/examples. Most directories in examples will have a 'MessagesToSend' directory with the task messages. I recommend 05_AssignTasks and 06_AutomationDiagram in particular.

We are in the middle of restructuring the repository, but I have added a number of publications to the Wiki. Two of these focus on UxAS tasks: IntroToUxAS and SurveillanceTasks.

There is currently no way to change the weights that the planner uses. However, you can put constraints on the possible ordering of tasks using a process algebra string. See examples/05_AssignTasks/MessagesToSend/AutomationRequest_All.xml for an example of an AutomationRequest message that contains a meaningful process algebra string.

In terms of routes, we make a distinction between "en route" waypoints, which connect the end of one task to the start of another task, and "on task" waypoints, which route the vehicle during tasks. "On task" waypoints can be influenced by task parameters, though not individually manipulated, since by design they're trying to accomplish a particular task. En route waypoints are going to optimize the path between tasks, so they cannot be directly manipulated either. However, you could insert something like a PointSearch task if you wanted a vehicle to have to fly over a particular point. You could constrain when this would occur relative to other tasks using a process algebra string. However, if multiple vehicles are eligible to perform the tasks in the process algebra string, the assignment algorithm might split the PointSearch task and other tasks across vehicles. So you'd either want to specify a single eligible vehicle ID in the AutomationRequest, or specify a specific vehicle ID in the tasks you're trying to constrain.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://github.com/afrl-rq/OpenUxAS/issues/2#issuecomment-668356516, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AQOSADZSG4SNZ33MG3TKZPDR654WFANCNFSM4POXWVDA.

lhumphrey commented 4 years ago

A question on example 06, there are keepout areas created, but the craft do not obey them. Are keepouts only considered when creating a route?

I ask this because I use keepouts, but the LineSearchTask in my AutomationRequest ignores the keepouts.

Essentially yes. As it is right now, the route planner will obey keep in and keep out zones, but many of the tasks have their own route planning logic and do not necessarily obey the zones. LineSearchTask is definitely a task that ignores keep out zones.

lhumphrey commented 3 years ago

Though we plan to continually improve the documentation, we have updated the wiki (https://github.com/afrl-rq/OpenUxAS/wiki) to point to the current documentation