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

[QTCBS] Parallel motion gives 0s relations #234

Open
gatsoulis opened this issue Feb 11, 2016 · 9 comments
Open

[QTCBS] Parallel motion gives 0s relations #234

gatsoulis opened this issue Feb 11, 2016 · 9 comments
Assignees

Comments

@gatsoulis
Copy link
Contributor

@cdondrup

As title says in vertical and horizontal parallel movements of two objects the relations are always [0, 0], which does not seem right.

@cdondrup
Copy link
Member

Since this only models attract and repell, parallel movement will produce 0 states in qtcbs where as in qtccs it won't. But maybe I misunderstood the question. Do you have an example drawing?

@PDuckworth
Copy link
Member

Hi @cdondrup, Please can you tell us where QTCBS is defined? Or what exactly is the simplification? Possibly you could add it to the QSRLib docs or the QSRLib journal paper?

In your paper: "A Probabilistic Model of Human-Robot Spatial Interaction Using a Qualitative
Trajectory Calculus" you only define QTC_C.

@cdondrup
Copy link
Member

Hi, I will add docs as soon as I get some free time. I am however currently quite busy with deployment preparations. I promise I'll do it ASAP.

Regarding the definition of QTCBS

QTCB describes the relative movement between k and l in the 3-tuple {q1, q2, q3} where each element can take one of the values {+,0,-} as follows:

q1: "-" k is moving away from l
    "+" k is moving towards l
    "0" k is stable with respect to l
q2: same as q1 but with k and l swapped
q3: "-" k is slower than l
    "+" k is faster than l
    "0" k has the same speed as l

The simplification here is that I only regard {q1, q2} which means that the relative speed is not considered.

From this definition follows that if k and l move on parallel trajectories with the same speed, they will never approach each other nor move apart which will result in (0 0). This means that QTCB is not suited to represent this behaviour. Hence, you would use QTCC which would for parallel movement result in (0 0 - +) or ( 0 0 + -) depending in which direction they are moving.

@cdondrup
Copy link
Member

And the way QTCB is calculated is by calculating QTCC and omitting the last two and hence remove the side constraint.

@PDuckworth
Copy link
Member

q1: "-" k is moving away from l
Is the distance between k and l calculated each at the same timepoint?

I know from here (bottom page 104 Eq (1)) it uses some time before and after t to determine if a point is moving towards or away. This is for continuous time however.

Is your QTCBS implementation the QTC-B11 from table 1 on page 5189 here??

@cdondrup
Copy link
Member

Yes, there is two different ways to calculate these.

  1. Calculate state for t_1 looking at t_0, t_1, and t_2
  2. Calculate state for t_1 looking at t_0 and t_1

The current implementation does the latter. However, for parallel movement, there should be no difference in outcome using either.

@PDuckworth
Copy link
Member

There are many ways to calculate this.
I think you take the distance between points u and v at time t_0. Lets call this d(u|t_0, v|t_0). And compare this to the distance between u and v at time t_1, which is d(u|t_1, v|t_1)?

My point above is that in here they compare the position of u at time t_0 with the position of v at time t_1 (or continuous time version, technically t^- which is some time after t_0).
i.e. d(u|t_0, v|t_1) compared with d(u|t_1, v|t_1).

@cdondrup
Copy link
Member

Yes, of course. Sorry for the confusion. The implementation currently compares d(k_t0,l_t0) to d(k_t1,l_t0) and vice versa for l:

q1:
- : d(k_t0,l_t0) > d(k_t1,l_t0)
+ : d(k_t0,l_t0) < d(k_t1,l_t0)
0 : d(k_t0,l_t0) = d(k_t1,l_t0)

q2:
- : d(k_t0,l_t0) > d(k_t0,l_t1)
+ : d(k_t0,l_t0) < d(k_t0,l_t1)
0 : d(k_t0,l_t0) = d(k_t0,l_t1)

So you compare the movement of point k from t0 to t1 with the position of point l at t0 which gives you the relative movement of k and then the same for l.

This means that if they follow each other you will have (+-) but if they move in parallel with the same speed you will have (00) because their distance doesn't change.

@cdondrup
Copy link
Member

Just as an example:


<---k    <---l

(+-)
<---l
<---k

(00)
      <---l
<---k

(+-)
    l--->
<---k

(--)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants