Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cartesian coordinates of locations #3

Open
cdondrup opened this issue Aug 15, 2018 · 16 comments
Open

Cartesian coordinates of locations #3

cdondrup opened this issue Aug 15, 2018 · 16 comments
Labels
question Further information is requested

Comments

@cdondrup
Copy link

In order to figure out if a person has to go left right or straight at a certain point along the route, I would need to be able to get the cartesian coordinates of that location. Is there a way to get those using ontologenius or could they be included in the route information?

@sarthou
Copy link
Member

sarthou commented Aug 15, 2018

Cartesian coordinates are indeed the easiest way to get accurate information to determine whether a person should go to the right or left at a certain point of the route. However, I think this type of information will be difficult to describe for large areas.
If you do not find other solutions, it is always possible to describe the coordinates in the ontology via the data properties.

@sarthou sarthou added the question Further information is requested label Aug 15, 2018
@sarthou
Copy link
Member

sarthou commented Aug 15, 2018

To create data properties, you can view here.
To get the data once they are in ontologenius, it will be here. In this part, when you query a property, it queries the properties of data and objects.

@sarthou
Copy link
Member

sarthou commented Aug 15, 2018

Here is an example of a data property definition and attribution to an individual

@cdondrup
Copy link
Author

cdondrup commented Aug 21, 2018

Follow-up question, I understand the problem of using coordinates for large areas and lots of shops so if I would like to avoid that, is there any way of finding if something is to the left, right, or straight in an openspace?

As far as I understand, corridors have a clearly defined left and right whereas openspaces do not. So looking at this for example:

os_hall

Just shows an arbitrary spatial arrangement of an ordered list of places. From what I understand from this function, you only get an ordered list of all the shops based on the isAtRightOf property but cannot tell anything about the spatial arrangement. The image above, however, would imply that the elevator_1 is opposite of door_h20 but that is just the way it's drawn and there is no way of knowing that from the current ontology, right? Therefore, I cannot produce sentences like: "Go through the door and then straight ahead towards the elevator."

@sarthou
Copy link
Member

sarthou commented Aug 21, 2018

For openspaces, on some shop, you will find an isInFrontOf or hasInFront property. It is thanks to this property that you can know if a shop is on the right, left or front.

On your picture, if you're coming from door_h20 and want to go up the stairs, the door_h20 is in front of gf_toilets so you can deduce that the stairs are on your left.

@cdondrup
Copy link
Author

Sorry to keep annoying you but I have another question about how to do things without coordinates. Given the route to burger king, how would I find out if I have to turn left or right when entering the corridor?

The route is:

robot_infodesk, os_exp_1, door_h20, os_hall, stairs_1, ff_corridor_3, ff_c34_intersection, ff_corridor_4, burger_king

What I can get from ff_c34_intersection, ff_corridor_4, burger_king is that the intersection is on the left and burger king is on the right of ff_corridor_4. However, I can't tell if burger king is more towards the end of the path or the beginning of the path compared to the intersection. Therefore, I can't tell if someone has to go towards the end or the beginning of the corridor to find the shop and I can't tell if the shop would be on the left or right-hand side because I don't know the direction of travel.

So three possibilities are:

1)
           C34
            |
B---------------------------------------------E
                                       |
                                       BK

2)
                                  C34
                                    |
B---------------------------------------------E
              |
              BK

3)
                        C34
                          |
B---------------------------------------------E
                          |
                         BK

So if I wanted to say something like: "Turn left at the intersection and you will find Burger King on the right-hand side" for the first example how would I be able to accomplish that meaning how can I distinguish the three possibilities? 3 might be possible if it has the isInFrontOf property but for the others, I have no clue.

@sarthou
Copy link
Member

sarthou commented Aug 22, 2018

That's right, the solution is the isInFrontOf property. If you have the latest version of the package semantic_route_description, you should have a door in front of intersection 34.

@cdondrup
Copy link
Author

But I can see that this is not the case for every corridor. So not every intersection has something in front of it. Also, if you have a layout like this:

                                   B1
                                   |
                                   |
                                   |
                                   |
B2----------------------------------------------------------------------E2
                                   |
                                   |
                                   |
                                   |
                                   |
                                   E1

you would have intersection c12 on either side of both corridors, right? Or would you split the corridors so it becomes:

                                   B1
                                   |
                                   |
                                   |
                                   E1
B2-------------------------------E2 B4-------------------------------E4
                                   B3
                                   |
                                   |
                                   |
                                   |
                                   E3

?

My concern is just that it has to be consistent across all the corridors and spaces. Otherwise, the whole reasoning over the ontology turns into guesswork.

Coming back to the example I gave earlier with burger king, in this case, I can just look up ff_c34_intersection:isInFrontOf and see if burger king is either connected to the intersection or connected to whatever is infront of the intersection and then see if it is left or right of it. But if there is nothing in front of the intersection, that logic will already fail. Obviously, I can just try and if it fails I just don't have the information and have to compensate for it but I don't want to have to try 5 different approaches with increasing amount of guesswork of getting the same information. Ideally, I would like to check

  1. if the target is at the beginning/end of the corridor
  2. if it is left or right of the interface
  3. if it is left or right of what is opposite of the interface

This might fail at multiple points, e.g. if there are gaps between any of the places, or if there is nothing opposite of the intersection. This could be prevented by introducing empty spaces that just connect things so we have a continuous chain of places along each side of a corridor and by always having something opposite of the intersection either a shop if there is one or a dummy place like the empty ones.

@sarthou
Copy link
Member

sarthou commented Aug 22, 2018

The empty spaces are a good idea. I will put them in place as soon as possible. This should solve all complex cases.

And for your first question, I think the best solution is to separate at least one of the corridors or both if it suits you.

@cdondrup
Copy link
Author

Thanks, that would be awesome!

@cdondrup
Copy link
Author

cdondrup commented Sep 5, 2018

Hi, any progress on this?

@sarthou
Copy link
Member

sarthou commented Sep 5, 2018

Hi, I'm describing ideapark using this, it'll be over by the end of the week I think

@cdondrup
Copy link
Author

cdondrup commented Sep 5, 2018

Great, thank you! Let me know when it's done. Have to start testing things.

@sarthou
Copy link
Member

sarthou commented Sep 10, 2018

Here the first version.
If you find some problems, do not hesitate to fork it and make pull-requests

@cdondrup
Copy link
Author

I just had a look at the images drawn by the rout_verbalization and can see that there are still unconnected shops, etc. Are you planning to fill those gaps with empty spaces as we discussed? Otherwise, I won't be able to reliably generate route descriptions.

@sarthou
Copy link
Member

sarthou commented Sep 12, 2018

I put empty spaces in the description. When there is no connection on the images, it's just that my drawing software is a small tool that is not smart enough to estimate the size of each element and therefore fill the holes. However, if you see places where you would need empty space, let me know, I'll put them.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants