## 4 Evaluation  
### Experimental Setup  
For evaluating the proposed system, a prototype in the scale of 1:24 was built. The transmitting car is represented by a printed cardboard vehicle with LEDs used as taillights. From the rear, this cardboard model needs to look like a real car to be detected by the MobileNets framework [22]. The LEDs representing the taillights of the car model are modulated using an Arduino UNO development board. The LEDs are connected to two of the GPIO (General-Purpose Input Output) ports of the Arduino UNO. The program running on it, takes a message, converts it into a bit stream and sets the states of the GPIO ports according to the modulation method and the defined settings. The system is designed to transmit a code word with a fixed length in an endless loop. The basic settings for the transmission are:  
* Bit rate: The bit rate defines how many bits are transmitted per second and per modulated light source. For the used modulation method, the bit rate must be equal to the frame rate of the camera used for receiving the signal. In the experiment, a camera with 30 FPS was used, therefore 30 bits per second per modulated LED could be transmitted. * Periods per bit: This value defines how many periods of the modulation signal are used to send one bit. This value must be an integer number and actually defines the modulation frequency. In the experiment, a modulation frequency of 120 Hz was used, which means, this value was set to 4 periods per bit to send 30 bits per second and per modulated LED. * Modulation mode: With this settings flag, it can be selected how phase shifts are applied if a logic 1 needs to be transmitted to encode the message. With the standard mode, the signal is inverted by toggling the phase between 0\({}^{\circ}\) and 180\({}^{\circ}\), or 0 and \(\pi\), respectively. In the \(\pi/2\) mode the phase is shifted between 90\({}^{\circ}\) and 270\({}^{\circ}\), or \(\pi/2\) and 3 \(\times\pi/2\), respectively. This mode allows inversion of the signal with smaller changes of the average brightness of the light source, and hence, the modulation cannot be perceived by a human observer. Figure 13 shows how the application of a phase shift to transmit a logic 1 looks in a close-up image of the modulated light source for both modulation modes. This system is very sensitive to timing offsets because there is no strict synchronization between transmitter and receiver. Even if the timing of the modulation is calculated exactly, inconsistencies during runtime cause variances in the range of microseconds, which might lead to bit errors in the communication. Hence, the implementation must not use static delays for the timing, but also needs to take the time needed for executing code into consideration. For those timing mechanisms in the program, additional settings can be adjusted in form of microsecond offsets added or subtracted to the dynamic delays for perfect synchronization. These settings might be adjusted in various cases, e.g., if a different camera is used for receiving. Additionally, effects caused by blooming or slightly longer exposure time on the receiving side must be improved by modulation method by adjusting the pulse width ratio of the modulation signal. These special adjustments available are the following:  
* Delay offset for one bit: The offset in microseconds for the dynamic delay for one bit in the modulation signal. * Delay offset for one period: The offset in microseconds for the dynamic delay for one period of a bit of the modulation signal. * Delay offset for a state: The offset in microseconds for the dynamic delay for a single state within a period of the modulation signal. * Pulse width difference: With this value for a time in microseconds, the pulse with ratio of the modulation signal can be adjusted very precisely. For example, if this value is set to 150 us, ON states get 150 shorter and OFF states are extended by 150 us. The Arduino UNO is connected to a PC via USB for power supply and to communicate over the serial interface.