strands-project/strands_qsr_lib

[QTCBS] Parallel motion gives 0s relations

Opened this issue · 9 comments

@cdondrup

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

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?

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.

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.

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

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??

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.

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).

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.

Just as an example:


<---k    <---l

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

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

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

(--)