ultrasonic following robot ,ultrasonic modules synchronization problem

Hi, I want to compliment this project: Make Your Suitcase Haul Itself Around with Robot Luggage! - YouTube

It’s a ultrasonic following robot ,the basic principle is there are two ultrasonic sensors on the robot, and the guy who is followed by the robot has one ultrasonic sensor.
The module I use is HC-SR04. http://www.micropik.com/PDF/HCSR04.pdf
It has two big eyes ,one is to receive the ultra sonic ,another one is to send ultrasonic.

As the film , robot is a receiver ,guy is a sender, when the guy send the ultrasonic ,the robot would check the distance difference between the two receivers to the sender,and decide which way to go.(11:54)
Because it only trace the signal from the sender instead of original function, they cut off the receivers’ transmit eyes to receive only ,we don’t want to receive the reflection by its own , cut off sender’s receive eye to send signal only.(5:03)

The tricky part is receiver still need to send 10us pulse to trig pin to trigger the echo pin high and send 8-cycle 40kHZ ultrasonic from the transmit eye, the echo pin would be high until receive ultrasonic ,this low high -high low interval is the distance we want, but the receiver cut off the transmit eye , so it only trigger the echo pin high.
The big problem is the receiver and the sender need to be synchronized, they need to send 10us to trig pin individually at the same time to avoid wrong distance measurement,so Ben use xbee(15:42) to make Wireless transmission,when receiver send 10 pulse to trig pin, it immediately send the signal through xbee to tell the sender send 10us pulse to sender’s trig pin,too.
I only have blue tooth hc-05&hc-06 right now so I try to do wireless transmission by blue tooth,if it is work, I will try to use xbee instead of .

But the truth is wireless transmission by blue tooth is so slow , it takes almost 100ms to send data to sender, when sender catch the command from xbee then sends signal to receiver ,the receiver’s echo pin already been high a long time, it always shows large value like dozen of meters even I put them together,and it is not take a certain time to send data by wireless trasmission, sometimes 100ms,sometimes 50ms.I wonder if the xbee has the same problem?
How did Ben compliment the synchronization,or I totally misunderstood the whole process?

I use Serial monitor sending a character to receiver to active the process:

receiver:

#include <Ultrasonic.h>
#define ECHO_PIN     13
#define TRIGGER_PIN  12
float cmMsec=0;
long microsec=0;
Ultrasonic ultrasonic(TRIGGER_PIN, ECHO_PIN);
void setup(){
  Serial.begin(9600);
  Serial3.begin(9600);  
}
void loop() { 

  if(Serial.available()){
    c=Serial.read();
     Serial3.write(c);
    digitalWrite(TRIGGER_PIN, LOW);
    delayMicroseconds(2);
    digitalWrite(TRIGGER_PIN, HIGH);
    delayMicroseconds(10);
    digitalWrite(TRIGGER_PIN, LOW);
    microsec=pulseIn(ECHO_PIN, HIGH);
  } 

  cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM)*2;
 
  Serial.print("MS: ");
  Serial.print(microsec);
  Serial.print(", CM: ");
  Serial.println(cmMsec);
 
}

sender:

#include <Ultrasonic.h>
#include <SoftwareSerial.h>// UNO BOARD
#define TRIGGER_PIN  12
#define ECHO_PIN     13
float cmMsec;
SoftwareSerial BTSerial(2, 3); // RX | TX
Ultrasonic ultrasonic(TRIGGER_PIN, ECHO_PIN);
long microsec=0;
char c = ' ';

void setup(){
  Serial.begin(9600);
  BTSerial.begin(9600); 
}

void loop(){
  
  if(BTSerial.available()){
    microsec = ultrasonic.timing();
    c=BTSerial.read();
    Serial.write(c);
    cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM); 
    Serial.print("MS: ");
    Serial.print(microsec);
    Serial.print(", CM: ");
    Serial.println(cmMsec);
    
  }

schematic:
Imgur

The tricky part is receiver still need to send 10us pulse to trig pin to trigger the echo pin high

Turning the trigger pin on and off does NOTHING to the echo pin. In a normal sensor, where the same device sends the pulse and reads the echo, the time is measured from when the echo pin is turned on. That something generated a signal (the trigger pin sending a wave) is immaterial.

this low high -high low interval is the distance we want,

No, it is the time that is interesting. That the time is then used to compute the distance is immaterial. The time between the pin going LOW and going HIGH, or the time between the pin going LOW and going HIGH, is what is important.

The big problem is the receiver and the sender need to be synchronized

Yep. The receiver has to know when to start measuring time.

But the truth is wireless transmission by blue tooth is so slow

That would be why Ben didn't use it, even though it is much cheaper.

I wonder if the xbee has the same problem?

Time to spend the big bucks and find out.

For the direction (angle) determination the time difference between both US sensors should be sufficient.

The time reference signal can be sent by RF (simple RF module), or e,g. by IR. It should be sufficient to know the fixed delay between transmission and reception of that signal, to find out the distance to the sender by the US sensors.

It should be sufficient to know the fixed delay between transmission and reception of that signal

The delay is fixed only if the distance is constant (not necessarily true for a follower) AND the transmission and reception time is constant (not necessarily true for XBees or bluetooth, both of which do error detection and retries).

That's why I recommend simple transmission, without network protocols and the like. Both IR and RF signals travel at the speed of light, so that the distance becomes unimportant.

Delays can occur in the receivers, which (like US and IR) have to detect a certain pattern, before they accept it as a signal. Send a signal and watch the receiver output, to determine this fixed delay.

But how to make the echo turn on? I don't do anything about echo, If as you say,it should be some one turn on the echo pin to high and wait some sonic arrive.
Or it does not work like that, it just receive a sonic wave and output a time interval?
it doesn't trigger the echo pin high ,but I still need to send 10us pulse to trig ,otherwise echo would not response anything,right?

But how to make the echo turn on?

The echo pin is an INPUT. It will turn on when the device receives an echo.

The trigger pulse starts the whole process. The HC-SR04 sends an ultrasonic pulse, waits a few microseconds, and turns on the echo output. When it receives an echo of the ultrasonic pulse (or times out) it waits the same number of microseconds and turns the echo output off. The length of the echo output is the same as the time between the ultrasonic send and the ultrasonic receive.

You need to pulse the trigger pin on all three units "at the same time", at least within a few microseconds. To get that level of timing you will need to use an RF or light (probably IR) signal. I would try putting an IR LED in place of the ultrasonic sender on one of the receivers. A basic 40 kHz IR receiver could then be used to trigger the sending unit since the ultrasonic sender also uses 40 kHz. When you trigger the receiver(s) the ultrasonic pulse would go out as an IR pulse which the IR receiver would detect and turn into a trigger pulse for the sender. The sender would send out its ultrasonic pulse. The receivers would receive that and stop their echo pulse.